1 / 51

Mikrokontrolery PIC

Mikrokontrolery PIC. Wykład 2 2 /51. Rodzina PIC MID Range. PIC - MidRange - Architektura 3 /51.

gur
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 2 2/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: 000..1FFFh (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. 13 12 0 PC 13 0 strona 0 adres restartu 0000h dostępnaw 16C84 przestrzeń adres obsł. przerwań 0004h 03FFh 0400h strona 1 strona 2 strona 3 07FFh 0800h dostępnaw Mid-range przestrzeń 0FFFh 1000h 17FFh 1800h 1FFFh PIC - MidRange - Architektura 8/51 Organizacja pamięci programu - c.d.

  9. ID 2000h 2001h 2002h 2003h 2007h ID ID ID CONFIG 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

  10. PIC - MidRange - Architektura 10/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. PCL 12 8 7 0 PC: bajt z ALU PCLATCH: PIC - MidRange - Architektura 11/38 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

  12. sprzętowy stos 8 x 13b szczyt stosu adres powrotu szczyt stosu PCL 12 8 7 0 PC: 11b z kodu rozkazu CALL PCLATCH: PIC - MidRange - Architektura 12/38 Modyfikacja i odtwarzanie PC 2. Przez rozkaz wywołania procedury CALL

  13. PCL 12 10 0 PC: 11b z kodu rozkazu GOTO PCLATCH: PIC - MidRange - Architektura 13/38 Modyfikacja i odtwarzanie PC 3. Przez rozkaz skoku GOTO

  14. sprzętowy stos 8 x 13b szczyt stosu PCL 12 8 7 0 PC: PCLATCH: PIC - MidRange - Architektura 14/38 Modyfikacja i odtwarzanie PC 4. Przez rozkazy powrotu z procedury RETURN, RETLW, RETFIE

  15. sprzętowy stos 8 x 13b szczyt stosu PIC - MidRange - stos 15/51 • Stos: • sprzętowy; • 8-poziomowy (8 13-bitowych rejestrów); • wskaźnik stosu nie jest dostępny; • działa jak rejestr cyrkulacyjny - 9-ty zapis na stos spowoduje zamazanie pierwszego wpisu;

  16. STATUS: 7 6 0 FSR: kod rozkazu: 7 6 0 IRP RP1,RP0 00 01 10 11 00h 30h 7Fh 80h 0B0h 0FFh 100h 17Fh 180h 1FFh bank #0 bank #1 bank #2 bank #3 PIC - MidRange - Architektura 16/51 Organizacja pamięci danych 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. STATUS: IRP RP1 RP0 /TO /PD Z DC C PIC - MidRange - blok rejestrów specjalnych 20/51 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), 01 - bank #1 (80h..0FFh), 10 - 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. natychmiastowy kod rozkazu operand andlw 130 Tryby adresowania operandów - bajtów Tryb adresowania operandów - bitów blokrejestrów • bezpośredni kod rozkazu bit f bcf 10,3 PIC - MidRange - tryby adresowania 22/51

  23. rejestrowy /bezpośredni kod rozkazu f rejestry/SRAM 7b RP1 RP0 addwf 10 2b wybór banku 9b Rf: operand PIC - MidRange - tryby adresowania 23/51 Tryby adresowania operandów - bajtów - cd.

  24. rejestry/SRAM • rejestrowy pośredni kod rozkazu f* f*=00h,80h clrf INDF FSR: IRP 7b 2b wybór banku 9b operand PIC - MidRange - tryby adresowania 24/51 Tryby adresowania operandów - bajtów - cd.

  25. PIC - MidRange 25/51 Generator taktu

  26. PIC - MidRange 26/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. wykonanie 1 pobranie 2 wykonanie 2 pobranie 3 wykonanie 3 pobranie 4 odrzucenie 4 pobranie x PIC - MidRange 27/51 Przetwarzanie rozkazów - cd. 1. MOVLW 55h 2. MOVWF PORTB 3. CALL PROC1 4. BSF PORTA,BIT3 ............ x. PROC1: ... pobranie 1 wykonanie x

  28. PIC - MidRange 28/51 Obwód resetu

  29. PIC - MidRange 29/51 Obwód resetu - działanie układu BOR (Brown Out Reset)

  30. PIC - MidRange 30/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 31/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 32/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ść PORTB7..4 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 BCF STATUS,RP0 ; Bank 0 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 Fs - 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

More Related