Choď na obsah Choď na menu
 

PIC 16F628 popis

http://web.telecom.cz/doveda/procesory/pic16f62x/index.html

 

Úvod

   Mikroprocesor PIC16F628 patří do rodiny PIC16CXX. Jsou to univerzální 8-mi bitové jednočipové mikrokontrolery. Všechny tyto řadiče jsou vyrobeny technologií CMOS a jsou založeny na rozšířené architektuře RISC (Reduced Instruction Set). Mají oddělenou programovou a datovou paměť (Harvardská architektura). Vnitřní systém redukuje nutnost připojení externích obvodů na minimum, čímž zlevňuje konečné aplikace.

Obsah

PIC16F627 PIC16F628

Typ Pamět A/D
převodník
kanálů
I/O
Ports
Max.
frekvence
[MHz]
počet
časo-
vačů
počet
instrukcí
počet
vývodů
ROM
Words
RAM
Bytes
EEPROM
Bytes
PIC16F627 1024x14 224 128 - 15 4 (20) 3 35 18
PIC16F628 2048x14 224 128 - 15 4 (20) 3 35 18

 


 

Popis procesoru

  • Sada 35 instrukcí
  • Všechny instrukce používají jeden cyklus programu, při odskoku a návratu dva cykly
  • Provozní frekvence: hodiny 20Mhz - 200ns jeden instrukční cyklus
  • Interupt capability
  • 16 speciálních funkcí hardwarových registrů
  • 8-úrovňový hardwarový zásobník
  • Přímý, nepřímý a poměrný adresový režim

Popis periférií

  • 15 nastavitelných vývodů - vstup / výstup
  • Velké zatížení do / z pro ovládání LED
  • Analogový komparátor s
  • - dva analogový komparátory
    - programovatelné referenční napětí (Vref)
    - multiplexovaný vstup a vnitřní referenční napětí
    - výstup komparátoru pro externí požití

  • Časovač0: 8-bitový časovač / čítač s 8-bitovou předděličkou
  • Časovač1: 16-bitový časovač / čítač s externí krystalem
  • Časovač2: 8-bitový časovač / čítač s 8-bitovým registrem, předděličkou a děličkou
  • Zachytávač, comparátor, PWM (CCP) modul
    - zachytávač je 16-bit, max. rozlišení je 12,ns
    - porovnání je 16-bit, max rozlišení je 200ns
    - PWM max. rozlišení je 10-bit
  • Univerzální synchroní/asynchroní příjmač/vysílač USART/SCI
  • 16bytů společné RAM

Speciální funkce procesoru

  • Po zapnutí RESET (POR)
  • Časovač zapnutí (PWRT)
  • Časovač zapnutí oscilátoru (OST)
  • Brown-out Detect (BOD)
  • Watchdog (WDT)
  • Multiplexován vstup MCLR
  • Programovatelné nastavení pull-up odpory na PORTB
  • Programovatelná ochrana kódu
  • Programování nízkým napětím
  • Spící mód
  • Výběr typu oscilátoru
  • Sériové programování v zapojení (ICSP) pomocí dvou vývodů

Technologie CMOS

  • Nízký odběr, vysoká rychlost CMOS FLASH technologie
  • Úplně statický design
  • Rozsah pracovního napětí:
    - PIC16F62x 3,0V - 5,5V
    - PIC16LF62x 2,0V - 5,5V
  • Komerční, průmyslový a zvláštní teplotní rozsah
  • Nízký odběr:
    - < 2mA při 5V, 4MHz
    - 15uA při 3V, 32kHz
    - < 1uA stand-by při 3V

 


 

Popis vývodů

PIC16F628_dip PIC16F628_sop
vývod pin typ I/O/P provedení popis
 
RA0/AN0
RA1/AN1
RA2/AN2/Vref
RA3/AN3/CMP1
RA4/TOCKI/CMP2
RA5/MCLR/THV
RA6/OSC2/_CLKOUT
RA7/OSC1/CLKIN
 
17
18
1
2
3
4
15
16
 
I/O
I/O
I/O
I/O
I/O
I
I/O
I/O
 
ST
ST
ST
ST
ST
ST
ST
ST
PORTA je obousměrný vstupně/výstupní port
 
 
 
 
 
Může být jako zdroj CLK signálu pro TMR1.
Jako výstupní má otevřený kolektor !!! 
 
