Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Rodzina AVR wykład 4
2
Porty szeregowe: UART/USART USI SPI
AVR /23 Porty szeregowe: UART/USART USI SPI
3
AVR - porty szeregowe ATtiny2313/ATmega8515 3/23
Port USART Cechy układu: transmisja asynchroniczna i synchroniczna w pełnym dupleksie; transmisja synchroniczna w trybie master (własny) lub slave (zewn. przebieg synchronizujący o fXCK<fOSC:4); transmisja znaków 5-, 6-, 7-, 8- i 9-bitowych z 1 lub 2 bitami stopu; sprzętowa generacja i sprawdzanie kontrolnych bitów parzystości/nieparzystości; transmisja znaku 5..9-bitowego w ATtiny2313/ATmega8515: START bit b0 b1 b2 b3 b4 [ b5 ] b6 pb] STOP b7 [ bit STOP] b8
4
AVR - porty szeregowe ATtiny2313/ATmega8515 4/23
Cechy układu UART: wykrywanie błędów: przepełnienia odbiornika (overrun error), ramki (framing error) i fałszywego bitu startu (false start bit error); trzy możliwe przyczyny przerwania; własny, niezależny generator prędkości; szybkość transmisji do 1250 kbodów przy fOSC=10MHz; podwójny bufor odbiornika; realizacja komunikacji w systemie wieloprocesorowym; możliwość zdwojenia szybkości transmisji asynchronicznej.
5
AVR - porty szeregowe ATtiny2313/ATmega8515 5/23
WEWN. SZYNA DANYCH REJ. SZYBK. UBRR REJ. BUF. ODBIORNIKA REJESTR BUFOROWY NADAJNIKA REJ. BUF. ODBIORNIKA UDR 16fBOD XTAL GENERATOR SZYBKOŚCI f :16 B O D GEN. BITU PARZ. XCK WPIS DO UDR PRZEPISZ Z UDR PD2 UKŁ.SYNCH KONTR PARZ. 1 UKŁAD ODTWARZ. BITÓW REJESTR PRZESUWNY ODBIORNIKA REJESTR PRZESUWNY NADAJNIKA TXD U.S. PINU PD1 U.S. PINU RXD U.S. NAD PD0 UCSZ2 RXC UDRE UCPOL RXEN TXEN RXB8 TXB8 TXC DOR UPE UMSEL UPM1 UCSZ0 FE U2X MPCM UPM0 USBS UCSZ1 REJ. STER UCR/UCSRB REJ. STANU/STER USR/UCSRA REJ. STANU/STER UCSRC RXC TXC RXCIE TXCIE UDRIE UDRE WEWN. SZYNA DANYCH PRZERWANIA: RXC TXC UDRE
6
AVR - porty szeregowe ATtiny2313/ATmega8515 6/23
Rejestry portu szeregowego: UDR - rejestr buforowy portu szeregowego - odczyt odebranego znaku; - zapis znaku do wysłania. rej. portu szeregowego UDR 0Ch 2Ch W przypadku ATtiny2313 odbiornik jest buforowany podwójnie - rejestr FIFO
7
AVR - porty szeregowe ATtiny2313/ATmega8515 7/23
Rejestry portu szeregowego: W ATtiny2313 i ATmega8515 są 2 rejestry szybkości transmisji : UBRRH i UBRRL fTRASYN[bod] = fOSC×2U2X/(16×(UBRR+1)) fTRSYN[bod] = fOSC/(2×(UBRR+1)) UBRR7..0 UBRRL 09h 29h UBRR11..8 UBRRH 02h 20h 22h 40h URSEL URSEL - musi być: =0 przy wpisie do UBRRH
8
AVR - porty szeregowe ATtiny2313/ATmega8515 8/23
UCSRA - rejestr stanu transmisji RXC TXC UDRE FE DOR UPE/PE U2X MPCM UCSRA 0Bh 2Bh RXC - flaga sygnalizująca odebranie znaku, kasowana automatycznie przy odczycie znaku poprzez UDR TXC - flaga sygnalizująca koniec nadawania znaku (wysłano bit stopu), zerowana automatycznie przy wejściu w procedurę obsługi przerwania, programowe ustawienie tej flagi może uruchomić przerwanie UDRE - flaga opróżnienia rejestru buforowego nadajnika (znak z bufora został przeniesiony do rejestru przesuwającego nadajnika), zerowana automatycznie podczas wpisu do rejestru UDR, ale gdy rejestr przesuwający nadajnika jest pusty to zapis do UDR trafia wprost do tego rejestru i flaga pozostaje ustawiona
9
AVR - porty szeregowe ATtiny2313/ATmega8515 9/23
UCSRA - rejestr stanu transmisji RXC TXC UDRE FE DOR UPE/PE U2X MPCM UCSRA 0Bh 2Bh FE - flaga sygnalizująca błąd ramki DOR - flaga przepełnienia bufora odbiornika UPE/PE - flaga sygnalizująca błąd parzystości odebranego znaku (czekającego na odczyt z UDR) U2X - bit zdwojenia szybkości transmisji asynchronicznej MPCM - bit włączający tryb komunikacji wieloprocesorowej
10
AVR - porty szeregowe ATtiny2313/ATmega8515 10/23
UCSRB - rejestr sterujący transmisją RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8 UCSRB 0Ah 2Ah RXCIE - zezwolenie na przerwania wywołane odebraniem znaku TXCIE - zezwolenie na przerwania wywołane zakończeniem nadawania znaku UDRIE - zezwolenie na przerwania wywołane opróżnieniem bufora nadajnika RXEN - włączenie odbiornika TXEN - włączenie nadajnika UCSZ2 - włączenie transmisji 9-bitowej (CHR9 w AT90S2313) RXB8 - najstarszy bit odebranego znaku 9-bitowego TXB8 - najstarszy bit 9-bitowego znaku do nadania
11
AVR - porty szeregowe ATtiny2313/ATmega8515 11/23
UCSRC - rejestr sterujący transmisją URSEL UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL UCSRC 03h 20h 23h 40h URSEL - musi być: =1 przy zapisie do UCSRC, =0 przy zapisie do UBRRH UMSEL - wybór między asynchronicznym i synchronicznym trybem pracy UPM1,UPM0 - określają rodzaj kontroli parzystości: kontrola i generacja wyłączone kontrola i generacja bitu parzystości kontrola i generacja bitu nieparzystości USBS - ustawiony „włącza” drugi bit stopu UCSZ1,UCSZ0 - razem z UCSZ2 określają długość transmitowanych znaków: b b b b zarezerwowane b UCPOL - tylko dla transmisji synchronicznej - wybór zbocza sygnału XCK, przy którym następuje zmiana stanu linii nadajnika i odbiornika
12
AVR - porty szeregowe ATtiny2313 12/23
Uniwersalny interfejs szeregowy USI Właściwości: sprzętowy interfejs dwu-przewodowej transmisji synchronicznej (I2C) w trybie master lub slave; sprzętowy interfejs trój-przewodowej transmisji synchronicznej (SPI w trybie 0 lub 1) jako master lub slave; możliwość zgłoszenia przerwania po odebraniu bajtu danej; może „wybudzić” mikrokontroler z trybu pracy z obniżonym poborem energii; przy pracy interfejsu dwu-przewodowego możliwe jest „wybudzenie” także z trybu power-down; wykrycie bitu startu przy odbiorze dwu-przewodowym także może być przyczyną przerwania.
13
AVR - porty szeregowe ATtiny2313 13/23
Uniwersalny interfejs szeregowy USI
14
AVR - porty szeregowe ATtiny2313 14/23
Wpisując początkową wartość do 4-bitowego licznika można określić po ilu nadanych/odebranych bitach ma się pojawić przerwanie (USIOIF) od przepełnienia tego licznika. Taktowanie transmisji: „wewnętrzne” - sygnałami przepełnień z timera/licznika #0; sygnałem zewnętrznym, doprowadzonym do końcówki USCK/SCL (przy pracy jako slave); programowe poprzez wpisywanie „1” do bitu USITC w rej. USICR. UWAGA: przy taktowaniu zewnętrznym przesuwanie bitów w rej. USIUDR odbywa się przy wybranym zboczu zegara, ale 4-bitowy licznik zlicza wszystkie zbocza.
15
AVR - porty szeregowe ATtiny2313 15/23
Praca interfejsu trój-przewodowego: Praca interfejsu dwu-przewodowego:
16
AVR - porty szeregowe ATtiny2313 16/23
USICR - rejestr sterujący transmisją USISIE USIOIE USIWM1 USIWM0 USICS1 USICS0 USICLK USITC USICR 0Dh 2Dh USISIE - zezwolenie na przerwanie po odebraniu warunku startu USIOIE - zezwolenie na przerwanie od przepełnienia się licznika 4b USIWM1,USIWM0 - określają tryb pracy interfejsu: wyłączony; 01 - tryb trój-przewodowy 10,11 - dwa warianty interfejsu dwu-przewodowego (różnice w pracy linii SCL) USICS1,USICS0 i USICLK - wybór źródła taktowania interfejsu USITC - zmienia stan wyjścia zegarowego, do programowego taktowania transmisji szeregowej
17
AVR - porty szeregowe ATtiny2313 17/23
USISR - rejestr stanu transmisji USISIF USIOIF USIPF USIDC USICNT3 USICNT2 USICNT1 USICNT0 USISR 0Eh 2Eh USISIF - flaga przerwania od odebrania bitu startu przy I2C lub zbocza na wejściu zegarowym SCK USIOIF - flaga przerwania od przepełnienia licznika 4-bitowego USIPF - flaga ustawiana po odebraniu bitu stopu przy I2C USIDC - flaga ustawiana przy nadawaniu przez I2C po wykryciu „kolizji” go bitu na linii SDA USICNT3..USICNT0 - stan 4-bitowego licznika
18
AVR - porty szeregowe ATtiny2313 18/23
USIDR - rejestr danych USIDR 0Fh 2Fh rejestr do odczytu odebranej danej i zapisu bajtu do wysłania
19
AVR - porty szeregowe ATmega8515 19/23
Port SPI: 3-przewodowy, pracujący w pełnym dupleksie; tryb master lub slave; możliwy wybór kolejności transmisji bitów (od LSB albo od MSB); możliwy wybór jednego z 4 trybów transmisji; zgłaszanie przerwania od zakończenia transmisji; szybkość transmisji dobierana multiplekserem z podzielnika generatora systemowego;
20
AVR - porty szeregowe ATmega8515 20/23
Port SPI:
21
AVR - porty szeregowe ATmega8515 21/23
Rejestr sterujący SPI: SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0 SPCR 0Dh 2Dh SPIE - flaga zezwolenia na przerwanie od portu SPI SPE - bit włączający do pracy port SPI DORD - bit ustalający porządek przesyłu bitów: gdy =1 od LSB, gdy =0 od MSB MSTR - gdy =1 wymusza tryb master portu SPI, ale podanie na wejście /SS= automatycznie kasuje ten bit CPOL, CPHA - bity wybierające jeden z 4 trybów (0..3) transmisji SPI: CPOL=0 stan SCK niski gdy nie ma transmisji CPOL=1 stan SCK wysoki gdy nie ma transmisji CPHA=0 odczyt danych przy pierwszym zboczu, zmiana przy drugim zboczu CPHA=1 odczyt danych przy drugim zboczu, zmiana przy pierwszym zboczu
22
AVR - porty szeregowe ATmega8515 22/23
Rejestr sterujący SPI: SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0 SPCR 0Dh 2Dh SPR1,SPR0 - bity określające razem z SPI2X szybkość transmisji portu SPI: SPI2X,SPR1,SPR częstotliwość SCK fOSC / fOSC / fOSC / fOSC / fOSC / fOSC / fOSC / fOSC / 64
23
AVR - porty szeregowe ATmega8515 23/23
Rejestr stanu SPI: SPIF WCOL SPI2X SPSR 0Eh 2Eh SPIF - flaga przerwania od portu SPI (gdy transmisja się skończy lub pojawi się na wejściu /SS niski poziom) WCOL - bit sygnalizujący wpis do rejestru buforującego dane SPDR w trakcie transmisji Rejestr buforowy danych SPI: SPDR 0Fh 2Fh
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.