Mikrokontrolery PIC

42
Mikrokontrolery PIC

description

Mikrokontrolery PIC. Wykład 3 2 /42. Rodzina PIC MID Range - inne peryferia. PIC - MidRange - Peryferia 3 /42. - PowerPoint PPT Presentation

Transcript of Mikrokontrolery PIC

Page 1: Mikrokontrolery PIC

Mikrokontrolery PIC

Page 2: Mikrokontrolery PIC

Wykład 3 2/42

Rodzina PIC MID Range- inne peryferia

Page 3: Mikrokontrolery PIC

PIC - MidRange - Peryferia 3/42

Porty równoległe:

• PORTA, PORTB, PORTC, PORTD, PORTE, PORTF, PORTG, GPIO;

• sterowane są rejestrami TRISxx;

• ich linie mają zwykle funkcje alternatywne;

Page 4: Mikrokontrolery PIC

Port równoległy PSP (Parallel Slave Port)

• 8-bitowy port dostępny do odczytu i zapisu z zewnątrz;

• jako alternatywna funkcja PORTD i PORTE;

• bufory portów pracują w standardzie TTL;

• zewnętrzny (nadrzędny) procesor steruje odczytem i zapisem poprzez sygnały strobu /RD i /WR oraz sygnał wyboru /CS;

• sterowanie pracą PSP poprzez rejestr sterujący TRISE;

• w rej. sterującym są bity sygnalizujące pełny bufor wejściowy (IBF) lub wyjściowy (OBF), zamazanie poprzedniego bajtu wejściowego (IBOV);

• może zgłaszać przerwania;

PIC - MidRange - Peryferia 4/42

Page 5: Mikrokontrolery PIC

struktura PSP

PIC - MidRange - Peryferia 5/42

Page 6: Mikrokontrolery PIC

Timer/licznik 1

• 16-bitowy licznik widziany jako para rejestrów TMR1H i TRM1L;

• zlicza w górę;

• posiada własny preskaler (:1, :2, :4, :8);

• posiada własny oscylator kwarcowy (kwarc zewn.);

• może pracować w 3 trybach: - synchronicznym czasowym (licznik cykli maszynowych); - synchronicznym licznikowym (licznik impulsów zewnętrznych); - asynchronicznym licznikowym.

• przepełnienie (0FFFFh0000h) powoduje ustawienie flagi TMR1IF i może być przyczyną przerwania (jeśli bit TMR1IE=1);

• dodatkowy rejestr sterujący T1CON w SFR.

PIC - MidRange - Peryferia 6/42

Page 7: Mikrokontrolery PIC

PIC - MidRange - Peryferia 7/42

Page 8: Mikrokontrolery PIC

Rejestr sterujący T1CON:

7 6 5 4 3 2 1 0

- - T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON

TMR1ON - bit włączający timer/licznik 1 gdy =1

TMR1CS - wybór źródła zliczanych impulsów (gdy =0 - główny generator taktu)

T1SYNC - włączenie synchronizacji zliczanych impulsów (tylko dla imp. zewn.)

T1OSCEN - włączenie (gdy =1) lokalnego generatora impulsów

T1CKPS1, T1CKPS0 - sterowanie preskalerem: 00 - :1 01 - :2 10 - :4 11 - :8

flaga przepełnienia - przerwania TMR1IF jest zlokalizowana w rejestrze PIR1

flaga zezwolenia na przerwania TMR1IE jest zlokalizowana w rejestrze PIE1

PIC - MidRange - Peryferia 8/42

Page 9: Mikrokontrolery PIC

Przykład zastosowania TMR1:

dzięki własnemu oscylatorowi TMR1 działa także podczas stanu SLEEP i może zgłaszać przerwania zegarowe do obsługi wyświetlaczy i klawiatur.

PIC - MidRange - Peryferia 9/42

Page 10: Mikrokontrolery PIC

Timer/licznik 2

• 8-bitowy licznik widziany jako rejestr TMR2;

• posiada 8b rejestr wzorca PR2, z którym porównywany jest stan TMR2;

• zlicza w górę od 00h do wartości z PR2, zrównanie się wartości powoduje zerowanie licznika i ponowne zliczanie;

• posiada własny preskaler (:1, :4, :16);

• posiada własny postskaler (:1, :2, ... , :16);

• zlicza impulsy z głównego generatora taktu (fOSC);

• przepełnienie w postskalerze powoduje ustawienie flagi TMR2IF i może być przyczyną przerwania (jeśli bit TMR2IE=1);

• może służyć jako generator taktu dla portu szeregowego SSP;

• dodatkowy rejestr sterujący T2CON w SFR;

• wpis do rejestrów TMR2 lub T2CON zeruje preskaler i postskaler;

• w trybie SLEEP TMR2 nie pracuje.

