Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Mikrokontrolery PIC.

Podobne prezentacje


Prezentacja na temat: "Mikrokontrolery PIC."— Zapis prezentacji:

1 Mikrokontrolery PIC

2 Architektura PIC Przestrzenie adresowe Tryby adresowania
Wykład /39 Architektura PIC Przestrzenie adresowe Tryby adresowania

3 PIC - Base Line - Architektura 3/39
PIC12C508/509 charakteryzują się następującymi cechami: architektura Harvard RISC; 8-bitowe ALU; PIC12C508: x12b EPROM OTP + 25B SRAM PIC12C509: 1024x12b EPROM OTP + 41B SRAM; 33 rozkazy o kodzie 12-bitowym, wykonywane w 1 cyklu (wyjątek: rozkazy skoku i wywołania); 7 rejestrów specjalnych; 2-poziomowy stos sprzętowy; proste (bezpośredni, pośredni i względny) tryby adresowania danych i rozkazów; 8-bitowy timer/licznik z 8-bitowym programowalnym preskalerem;

4 PIC - Base Line - Architektura 4/39
Cechy c.d.: interfejs SPI do programowania w trybie ISP; wbudowany układ resetu od zasilania, z timerem resetu; watchdog z wbudowanym własnym oscylatorem RC; tryb oszczędzania energii SLEEP, wyjście z trybu między innymi poprzez zmianę na linii we/wy; wbudowane rezystory podciągające na liniach we/wy; częstotliwość taktowania 0-4MHz (czas cyklu: 1s -  ); wbudowany oscylator RC (ok. 4MHz) z programowalną kalibracją; możliwość wyboru rodzaju generatora taktu (wewn/zewn, RC/kwarc/prostokąt); bity ochronne programu; szeroki zakres napięć pracy: 2,5 (3,0) - 5,5 V.

5 PIC - Base Line - Architektura 5/39
Struktura blokowa układu PIC12C508/509

6 PIC - Base Line - Architektura 6/39
Organizacja pamięci programu PC - 12-bitowy, jego młodszy bajt jest widoczny jako PCL Przestrzeń adresowa pamięci programu w Base-Line: 000..0FFFh (4k×12b słów); dzielona na strony po 512 słów; numer aktywnej strony pamięci określają bity PA1 i PA0 w słowie stanu STATUS (C508/509 nie mają bitu PA1); przy pamięci programu o pojemności P<4kW, PC adresuje ją modulo P. W ostatniej komórce pamięci EPROM zapisany jest rozkaz MOVLW xx (xx jest fabryczną wartością kalibrującą wewn. gen. RC).

7 PIC - Base Line - Architektura 7/39
Organizacja pamięci programu - c.d. PC adres restartu dostępna w Base-line przestrzeń MOVLW xx 01FFh 0200h strona 0 0FFFh 0000h 12 pamięć konfiguracji PC adres restartu dostępna w Base-line przestrzeń MOVLW xx strona 0 strona1 0FFFh 0000h 03FFh 0400h 12 pamięć konfiguracji

8 PIC - Base Line - Architektura 8/39
Organizacja pamięci programu - c.d. Komórki o adresach F00h..FFFh to tzw. pamięć konfiguracyjna: F00h, F01h, F02h i F03h zawierają numer identyfikacyjny układu (bity 3..0). FFFh - rejestr konfiguracyjny CONFIG F00h F01h F02h F03h FFFh ID CONFIG

9 PIC - Base Line - Architektura 9/39
Organizacja pamięci programu - c.d. Rejestr konfiguracyjny CONFIG: MCLRE - bit zewnętrznego resetu: =0 - pin /MCLR podpięty wewnętrznie do zasilania - zablokowany reset zewn. =1 - zezwolenie na zewn. reset CP - bit ochronny kodu programu: gdy =1 - ochrona wył., =0 - ochrona włącz. 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 - zewn. oscylator kwarcowy o f=32-400kHz; 01 - zewn. oscylator kwarcowy o f=0,4-8MHz; 10 - wewn. oscylator RC ok. 4MHz albo zewn. oscylator kwarcowy 8-20MHz; 11 - zewn. oscylator RC o f do 4MHz

10 PIC - Base Line - Architektura 10/39
Organizacja pamięci danych - blok rejestrów

11 PIC - Base Line - blok rejestrów specjalnych 11/39
szare pola - bity nie używane; - - niezaimplementowany przy odczycie 0