MCLR/Vpp 4 I/P ST RESET/vstup programovacího napětí. Tento vývod je aktivní v nule, kdy provádí RESET obvodu.
Vss 5 P - zem



RB0/INT
RB1/RX/DT
RB2/TX/CK
RB3/CCP1
RB4/PGM
RB5
RB6/T1OSO/T1CKI
RB7/T1OSI



6
7
8
9
10
11
12
13



I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O



TTL/ST
TTL
TTL
TTL
TTL
TTL
TTL/ST
TTL/ST
PORTB je obousměrný vstupně/výstupní port. PORTB může mít programově připojen slabý vnitřní pull-up odpor na všech vstupech.
může být vybrán jako zdroj vnějšího přerušení



přerušení při změně vstupu
přerušení při změně vstupu
přerušení při změně vstupu/CLK při programování
přerušení při změně vstupu/DATA při programování
Vdd 14 P - napájení +5V

I = Input (vstup)      O = Output (výstup)      I/O = Input/Output (vstup/výstup)     P = Power
- = nevyužito         TTL = TTL input               ST = Schmitt Trigger input (na vstupu Schmittův obvod)

 


 

Architektura

   Vysoký výkon mikrokontroléru je způsoben znaky architektury společné s mikroprocesory RISC. U mikrokontrolrů PIC16CXX jsou data a program v oddělených částech paměti, a tedy mohou mít různou velikost. Data jsou šířky 8 bitů a kód programu 14 bitů. Tato šířka instrukčního slova umožňuje mít všechny instrukce jednoslovné a proveditelné během jednoho instrukčního cyklu. To neplatí pro instrukce provádějící větvení programu (vyžadují 2 instrukční cykly).
   ALU umožňuje sčítat, odčítat, posouvat obsah registru a logické operace. Aritmetické operace mají dva operandy, z nichž jeden je vždy v pracovním registru (W-registr) a druhý operand je registr v paměti nebo konstanta. U jednoduchých instrukcí je operandem vlastní pracovní registr (W-registr), nebo registr v paměti. Pracovní registr (W) je 8-bitový a je určen pro práci ALU. Nejde o programem adresovatelný registr.

V závislosti na vykonávání instrukcí ALU jsou ovlivňovány hodnoty příznaků v registru STATUS:

  • C (CARRY - přenos)
  • DC (Digit Carry - přenos mezi čísly, 4 bity v bytu je 1 číslo)
  • Z (ZERO - příznak nulového výsledku)

Příznaky C a DC jsou nastaveny podle výsledků aritmetických operací.

 

 

blokové schéma

 

 


 

Uspořádání paměti

 

uspořádání paměti

Paměť programu

Procesor PIC16F62X má 13-bitový programový čítač (PC), který adresuje programovou paměť o velikosti 8K x 14. Jenom první 1K x 14 (0000h - 03FFh) pro PIC16F627 a 2K x 14 bitů (0000h-07FFh) pro PIC16F628 je fyzicky implementováno. Pokus o přístup nad 3FFh způsobí návrat na první adresu prostoru (na adresu 0000h). Po resetu procesor začína na adrese 0000h. Vektor přerušení je na adrese 0004h. Díky prodloužení instrukčního slova, obsáhnou instrukce GOTO a CALL stránky programové paměti o velikosti plných 2K. Odpadne tím stránkování paměti procesoru, které se používá u PIC16C56-8.

Paměť dat

Paměť dat je rozdělena do čtyř bank (prostorů) o velikosti 128Bajtů, které obsahují základní funkční registry (00h - 1Fh v bance) a registry volné pro uživatele 20h - 7Fh, A0h-FFh, 12h-14Fh, 170h-17Fh a 1F0-1Fh ve statické RAM. Adresy F0h-Fh, 170h-17Fh a 1F0h-1FFh jsou ve společné paměti RAM namapovany na adrese 70h-7Fh. Některé z těchto systémových registrů jsou dostupné ve všech čtyřech bankách některé pouze v bance 0 nebo 1.

Zásobník návratových adres

Procesor má 8-mi úrovnový zásobník s šířkou 13 bitů. Zásobník není součástí programové ani datové paměti a není možné provádět jeho čtení nebo zápis. Při instrukci volání podporgramu CALL je do zásobníku uložena celá 13 bitová hodnota programového čítače (PC). Obsah zásobníku je vybrán při vykonání instrukce RETURN, RETLW nebo RETFIE.

 


 