PIC - MidRange - Peryferia 10/42

Page 11: Mikrokontrolery PIC

PIC - MidRange - Peryferia 11/42

Page 12: Mikrokontrolery PIC

Rejestr sterujący T2CON:

7 6 5 4 3 2 1 0

- TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0

TMR2ON - bit włączający timer/licznik 2 gdy =1

T2CKPS1, T2CKPS0 - sterowanie preskalerem: 00 - :1 01 - :4 1x - :16

TOUTPS3,TOUTPS2,TOUTPS1,TOUTPS0 - sterowanie postskalerem:0000 - :1 0100 - :5 1000 - :9 1100 - :130001 - :2 0101 - :6 1001 - :10 1101 - :140010 - :3 0110 - :7 1010 - :11 1110 - :150011 - :4 0111 - :8 1011 - :12 1111 - :16

flaga przepełnienia - przerwania TMR2IF jest zlokalizowana w rejestrze PIR1

flaga zezwolenia na przerwania TMR1IE jest zlokalizowana w rejestrze PIE1

PIC - MidRange - Peryferia 12/42

Page 13: Mikrokontrolery PIC

Moduł CCP (Capture/Compare/PWM)

• mikrokontroler może zawierać więcej niż jeden taki układ;

• współpracuje z 16b TMR1 luhb 8b TMR2;

• posiada 16b rejestr zatrzaskująco/porównujący widziany jako rejestry CCPRnH i CCPRnL;

• posiada własny preskaler (:1, :4, :16);

• dodatkowy rejestr sterujący CCPnCON w SFR;

• w trybie SLEEP nie pracuje.

PIC - MidRange - Peryferia 13/42

Page 14: Mikrokontrolery PIC

Praca w trybie zatrzaskiwania:

• zapamiętuje bieżący stan TMR1 pod wpływem zbocza na pinie CCPn (dowolnego, narastającego: co 4-tego lub co 16-tego);

• zatrzaśnięcie wartości ustawia flagę CCPnIF w rejestrze PIRx i może być przyczyną przerwania (jeśli bit CCPnIE w rejestrze PIEx);

PIC - MidRange - Peryferia 14/42

Page 15: Mikrokontrolery PIC

Praca w trybie porównywania:

• porównuje bieżący stan TMR1 z wartością pamiętaną w CCPRnH i CCPRnL;

• zrównanie się wartości ustawia flagę CCPnIF w rejestrze PIRx i może być przyczyną przerwania (jeśli bit CCPnIE w rejestrze PIEx);

• zrównanie się wartości może zmieniać stan wyjścia CCPn i generować sygnał trygera zerującego licznik TMR1 albo inicjującego konwersję A/C.

PIC - MidRange - Peryferia 15/42

Page 16: Mikrokontrolery PIC

Praca w trybie PWM:

• współpracuje z TMR2;

• okres przebiegu wyznacza wartość rejestru PR2;

• 10-bitowy współczynnik wypełnienia wpisuje się do CCPRnL i bitów DCnM1 DCnM0 (najmłodszych);

• 8b TMR2 poszerza się o 2 młodsze bity z preskalera lub generatora taktu

• koniec okresu zliczania TMR2 powoduje przepisanie CCPRnL

do CCPRnH

PIC - MidRange - Peryferia 16/42

Page 17: Mikrokontrolery PIC

Rejestr sterujący CCPnCON:

7 6 5 4 3 2 1 0

- - DCnM1 DCnM0 CCPnM3 CCPnM2 CCPnM1 CCPnM0

DCnM1, DCnM2 - 9 i 8 bit współczynnika wypełnienia dla PWM

CCPnM3, CCPnM2, CCPnM1, CCPnM0 - wybór trybu pracy:0000 - moduł wyłączony i wyzerowany; 0100 - zatrzaskiwanie na każdym zboczu opadającym0101 - zatrzaskiwanie na każdym zboczu narastającym0110 - zatrzaskiwanie na co 4-tym zboczu narastającym0111 - zatrzaskiwanie na co 16-tym zboczu narastającym1000 - zrównanie się wartości TMR2 i CCPRn ustawia flagę CCPnIF i wyjście CCPn=11001 - zrównanie się wartości TMR2 i CCPRn ustawia flagę CCPnIF i wyjście CCPn=01011 - zrównanie się wartości TMR2 i CCPRn ustawia flagi CCPnIF oraz SE, wyjście CCPn bez zmian.

PIC - MidRange - Peryferia 17/42

Page 18: Mikrokontrolery PIC

Uniwersalny port szeregowy USART

• może pracować w trybie asynchronicznym w pełnym dupleksie;

• transmisja znaków 8- i 9-bitowych z 1b startu i 1b stopu;

• odbiornik jest podwójnie buforowany;