12 PIC - Base Line - blok rejestrów specjalnych 12/39

13 PIC - Base Line - blok rejestrów specjalnych 13/39
GPWUF - PA0 /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 PA0 - bit wyboru aktywnego banku pamięci programu GPWUF - flaga ustawiana przy zmianie stanu wejść portu GPIO: 0 - gdy po resecie od zasilania, watch-doga lub resetu zewnętrznego; 1 - gdy po resecie od zmiany stanu linii GPIO (wytrącenie ze stanu sleep)

14 PIC - Base Line - blok rejestrów specjalnych 14/39
/GPWU - gdy =0 zezwala na "obudzenie" µC ze stanu sleep zmianą stanu na liniach portu GPIO /GPPU - gdy=0 włącza polaryzację linii portu GPIO opornikami do zasilania T0CS - bit wyboru źródła sygnału dla licznika TMR0: 1 - zliczanie impulsów zewn. podanych na pin T0CKI 0 - zliczanie cykli maszynowych T0SE - bit wyboru zbocza na pinie T0CKI: 1 - zliczanie zboczy opadających; 0 - zliczanie zboczy narastających PSA - bit przypisania preskalera: 1 - do licznika watch-doga 0 - do licznika TMR0

15 PIC - Base Line - blok rejestrów specjalnych 15/39
PS2,PS1,PS0 - bity wyboru podzielnika: dla TMR0: dla WDT: 000 1:2 1:1 001 1:4 1:2 010 1:8 1:4 011 1:16 1:8 100 1:32 1:16 101 1:64 1:32 110 1:128 1:64 111 1:256 1:128

16 PIC - Base Line - tryby adresowania 16/39
Tryby adresowania operandów - bajtów natychmiastowy kod rozkazu operand andlw 130 rejestrowy  bezpośredni operand kod rozkazu f Rf: addwf 10

17 PIC - Base Line - tryby adresowania 17/39
rejestrowy pośredni movlw 10 ;W:=adres do SRAM movwf FSR ;W->FSR clrf INDF ;SRAM[FSR]:=0 operand kod rozkazu Rf/SRAM[FSR] adres FSR: Tryb adresowania operandów - bitów bezpośredni kod rozkazu blok rejestrów bcf 10,3 bit f

18 Modyfikacja i odtwarzanie PC
PIC - Base Line /39 Modyfikacja i odtwarzanie PC 1. Przez rozkaz zapisujący rejestr PCL 1B wartością bajt z ALU ‘0’ PC: STATUS: PCL Dowolny rozkaz arytmetyczno-logiczny lub przesłania, dla którego wskazano PCL jako rejestr docelowy

19 Modyfikacja i odtwarzanie PC
PIC - Base Line /39 Modyfikacja i odtwarzanie PC 2. Przez rozkaz wywołania procedury CALL szczyt stosu sprzętowy stos 2 x 12b bajt z kodu rozkazu CALL ‘0’ PC: STATUS: PCL

20 Modyfikacja i odtwarzanie PC
PIC - Base Line /39 Modyfikacja i odtwarzanie PC 3. Przez rozkaz skoku GOTO PCL PC: 9b z kodu rozkazu GOTO STATUS:

21 Modyfikacja i odtwarzanie PC
PIC - Base Line /39 Modyfikacja i odtwarzanie PC 4. Przez rozkaz powrotu z procedury RETLW szczyt stosu sprzętowy stos 2 x 12b PCL PC: STATUS:

22 PIC - Base Line - stos /39 Stos w mikrokontrolerach Base-line: sprzętowy, 2-poziomowy, zbudowany z 12-bitowych rejestrów; wskaźnik wierzchołka stosu jest niedostępny; wykorzystywany tylko do przechowywania adresów powrotu z wywoływanych procedur; zapis więcej niż 2 adresów powrotu powoduje zamazanie poprzednich informacji na stosie - przepełnienie się stosu; brak sygnalizacji przepełnienia się stosu szczyt stosu sprzętowy stos 2 x 12b

23 PIC - Base Line - generator taktu 23/39

24 PIC - Base Line - cykl rozkazowy 24/39
Przetwarzanie rozkazów Q1 - dekodowanie rozkazu, inkrement PC Q2 - pobranie argumentów Q3 - wykonanie rozkazu Q4 - zapamiętanie wyniku i koniec pobierania nast. rozkazu

