Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Mikrokontrolery PIC
2
Wykład /51 Rodzina PIC MID Range
3
PIC - MidRange - Architektura 3/51
PIC16C84 charakteryzuje się następującymi cechami: architektura Harvard RISC; 8-bitowe ALU; 1024x14 EEPROM programu; 15 rejestrów specjalnych; 36B SRAM+64B EEPROM (żywotność 106 cykli) danych; 35 rozkazów o kodzie 14-bitowym, wykonywane w 1 cyklu (wyjątek: rozkazy skoku i wywołania); 8-poziomowy stos sprzętowy;
4
PIC - MidRange - Architektura 4/51
Cechy c.d.: proste (bezpośredni, pośredni i względny) tryby adresowania danych i rozkazów; 4 źródła przerwań; 13 linii we/wy o obciążalności 20/25mA; 8-bitowy timer/licznik z 8-bitowym programowalnym preskalerem; interfejs SPI do programowania w trybie ISP; wbudowany układ resetu od zasilania, z timerem resetu; watchdog z wbudowanym własnym oscylatorem RC;
5
PIC - MidRange - Architektura 5/51
Cechy c.d.: tryb oszczędzania energii SLEEP; częstotliwość taktowania 0-10MHz (czas cyklu: 400ns - ); wbudowany oscylator RC z programowalną kalibracją; możliwość wyboru rodzaju generatora taktu (wewn/zewn, RC/kwarc/prostokąt); bity ochronne programu; szeroki zakres napięć pracy: 2,0 - 6,0 V.
6
PIC - MidRange - Architektura 6/51
Struktura blokowa układu PIC16C84
7
PIC - MidRange - Architektura 7/51 Organizacja pamięci programu
PC - 13-bitowy, jego młodszy bajt jest widoczny jako PCL Przestrzeń adresowa pamięci programu Mid Range: FFFh (8k×14b słów). Przy pamięci programu o pojemności P<8kW, PC adresuje ją modulo P. Podzielona na 4 strony po 2kW.
8
PIC - MidRange - Architektura 8/51 Organizacja pamięci programu - c.d.
PC strona 1 strona 2 strona 3 strona 0 1FFFh adres restartu 0000h 03FFh 0400h 13 adres obsł. przerwań 0004h 07FFh 0800h 0FFFh 1000h 17FFh 1800h dostępna w Mid-range przestrzeń dostępna w 16C84 przestrzeń
9
PIC - MidRange - Architektura 9/51 Organizacja pamięci programu - c.d.
Komórki o adresach 2000h..200Fh to tzw. pamięć konfiguracyjna: 2000h, 2001h, 2002h i 2003h są przeznaczone na numer identyfikacyjny układu (bity 3..0). 2007h - rejestr konfiguracyjny CONFIG 2000h 2001h 2002h 2003h 2007h ID CONFIG
10
Organizacja pamięci programu - c.d.
PIC - MidRange - Architektura /51 Organizacja pamięci programu - c.d. Rejestr konfiguracyjny CONFIG: CP - bit ochronny kodu programu: gdy =1 - ochrona wył., =0 - ochrona włącz. PWRTE - bit włączający power-up timer: gdy =1 - włącz., =0 - wył. WDTE - bit włączający watch-dog: gdy =1 watch-dog włączony, =0 - wyłączony FOSC1, FOSC0 - bity wybierające źródło sygnału taktującego: 00 - LP zewn. oscylator kwarcowy o f=32-400kHz; 01 - XT zewn. oscylator kwarcowy o f=0,4-4MHz; 10 - HS wewn. oscylator RC ok. 4MHz albo zewn. oscylator kwarcowy 4-10MHz; 11 - RC zewn. oscylator RC o f do 4MHz
11
PIC - MidRange - Architektura 11/38
Modyfikacja i odtwarzanie PC 1. Przez rozkaz zapisujący rejestr PCL 1B wartością PC: PCL bajt z ALU PCLATCH: Dowolny rozkaz arytmetyczno-logiczny lub przesłania, dla którego wskazano PCL jako rejestr docelowy
12
PIC - MidRange - Architektura 12/38
Modyfikacja i odtwarzanie PC 2. Przez rozkaz wywołania procedury CALL szczyt stosu sprzętowy stos 8 x 13b szczyt stosu adres powrotu PC: PCL 11b z kodu rozkazu CALL PCLATCH:
13
PIC - MidRange - Architektura 13/38
Modyfikacja i odtwarzanie PC 3. Przez rozkaz skoku GOTO PC: PCL 11b z kodu rozkazu GOTO PCLATCH:
14
PIC - MidRange - Architektura 14/38
Modyfikacja i odtwarzanie PC 4. Przez rozkazy powrotu z procedury RETURN, RETLW, RETFIE PC: PCLATCH: PCL szczyt stosu sprzętowy stos 8 x 13b
15
PIC - MidRange - stos /51 Stos: sprzętowy; 8-poziomowy (8 13-bitowych rejestrów); wskaźnik stosu nie jest dostępny; działa jak rejestr cyrkulacyjny ty zapis na stos spowoduje zamazanie pierwszego wpisu; szczyt stosu sprzętowy stos 8 x 13b
16
PIC - MidRange - Architektura 16/51
Organizacja pamięci danych FSR: STATUS: kod rozkazu: IRP RP1,RP0 bank #0 bank #1 00h 30h 7Fh 80h 0B0h 0FFh 100h 17Fh 180h 1FFh bank #2 bank #3 obszar niedostępny w 16C84
17
PIC - MidRange - Architektura 17/51
Organizacja pamięci danych - blok rejestrów np. 16C84
18
PIC - MidRange - blok rejestrów specjalnych 18/51
szare pola - bity nie używane; - - niezaimplementowany przy odczycie 0
19
PIC - MidRange - blok rejestrów specjalnych 19/51
szare pola - bity nie używane; - - niezaimplementowany przy odczycie 0
20
PIC - MidRange - blok rejestrów specjalnych 20/51
IRP RP1 RP0 /TO /PD Z DC C STATUS: C - flaga przeniesienia/pożyczki DC - flaga przeniesienia połówkowego Z - flaga sygnalizująca zerowy wynik operacji /PD - flaga sygnalizująca przejście w stan uśpienia: 0 - po rozkazie SLEEP 1 - po resecie od zasilania lub wykonaniu rozkazu CLRWDT /TO - flaga przepełnienia licznika watch-doga: 0 - po resecie od zasilania, po wykonaniu rozkazów CLRWDT lub SLEEP 1 - gdy przepełnił się licznik watch-doga RP1,RP0 - bity wyboru aktywnego banku rejestrów przy adresowaniu bezpośr.: 00 - bank #0 (00..7Fh), bank #1 (80h..0FFh), bank #2 (100h..17Fh), 11 - bank #3 (180h..1FFh) IRP - bit wyboru banku rejestrów przy adresowaniu pośrednim: 0 - bank #0 i #1 (00..0FFh); 1 - bank #2 i #3 (100h..1FFh). IRP i RP1 są nieużywane w PIC16C84
21
PIC - MidRange - blok rejestrów specjalnych 21/51
22
PIC - MidRange - tryby adresowania 22/51
Tryb adresowania operandów - bitów bezpośredni kod rozkazu blok rejestrów bcf 10,3 bit f Tryby adresowania operandów - bajtów natychmiastowy kod rozkazu operand andlw 130
23
PIC - MidRange - tryby adresowania 23/51
Tryby adresowania operandów - bajtów - cd. rejestrowy /bezpośredni operand kod rozkazu f Rf: addwf 10 RP1 RP0 7b 2b wybór banku 9b rejestry/SRAM
24
PIC - MidRange - tryby adresowania 24/51
Tryby adresowania operandów - bajtów - cd. rejestrowy pośredni kod rozkazu f* FSR: f*=00h,80h clrf INDF IRP 7b 2b wybór banku operand 9b rejestry/SRAM
25
PIC - MidRange /51 Generator taktu
26
Przetwarzanie rozkazów
PIC - MidRange /51 Przetwarzanie rozkazów Q1 - dekodowanie rozkazu, inkrement PC Q2 - pobranie argumentów Q3 - wykonanie rozkazu Q4 - zapamiętanie wyniku i koniec pobierania nast. rozkazu
27
Przetwarzanie rozkazów - cd.
PIC - MidRange /51 Przetwarzanie rozkazów - cd. 1. MOVLW 55h 2. MOVWF PORTB 3. CALL PROC1 4. BSF PORTA,BIT3 x. PROC1: ... pobranie 1 wykonanie 1 pobranie 2 wykonanie 2 pobranie 3 wykonanie 3 pobranie 4 odrzucenie 4 pobranie x wykonanie x
28
PIC - MidRange /51 Obwód resetu
29
Obwód resetu - działanie układu BOR (Brown Out Reset)
PIC - MidRange /51 Obwód resetu - działanie układu BOR (Brown Out Reset)
30
PIC - MidRange /51 Stan rejestrów specjalnych po resecie, zależnie od przyczyny: - - niezaimplementowany, przy odczycie 0; x - wartość nieokreślona; u - wartość niezmieniona; q - wartość zależna od przyczyny resetu;
31
PIC - MidRange /51 Stan rejestrów specjalnych po resecie, zależnie od przyczyny: - - niezaimplementowany, przy odczycie 0; u - wartość niezmieniona; x - wartość nieokreślona; q - wartość zależna od przyczyny resetu;
32
PIC - MidRange /51 Praca z obniżonym poborem prądu tryb włącza się rozkazem SLEEP; główny oscylator wyłącza się następuje wstrzymanie wykonywanie programu linie portu pozostają b.z. zerowany jest licznik WDT i jego postskaler zużycie prądu spada do ok. 1μA bity: /PD=0, /TO=1 Wyjście z trybu power down może być wywołane: zewnętrzny reset na /MCLR - restart programu od 0000 reset od WDT time-out - wznowienie programu od nast. rozkazu niezamaskowanym przerwaniem - j.w. i wejście w obsługę przerwania
33
PIC - MidRange - przerwania 33/51
System przerwań PIC16C84: 4 źródła przerwań: zewnętrzne RB0/INT od przepełnienia TMR0 od zmiany stanu wejść PORTB od końca zapisu do EEPROM wspólny wektor obsługi - od adresu 004h; maskowalny - indywidualne flagi maskowania + flaga globalna GIE; zablokowany po RESET; powrót z procedury obsługi rozkazem RETFIE, ustawiającym także GIE=1; przerwania mogą „budzić” mikrokontroler z trybu SLEEP; przerwania mają swe flagi sygnalizacyjne.
34
PIC - MidRange - przerwania 34/51
Rejestr kontrolny przerwań PIC16C84: GIE - globalna flaga zezwolenia na przerwania; EEIE - zezwolenie na przerwanie od EEPROM; T0IE - zezwolenie na przerwanie od TMR0; INTE - zezwolenie na przerwanie zewnętrzne; RBIE - zezwolenie na przerwanie od zmiany PORTB; T0IF - flaga przerwania od TMR0; INTF - flaga przerwania zewnętrznego; RBIF - flaga przerwania od PORTB; EEIF - flaga przerwania od EEPROM, umieszczona na 4 bicie EECON1.
35
PIC - MidRange - przerwania 35/51
Struktura procedury obsługi przerwania: 1. Przechowanie rejestrów W, STATUS, PCLATCH (i innych) w zarezerwowanych rejestrach banku #0. 2. Rozpoznanie przyczyny przerwania (z powodu wspólnego wektora dla 4 możliwych źródeł). 3. Obsłużenie wybranego przerwania. 4. Skasowanie jego indywidualnej flagi zgłoszenia przerwania (np. rozkazem BCF). 5. Odtworzenie stanu rejestrów (innych), PCLATCH, STATUS, W z zarezerwowanych rejestrów w banku #0. 6. Powrót z procedury obsługi przerwania rozkazem RETFIE (odblokowującym ponownie system przerwań).
36
PIC - MidRange - przerwania 36/51
Struktura procedury obsługi przerwania: Przykład przechowania stanu rejestrów na początku procedury obsługi przerwania: MOVWF temp_W MOVF STATUS,W MOVWF temp_STATUS MOVF PCLATCH,W MOVWF temp_PCLATCH Przykład odtworzenia stanu rejestrów MOVF temp_PCLATCH,W MOVWF PCLATCH MOVF temp_STATUS,W MOVWF STATUS MOVF temp_W,W
37
PIC - MidRange - peryferia 37/51
Port A port ma 5 linii: RA0..RA3 - zwykłe we/wy; RA4 - we/wy albo wejście impulsów dla TMR0; rejestr TRISA decyduje o kierunku (ustawione bity TRIS oznaczają wejście 3-stanowe); linie RA0..RA3 mają diody zabezpieczające dołączone do masy i zasilania
38
PIC - MidRange - peryferia 38/51
Port A linia RA4 ma diodę zabezpieczającą dołączoną tylko do masy
39
PIC - MidRange - peryferia 39/51
Port B port ma 8 linii: RB0 - we/wy albo wejście przerwania zewn. /INT0 RB1..RB3 - zwykłe we/wy; RB4..RB7 - zwykłe we/wy z możliwością przerwania od zmiany stany rejestr TRISB decyduje o kierunku (ustawione bity TRISB włączają opornik podciągający)
40
PIC - MidRange - peryferia 40/51
Port B linie RB6 i RB7 są wykorzystywane przy szeregowym programowaniu układu
41
PIC - MidRange - peryferia 41/51
Timer 8-bitowy licznik z preskalerem/postskalerem wspólnym z watchdogiem; zlicza cykle masz. (fOSC/4) albo zewn. impulsy wejściowe (na T0CKI); jego przepełnienie powoduje ustawienie flagi T0IF; widoczny jako rejestr TMR0; sterowanie pracą - poprzez bity rej. OPTION.
42
PIC - MidRange - peryferia 42/51
Watchdog bazuje na własnym oscylatorze RC; przepełnia się po 18ms (ale zależy to od temp. i nap.zasil.:7-33ms); by uzyskać dłuższe czasy należy użyć postskalera; przy normalnej pracy WDT Time-out powoduje RESET, a przy pracy w uśpieniu - obudzenie μC; watchdog zeruje się rozkazem CLRWDT albo SLEEP; watchdog można zablokować tylko w fazie programowania układu.
43
PIC - MidRange - peryferia 43/51
Watchdog
44
PIC - MidRange - peryferia 44/51
Wykorzystanie preskalera/postskalera przez timer i watchdog wsp. podziału preskalera: 1/2 1/4 1/8 1/16 1/32 1/64 1/128 1/516 - dla TMR0 postskalera 1/1 1/2 1/4 1/8 1/16 1/32 1/64 1/128 - dla WDT
45
PIC - MidRange - peryferia 45/51
Pamięć EEPROM dostępna poprzez rejestry EEDATA i EEADR; dodatkowo rejestry sterujące EECON1 i EECON2 (wirtualny); zapis polega na przeprogramowaniu pojedynczego bajtu; czas zapisu do 10ms/B, kontrolowany przez lokalny timer i zależny od temperatury i napięcia pracy; koniec zapisu powoduje ustawienie flagi EEIF, która może być zgłoszeniem przerwania;
46
PIC - MidRange - peryferia 46/51
Odczyt EEPROM 1. Wpisanie adresu do EEADR. 2. Ustawienie bitu RD w EECON1. 3. Odczyt zawartości rejestru EEDATA. Przykład programu: BCF STATUS,RP0 ; Bank 0 MOVLW CONFIG_ADDR ; MOVWF EEADR ; adres EEPROM do odczytu BSF STATUS,RP0 ; Bank 1 BSF EECON1,RD ; odczyt komorki EEPROM MOVF EEDATA,W ; W = EEDATA
47
PIC - MidRange - peryferia 47/51
Zapis do EEPROM 1. Wpisanie adresu do EEADR. 2. Wpisanie danej do EEDATA. 3. Zablokowanie przerwań INTCON.GIE=0. 4. Odblokowanie wpisu do EEPROM EECON.WREN=1. 5. Zapis do EECON2 kolejno: 55h i 0AAh. 6. Włączenie zapisu do EEPROM EECON1.WR=1. 7. Odblokowanie przerwań INTCON.GIE=1. Przykład programu: BSF STATUS,RP0 ; wybór banku #1 BCF INTCON,GIE ; wyłączenie przerwań BSF EECON1,WREN ; odblokowanie zapisu MOVLW 55h MOVWF EECON2 ; wpisanie 55h MOVLW AAh MOVWF EECON2 ; wpisanie AAh BSF EECON1,WR ; start zapisu BSF INTCON, GIE ; odblokowanie INTs.
48
PIC - MidRange - lista rozkazów 48/51
rozszerzenie względem BaseLine kkkkkkkk - dana 1-bajtowa fffffff - adres w banku rejestrów/pamięci wskazujący na F d - bit wskazujący lokalizację wyniku: d=0 - wynik do W, d=1 wynik do F s - adres skoku, wywołania procedury x - wartość dowolna (0/1)
49
PIC - MidRange - lista rozkazów 49/51
50
PIC - MidRange - lista rozkazów 50/51
51
PIC - MidRange - lista rozkazów 51/51
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.