• może pracować w trybie synchronicznym półdupleksowym jako master lub slave (wtedy RX = we/wy danych, TX = we/wy zegara);

• posiada własny generator taktujący sterowany wartością z rej. SPBRG;

• nadajnik ma rej. danych TXREG i rej. sterujący TXSTA;

• odbiornik ma rej. danych RCREG i rej. sterujący RCSTA;

• może zgłaszać przerwanie flagami RCIF, TXIF.

PIC - MidRange - Peryferia 18/42

Page 19: Mikrokontrolery PIC

Praca w trybie asynchronicznym - nadawanie

PIC - MidRange - Peryferia 19/42

Page 20: Mikrokontrolery PIC

Rejestr sterujący nadajnika TXSTA:

7 6 5 4 3 2 1 0

CSRC TX9 TXEN SYNC - BRGH TRMT TX9D

CSRC - wybór źródła zegara taktującego dla transmisji synchronicznej (1 - master);

TX9 - gdy =1 włącza transmisję 9-bitową;

TXEN - włączenie nadawania;

SYNC - gdy =1 włącza tryb synchroniczny;

BRGH - wybór szybkości transmisji (gdy =1 transmisja szybka);

TRMT - stan rejestru przesuwającego TSR (=1 gdy pusty);

TX9D - 9 bit danych do wysłania;

PIC - MidRange - Peryferia 20/42

Page 21: Mikrokontrolery PIC

Praca w trybie asynchronicznym - odbiór

PIC - MidRange - Peryferia 21/42

Page 22: Mikrokontrolery PIC

Rejestr sterujący nadajnika RCSTA:

7 6 5 4 3 2 1 0

SPEN RX9 SREN CREN ADDEN FERR OERR RX9D

SPEN - włączenie (gdy =1) modułu USART;

RX9 - wybór ramki 8 (=0) lub 9 (=1) bitów;

SREN - dla trybu synchronicznego: ustawiony - włącza odbiór jednej ramki;

CREN - gdy =1 włącza ciągły odbiór danych;

ADDEN - gdy =1 włącza wykrywanie adresu i odblokowuje przerwania gdy dziewiąty bit ramki =1;

FERR - gdy =1 sygnalizuje błąd odbioru ramki

OERR - gdy =1 sygnalizuje przekroczenie czasu przy odbiorze;

RX9D - 9 bit odebranych danych;

PIC - MidRange - Peryferia 22/42

Page 23: Mikrokontrolery PIC

Interfejs szeregowy SSP

• transmisja danych 8-bitowych;

• może pracować jako SPI w trybie master lub slave;

• może pracować jako I2C;

• obsługiwany jest przy pomocy 3 rejestrów sterujących: SSPCON, SSPCON2 i SSPSTAT, rejestru adresu SSPADD oraz rejestru danych SSPBUF;

PIC - MidRange - Peryferia 23/42

Page 24: Mikrokontrolery PIC

Praca w trybie SPI:

• realizuje 4 tryby pracy SPI;

• dostępne jest wejście /SS (slave select) przy pracy w trybie slave;

• po zakończeniu transmisji bajtu może zgłaszać przerwanie flagą SPIF;

• tryb master podczas SLEEP nie działa;

• odebranie znaku w trybie slave powoduje wyjście ze SLEEP.

PIC - MidRange - Peryferia 24/42

Page 25: Mikrokontrolery PIC

praca w trybie master

PIC - MidRange - Peryferia 25/42

Page 26: Mikrokontrolery PIC

Praca w trybie I2C:

• pracuje przy 100kHz i 400kHz;

• realizuje wszystkie mechanizmy pracy układu slave;

• dopuszcza 7- i 10-bitowe adresowanie;

• może zgłaszać przerwania przy bitach START i STOP;

• w trybie master rejestr SSPADD służy do programowania szybkości transmisji;

PIC - MidRange - Peryferia 26/42

Page 27: Mikrokontrolery PIC

Port BSSP - Basic Synchronous Serial Port

• może pracować jako SPI;

• może pracować jako I2C w trybie slave

(tryb master wymaga wsparcia programowego);

• wykorzystuje rejestry: SSPSTAT, SSPCON, SSPBUF;

• może zgłaszać przerwanie flagą SSPIF w rej. PIR,

jeżeli bit zezwolenia SSPIE w rej. PIE jest ustawiony.

PIC - MidRange - Peryferia 27/42

Page 28: Mikrokontrolery PIC

Port MSSP - Master Synchronous Serial Port

• może pracować jako SPI;

• może pracować jako I2C w trybie master oraz slave;

• w trybie slave akceptuje także wywołanie typu komunikat;

• wykorzystuje rejestry: SSPSTAT, SSPCON1, SSPCON2, SSPBUF;

• może zgłaszać przerwanie flagą SSPIF w rej. PIR,