Porty

   Mikrokontrolér PIC16F627 a PIC16F628 má 2 porty, port A a port B. Celkem nabízí 15 vstupních nebo výstupních vývodů. Funkce vývodů u těchto portů mohou být měněny v závislosti na požadavku programu.

Port A

   Port A je 5-bitový. Vývod RA4 má na vstupu Schmittův obvod a jako výstup má otevřený kolektor. Všechny ostatní vývody portu A mají jako vstupní úrovně TTL a jako výstup budiče CMOS. Všechny I/O výstupy mají řídící bit pro směr toku dat (v TRISA registru), kterým může být každý z vývodů nastaven jako vstup nebo výstup nezávisle na ostatních. Nastavením příslušného bitu na "1" v registru TRISA se nastaví příslušný vývod jako vstupní, nastavením příslušného bitu na "0" se nastaví příslušný vývod jako výstupní.
   Vývod portu RA<4> je možné přepnout jako vstup pro hodinový signál TMR0.
   Čteni portu A probíhá tak, že je čten stav vývodů portu A. Zápis na port A zapisuje do výstupního bufferu.

Port B

   Port B je 8-bitový. Odpovídající směry toku dat jednotlivých vývodů se nastavují v registru TRISB. Při čtení portu B je čten stav vývodů v registru TRISB, při zápisu je hodnota zapsána do řídícho bufferu portu B.
   Každý z vývodů portu B může mít programově připojen slabý vnitřní pull-up odpor (cca 100 uA) na všech vývodech konfigurovaných jako vstupní. Toto je automaticky vypnuto u těch vývodů, které jsou nastaveny jako výstupní.
   Čtyři vývody portu B (RB4 - RB7) mají při příslušném nastavení schopnost vyvolat přerušení při změně stavu. Avšak tato schopnost je dána pouze vývodům nastaveným jako vstupní.

 


 

Čítač/časovač TMR0

 

Modul TMR0 má následující vlastnosti:

  • 8bitový registr čítače/časovače
  • je povoleno čtení obsahu i zápis do registru
  • 8bitový programovatelný předdělič
  • volba vnitřní/vnější zdroj hodinového signálu
  • přerušení při přetečení (FFh -> 00h)
  • výběr hrany při externím vstupním hodinovém signálu

   V režimu Časovač (TIMER) je obsah registru TMR0 zvětšován při každém instrukčním cyklu (fosc/4). Toto platí nebude-li použit předdělič. Je-li do registru TMR0 zapsána hodnota, je zvýšení jeho obsahu povoleno až po dvou následujících instrukčních cyklech.
   V režimu Čítač (Counter) bude obsah registru TMR0 zvyšován s každou vzestupnou případně sestupnou hranou na vývodu RA4/T0CKI.
   Předdělič je volitelně možné přiřadit buď k funkčnímu modulu TMR0 nebo WDT. Obsah předděliče není možné číst ani do něj zapisovat a tak jej měnit. Je-li předdělič přiřazen k funkčnímu modulu TMR0 je možné programově zvolit tyto dělící poměry 1:2, 1:4, ..., 1:256.

TMR0 - přerušení

   Přerušení je čítačem TMR0 generováno tehdy, přetéká-li obsah registru čítače/časovače z hodnoty FFh -> 00h. Při tomto přerušení je nastaven příznakový bit T0IF. Toto přerušení může být zakázáno nastavením řídícího bitu T0IE na "0". Po vyvolání přerušení musí být příznakový bit TOIF vynulován programem dříve, než je přerušení opět povoleno. Přerušení od TMR0 není schopno oživit obvod, pokud se nachází ve stavu SLEEP.

 


 

Organizace registrů v procesoru PIC16F627 a PIC16F628

