Professional Documents
Culture Documents
fronczak@if.pw.edu.pl
Pokój 6GF
Interfejs USART
Interfejsy szeregowe w mikrokontrolerach AVR
• Dwie linie transmisyjne:
• USART (Universal Synchronous and Asynchronous serial › RxD – tor danych odbieranych
Receiver and Transmitter) › TxD – tor danych nadawanych
• SPI (Serial Peripherial Interface)
• Tryby pracy:
• TWI (2-wire Serial Interface) – odpowiednik I2C
› Synchroniczny – wykorzystana jest dodatkowa linia
• USB (Universal Serial Bus) – tylko w niektórych taktująca XCK, wykorzystany często w trybie
wieloprocesorowym (ang. Multi-processor
• 1-wire – intefejs jednoprzewodowy – brak implementacji communication mode)
sprzętowej › Asynchroniczny – oszczędność wyprowadzeń
mikrokontrolera kosztem większej niepewności
transmisji.
Interfejsy szeregowe umoŜliwiają łatwe połączenie dwóch urzadzeń
za pomocą niewielkiej liczby przewodów (2-4).
Łatwa realizacja sprzętowa
Szybkość ograniczona do kilku Mbps
Interfejs USART – standard RS232 Interfejs USART – ramka transmisji
• Najbardziej popularny standard
szeregowy - RS232 • Jeden przewód do jednokierunkowej transmisji
› wykorzystywany w komputerach PC • KaŜdy blok reprezentuje jeden bit
• Standard elektryczny RS232 odbiega od • KaŜdy bit trwa określony czas (konfiguracja szybkości
standardu TTL transmisji)
› Logiczne 1 – dowolny sygnał od -25V do -3V
› Logiczne 0 – dowolny sygnał od +3V do 25V
• Przykład: dla prędkości 1200 bps (bitów na sekundę)
› Zakres od -3V do +3V nie ma przypisanego długość jednego bitu wynosi 1/1200 s (833.3 µs)
poziomu logicznego – detekcja przerwanego
przewodu
1 bit
0
Czas
• Opcjonalnie wysyłany jest bit parzystości. • Transmisję kończy 1-2 bity stopu.
• W zaleŜności od konfiguracji interfejsu sprawdzenie, czy • Bit stopu ma wartość 1.
całkowita liczba nadanych bitów o wartości 1 była parzysta lub • Jeśli w tym czasie pojawi się na magistrali jakaś
nieparzysta. transmisja, odbiornik zinterpretuje ją jako błąd ramki
• Odbiornik moŜe kontrolować poprawność przesyłanych danych (Frame Error).
(i ew. sygnalizowany błąd parzystości – Parity Error).
Jeśli odbiornik próbkuje sygnał zbyt szybko… Jeśli odbiornik próbkuje sygnał zbyt wolno…
Rejestry USCRA,
UCSRB i UCSRC
(do konfiguracji
interfejsu)
AVR USART – rejestr UBRR AVR USART – rejestr UDR (data register)
• RXC – flaga ustawiana, gdy odebrano daną z magistrali i czeka ona w rejestrze
UDR.
• TXC – flaga ustawiana, gdy zakończono nadawanie bajtu, a w buforze nadajnika nie
ma więcej danych. • RXCIE: włączenie przerwania RXC
• UDRE – flaga ustawiana, gdy zawartość rejestru UDR została umieszczona w • TXCIE: włączenie przerwania TXC
buforze nadajnika. MoŜna wpisać coś do rejestru UDR. • UDRIE: włączenie przerwania UDRE
• FE - Framing Error – bit stopu nie ma wartości 1
• RXEN: Włączenie odbiornika
• DOR - Data OverRun – przed zakończeniem odbioru ramki, poprzednią wartość z
rejestru UDR naleŜy koniecznie odczytać. • TXEN: Włączenie nadajnika
• PE - Parity Error - jasne • UCSZ2: długość słowa
• U2X – podwojenie szybkości transmisji (rzadziej próbkowany stan linii – mogą • RXB8, TXB8: w trybie 9-bitowym tu znajdują się bity nr 8 przy odbiorze i przy transmisji
wystąpić błędy)
• MPCM - MultiProcessor Communication Mode - 9 bit ramki = 1 oznacza adres, 0
znacza daną. Drugi układ, jeśli nie rozpozna swojego adresu nie będzie odbierał
danych.
AVR USART – rejestr UCSRC AVR USART – inicjalizacja
#include <avr/io.h>
#include <util/delay.h>
#define MOSI PB5
#define SCK PB7
#define SS PB4
int main(void) {
InitSPI(); // inicjalizacja SPI – zrobiliśmy to wcześniej
while(1) {
cnt=1;
while(cnt) {
SendSPI( cnt );
_delay_ms(100);
cnt << = 1;
}
}
}