25 Obwód resetu PIC - Base Line 25/39
układ DRT generuje dodatkowe opóźnienie (ok.18ms) pozwalające na ustabilizowanie się napięcia zasilającego i pracy generatora.

26 Obwód resetu PIC - Base Line 26/39
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;

27 Praca z obniżonym poborem prądu tryb włącza się rozkazem SLEEP;
PIC - Base Line /39 Praca z obniżonym poborem prądu tryb włącza się rozkazem SLEEP; główny oscylator wyłącza się, linie portu pozostają b.z. Wyjście z trybu power down może być wywołane przez: zewnętrzny reset na /MCLR; reset od WDT timeout; zmiana stanu linii GP0, GP1 GP3 (gdy to jest odblokowane); i powoduje wykonanie programu od początku. Bity GPWUF, /TO i /PD umożliwiają rozpoznanie przyczyny resetu/obudzenia uC:

28 PIC - Base Line - peryferia 28/39
Port GPIO port ma 6 linii: GP3 - tylko wejście; GP0..GP2,GP4,GP5 - we/wy; rejestr TRIS decyduje o kierunku (ustawione bity TRIS oznaczają wejście 3-stanowe), wyzerowane bity TRIS oznaczają wyjście informacji z rejestru GPIO; TRIS nie jest bezpośrednio dostępny (widoczny jako rej. specj.), można go zapisać tylko specjalnym rozkazem, który przepisuje do niego zawartość rejestru W.

29 PIC - Base Line - peryferia 29/39
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 (niedostępnym wprost).

30 PIC - Base Line - peryferia 30/39
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.

31 PIC - Base Line - peryferia 31/39
Watchdog

32 PIC - Base Line - peryferia 32/39
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/256 - dla TMR0 postskalera 1/1 1/2 1/4 1/8 1/16 1/32 1/64 1/128 - dla WDT

33 PIC - Base Line - lista rozkazów 33/39
kkkkkkkk - dana 1-bajtowa fffff - 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)

34 PIC - Base Line - lista rozkazów 34/39

35 PIC - Base Line - lista rozkazów 35/39

36 PIC - Base Line - lista rozkazów 36/39

37 PIC - Base Line - przykłady programowania 37/39
1. Realizacja skoku wyliczanego zał: zamiana cyfry szesnastkowej z rejestru 10h na kod wyświetlacza 7-segmentowego w W movf 16,w andlw h’0F’ ;wydzielenie bitów call dek ;wywolanie procedury dekodujacej goto next dek addwf pcl,f ;skok wyliczany retlw b’ ’ ;cyfra 0 retlw b’ ’ ;cyfra 1 retlw b’ ’ ;cyfra 2 retlw b’ ’ ;cyfra 3 retlw b’ ’ ;cyfra 4 retlw b’ ’ ;cyfra 5 retlw b’ ’ ;cyfra 6 retlw b’ ’ ;cyfra retlw b’ ’ ;cyfra E retlw b’ ’ ;cyfra F next

38 PIC - Base Line - przykłady programowania 38/39
2. Dodawanie liczb 2-bajtowych ;zal: argumenty w SRAM: arg1l, arg1h, arg2l, arg2h ; wynik: arg1:=arg1+arg2 add2B movf arg2l,w ;arg2l->W addwf arg1l,f ;arg1l:=arg1l+W movf arg2h,w ;arg2h->W btfsc status,c ;czy bylo przeniesienie incfsz arg2h,w ;uwzglednienie przeniesienia addwf arg1h,f ;arg2h:=arg2h+W retlw 0

39 PIC - Base Line - przykłady programowania 39/39
3. Mnożenie liczb 1-bajtowych ;zal: argumenty w SRAM: arg1l, arg2l ; wynik: arg1h|arg1l:=arg1*arg2 mul1B clrf arg1h ;zerowanie st.bajtu iloczynu movlw 8 ;wartosc licznika petli movwf cnt ;zainicjowanie licznika petli movwf arg1l,w ;arg1l->W loop: rrf arg2l,f ;obrot w prawo arg2 btfsc status,c ;czy dodawac? addwf arg1h,f ;dodanie arg1 rrf arg1h rrf arg1l decfsz cnt,f ;czy koniec petli goto loop ;skok jesli nie retlw 0


Pobierz ppt "Mikrokontrolery PIC."

Podobne prezentacje


Reklamy Google