adresa banka 0 adresa banka 1 adresa banka 2 adresa banka 3
00h INDF * 80h INDF * 100h INDF * 180h INDF *
01h TMR0 81h OPTION 101h TMR0 181h OPTION
02h PCL 82h PCL 102h PCL 182h PCL
03h STATUS 83h STATUS 103h STATUS 183h STATUS
04h FSR 84h FSR 104h FSR 184h FSR
05h PORTA 85h TRISA 105h   185h  
06h PORTB 86h TRISB 106h PORTB 186h TRSIB
07h   87h   107h   187h  
08h   88h   108h   188h  
09h   89h   109h   189h  
0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah PCLATH
0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh INTCON
0Ch PIR1 8Ch PIE1 10Ch   18Ch  
0Dh   8Dh   10Dh   18Dh  
0Eh TMR1L 8Eh PCON 10Eh   18Eh  
0Fh TMR1H 8Fh   10Fh   18Fh  
10h T1CON 90h   110h   190h  
11h TMR2 91h   111h 191h
12h T2CON 92h PR2 112h 192h
13h   93h   113h 193h
14h   94h   114h 194h
15h CCPR1L 95h   115h 195h
16h CCPR1H 96h   116h 196h
17h CCP1CON 97h   117h 197h
18h RCSTA 98h TXSTA 118h 198h
19h TXREG 99h SPBRG 119h 199h
1Ah RCREG 9Ah EEDATA 11Ah 19Ah
1Bh   9Bh EEADR 11Bh 19Bh
1Ch   9Ch EECON1 11Ch 19Ch
1Dh   9Dh EECON2* 11Dh 19Dh
1Eh   9Eh   11Eh 19Eh
1Fh CMCON 9Fh VRCON 11Fh 19Fh
20h








7Fh
pamět
(SRAM)
96 bajtů
A0h





EFh
80 bajtů 120h





16Fh
48 bajtů 1A0h





1EFh
 
F0h

FFh
paralelně
70h - 7Fh
170h

17Fh
paralelně
70h - 7Fh
1F0h

1FFh
paralelně
70h - 7Fh

* Není fyzický registr

BANKA 0
Adresa registr bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
00h INDF (není fyzický registr)
01h TMR0 8-bitový časovač
02h PCL  
03h STATUS IRP RP1 RP0 /TO /PD Z DC C
04h FSR  
05h PORTA RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0
06h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
07h -- neimplementováno
08h -- neimplementováno
09h -- neimplementováno
0Ah PCLATH -- -- --  
0Bh INTCON GIE EEIE T0IE INTE RBIE T0IF INTF RBIF
0Ch PIR1 EEIF CMIF RCIF TXIF -- CCP1IF TMR2IF TMR1IF
0Dh --  
0Eh TMR1L Holding register for the least signitifant byte of the 16-bit TMR1
0Fh TMR1H Holding register for the most signitifant byte of the 16-bit TMR1
10h T1CON -- -- T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON
11h TMR2 TMR2 modul register
12h T2CON -- TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0
13h --  
14h --  
15h CCPR1L Capture / Compare / PWM register (LSB)
16h CCPR1H Capture / Compare / PWM register (MSB)
19h TXREG USART registr vysílacích dat
1Ah RCREG USART registr přijímací dat
1Bh --  
1Ch --  
1Dh --  
1Eh --  
1Fh CMCON C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0
BANKA 1
Adresa registr bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
80h INDF (není fyzický registr)
81h OPTION /RBPU INTEDG T0CS TS0E PSA PS2 PS1 PS0
82h PCL  
83h STATUS IRP RP1 RP0 /TO /PD Z DC C
84h FSR  
85h TRISA TRISA7 TRISA6 -- TRISA4 TRISA3 TRISA2 TRISA1 TRISA0
86h TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0
87h -- neimplementováno
88h -- neimplementováno
89h -- neimplementováno
8Ah PCLATH -- -- --  
8Bh INTCON GIE EEIE T0IE INTE RBIE T0IF INTF RBIF
8Ch PIE1 EEIE CMIE RCIE TXIE -- CCP1IE TMR2IE TMR1IE
8Dh --  
8Eh PCON -- -- -- -- OSCF -- /POR /BOD
8Fh --  
90h --  
91h --  
92h PR2 Timer2 Period Register
93h --  
94h --  
95h --  
96h --  
97h --  
98h TXSTA CSRC TX9 TXEN SYNC -- BRGH TRMT TX9D
99h SPBRG Baut Rate Generator Register
9Ah EEDATA EEPROM data register
9Bh EEADR -- EEPROM adres register
9Ch EECON1 -- -- -- -- WRERR WREN WR RD
9Dh EECON2 EEPROM control register2 (není fyzický registr)
9Eh -- neimplementováno
9Fh VRCON VREN VROE VRR -- VR3 VR2 VR1 VR0

 


 

Podrobnější popis procesoru najdete u výrobce Microchip.