1 / 39

Mikrokontrolery PIC

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

alexis
Download Presentation

Mikrokontrolery PIC

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Mikrokontrolery PIC

  2. Wykład 1 2/39 Architektura PICPrzestrzenie adresoweTryby adresowania

  3. PIC - Base Line - Architektura 3/39 • PIC12C508/509 charakteryzują się następującymi cechami: • architektura Harvard RISC; • 8-bitowe ALU; • PIC12C508: 512x12b 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. 12 12 11 0 11 0 PC PC adres restartu 0000h adres restartu 0000h strona 0 strona 0 strona1 MOVLW xx 01FFh 0200h dostępnaw Base-line przestrzeń MOVLW xx 03FFh 0400h dostępnaw Base-line przestrzeń pamięć konfiguracji pamięć konfiguracji 0FFFh 0FFFh PIC - Base Line - Architektura 7/39 Organizacja pamięci programu - c.d. 508 509

  8. ID F00h F01h F02h F03h FFFh ID ID ID CONFIG 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

  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. STATUS: GPWUF - PA0 /TO /PD Z DC C PIC - Base Line - blok rejestrów specjalnych 13/39 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. natychmiastowy kod rozkazu operand andlw 130 • rejestrowy  bezpośredni Rf: kod rozkazu f operand addwf 10 PIC - Base Line - tryby adresowania 16/39 Tryby adresowania operandów - bajtów

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

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

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

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

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

  22. sprzętowy stos 2 x 12b szczyt stosu PIC - Base Line - stos 22/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

  23. PIC - Base Line - generator taktu 23/39 Generator taktu

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

  26. PIC - Base Line 26/39 Obwód resetu 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. PIC - Base Line 27/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 Fs - 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 3..0 call dek ;wywolanie procedury dekodujacej goto nextdek addwf pcl,f ;skok wyliczany retlw b’00111111’ ;cyfra 0 retlw b’00000110’ ;cyfra 1 retlw b’01011011’ ;cyfra 2 retlw b’01001111’ ;cyfra 3 retlw b’01100110’ ;cyfra 4 retlw b’00000110’ ;cyfra 5 retlw b’01111101’ ;cyfra 6 retlw b’00000111’ ;cyfra 7 ... ... retlw b’01111001’ ;cyfra E retlw b’01110001’ ;cyfra Fnext

  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+arg2add2B 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*arg2mul1B clrf arg1h ;zerowanie st.bajtu iloczynu movlw 8 ;wartosc licznika petli movwf cnt ;zainicjowanie licznika petli movwf arg1l,w ;arg1l->Wloop: 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

More Related