jeżeli bit zezwolenia SSPIE w rej. PIE jest ustawiony.

PIC - MidRange - Peryferia 28/42

Page 29: Mikrokontrolery PIC

Programowalne źródło napięcia odniesienia

• zwykle przeznaczone do współpracy z komparatorem;

• nie działa w trybie SLEEP;

• sterowane rejestrem VRCON;

• włączane/wyłączane bitem VREN;

• może być wewnętrznie dołączone do komparatora lub do końcówki zewn.;

• wartość napięcia VREF określają bity VRR i VR3..VR0:

przy VRR=1

VREF = (VR3..VR0):24*VDD

przy VRR=0

VREF = VDD:4 + (VR3..VR0):32*VDD

PIC - MidRange - Peryferia 29/42

Page 30: Mikrokontrolery PIC

Vref:

PIC - MidRange - Peryferia 30/42

Page 31: Mikrokontrolery PIC

Komparatory

• zestaw dwóch komparatorów,

których wejścia są dołączone do końcówek zewn.;

• sterowane rejestrem CMCON;

• mogą pracować niezależnie lub być ze sobą połączone;

• mogą zgłaszać przerwania;

• w trybie SLEEP nie działają;

PIC - MidRange - Peryferia 31/42

Page 32: Mikrokontrolery PIC

8-bitowe przetworniki A/C

• kompensacyjne;

• 8/4 multipleksowanych kanałów wejściowych;

• wykorzystuje rejestry: ADRES, ADCON0, ADCON1;

• możliwy jest wybór częstotliwości taktowania przetwornika:

fOSC:2 fOSC:8 fOSC:32 albo z wbudowanego RC

• posiada bit włączający zasilanie;

• może zgłaszać przerwanie;

PIC - MidRange - Peryferia 32/42

Page 33: Mikrokontrolery PIC

PIC - MidRange - Peryferia 33/42

Page 34: Mikrokontrolery PIC

10-bitowy kompensacyjny przetwornik A/C

• 8 multipleksowanych kanałów wejściowych;

• wykorzystuje rejestry: ADRESH, ADRESL, ADCON0, ADCON1;

• możliwy jest wybór częstotliwości taktowania przetwornika:

fOSC:2 fOSC:8 fOSC:32 albo z wbudowanego RC

• może zgłaszać przerwanie;

• może pracować w trybie SLEEP;

PIC - MidRange - Peryferia 34/42

Page 35: Mikrokontrolery PIC

PIC - MidRange - Peryferia 35/42

Page 36: Mikrokontrolery PIC

16-bitowy przetwornik A/C z przetwarzaniem U/t

• 16 multipleksowanych kanałów wejściowych;

• wykorzystuje rejestry: ADCAPH, ADCAPL, ADTMRH, ADTMRL,

ADCON0, ADCON1, SLPCON;

• posiada precyzyjne źródło napięcia odniesienia i czujnik temperatury;

• może zgłaszać przerwanie;

• może pracować w trybie SLEEP;

PIC - MidRange - Peryferia 36/42

Page 37: Mikrokontrolery PIC

PIC - MidRange - Peryferia 37/42

Page 38: Mikrokontrolery PIC

Pamięć EEPROM

• od 64 do 256 bajtów zależnie od typu;

• czas zapisu maks. 10ms (zależy od temperatury i napięcia zasilania)

PIC - MidRange - Peryferia 38/42

Page 39: Mikrokontrolery PIC

Moduł obsługi LCD

• obsługuje wyświetlacz o 4 wspólnych elektrodach i do 32 segmentach;

• obsługiwany poprzez 3 rejestry sterujące: LCDCON, LCDSE i LCDPS i do 16 rejestrów danych LCDnn;

• może funkcjonować w trybie SLEEP;

PIC - MidRange - Peryferia 39/42

Page 40: Mikrokontrolery PIC

struktura modułu obsługi LCD

PIC - MidRange - Peryferia 40/42

Page 41: Mikrokontrolery PIC

System przerwań MidRange:

• przy większej liczbie wbudowanych peryferii występują rejestry:PIR (PIR1, PIR2) - rejestr zgłoszenia przerwań;PIE (PIE1, PIE2) - rejestr indywidualnego maskowania przerwań;

• 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.Jeżeli podczas rozkazu kasującego bit GIE pojawi sie przerwanie, to bit ten może pozostać ustawiony. Aby mieć pewność jego wyzerowania zaleca się sekwencję rozkazów:LOOP BCF INTCON,GIE ;wylacz GIE

BTFSC INTCON,GIE ;czy GIE=0GOTO LOOP ;skok jesli nie

; tu przechodzi gdy OK

PIC - MidRange - Przerwania 41/42

Page 42: Mikrokontrolery PIC

PIC - MidRange - Przerwania 42/42