Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

USART

(Code v d trn ATmega8) UART Universal asynchronous receiver/transmitter (UART), t m d ch l B thu/pht khng ng b a nng, l m t ki u thu/pht khng ng b , th c hi n vi c truy n d li u d ng song song v n i ti p. UARTs th ng dng k t h p v i cc chu n giao ti p (communication standard) khc nh EIA RS-232. DUART (Double UART) tch h p hai b UART trn m t chp n. USART l UART c kh nng giao ti p c ng b v khng ng b . UART th ng tch h p trn vi i u khi n. ng d ng c th th y ngay khi h c v UART trn vi i u khi n l truy n d li u t vi i u khi n ln PC thng qua c ng COM debug. Truy n/Nh n khng ng b Pha bn truy n s th c hi n truy n l n l t: Start Data 0 Data 1 Data 2 Data 3 Data 4 Data 5 Data 6 Data 7 Parity Stop

Name Start bit Data bits Parity bit Stop bit

Length Note 1 58 1 Optional 1 u ng c v i tr ng thi ngh (Idle). tr ng thi ngh . Bit k t thc ny c th c l i vi c truy n nh n. bit 1 gi a start/stop bit l ch n hay l . Bit ny

+ Bit b t u (start) tnh hi u c chi + Bit k t thc (stop) tnh hi u tr v ko di b ng th i c a hai bits, gip ng b + Parity bit: bit ki m tra, cho bi t s c th c b qua.

Trong truy n nh n ng b , m t ng tnh hi u clock c dng ng b d li u, khng c start/stop bit.


Trang 1

USART trn Atmega8 ct + UASRT: ho t ng c ch ng b v khng ng b . + Ch ho t ng kp (Truy n/Nh n), t c cao. + H tr khung 5,6,7,8 ho c 9 data bits v 1 ho c 2 stop bits. + Ba ng t ring ph c v khi truy n xong d li u, nh n xong d li u v thanh ghi d li u r ng. S kh i

XCK Transfer Clock: ch dng trong ch truy n ng b . TxD Transfer Data: Chn truy n d li u. Trong ch truy n, chn ny c c u hnh l m t chn output b t k DDRD1. RxD Receive Data: Chn nh n d li u. Trong ch nh n, chn ny c c u hnh l m t chn input b t k DDRD0, tuy nhin pull-up v n ph thu c PORTD0. Cc thanh ghi + UDR UASRT I/O Data Register

TXB - USART Transmit Data Buffer Register RXB - USART Receive Data Buffer Registers
Trang 2

Hai thanh ghi TXB v RXB chia s chung m t a ch I/O, cng tham kh o n UDR. Khi ghi vo UDR, d li u s ch a trong TXB. Khi c UDR, s tr v gi tr trong RXB. + UCSRA USART Control and Status Register A

Bit 7 RXC: USART Receive Complete Bit 6 TXC: USART Transmit Complete Bit 5 UDRE: USART Data Register Empty Bit 4 FE: Frame Error Bit 3 DOR: Data OverRun Bit 2 PE: Parity Error Bit 1 U2X: Double the USART transmission speed Bit 0 MPCM: Multi-processor Communication Mode + UCSRB USART Control and Status Register B

Bit 7 RXCIE: RX Complete Interrup Enable Bit 6 TXCIE: TX Complete Interrupt Enable Bit 5 UDRIE: USART Data Register Empty Interrupt Enable Bit 4 RXEN: Receiver Enable Bit 3 TXEN: Transmitter Enable Bit 2 UCSZ2: Character Size Bit 1 RXB8: Receive Data Bit 8 Bit 0 TXB8: Transmit Data Bit 8 + UCSRC USART Control and Status Register C

Bit 7 URSEL: Register Select Bit 6 UMSEL: USART Mode Select

Trang 3

Bit 5:4 UPM1:0: Parity Mode

Bit 3 USBS: Stop Bit Select

Bit 2:1 UCSZ1:0: Character Size

Bit 0 UCPOL: Clock Polarity

+ USART Baud Rate Registers

Bit 15 URSEL: Register Select Bit 14:12 Reserved Bits Bit 11:0 UBRR11:0: USART Baud Rate Register ***M t chi ti t cc thanh ghi xem trong datasheet ATmega8.

Trang 4

C u hnh baud rate

Baud rate error V i m t t n s ho t ng MCU v m t gi tr UBRR ta c m t gi tr Baud rate g i l Baud rate th c t Baud rate (TT ) . Nh ng Baud rate ch n th ng dng trong truy n/nh n khng ng b (v d : 9600bps) g i l Baud rate mong mu n Baud rate (MM ) . Sai l ch:

Baud rate (TT ) Error [%] = Baud rate ( MM ) 1 100% Sai l ch trong kho ng [ 0.5% ; 0.5%] l ch p nh n c.
M t s Baud rate th ng dng (Error trong kho ng cho php) Baud rate UBRR (F_OSC = 8MHz) UBRR (F_OSC = 12MHz) 4800 0x0067 0x009B 9600 0x0033 0x004D 14400 0x0022 0x0033 19200 0x0019 0x0026

Chng trnh v d v truy n d li u UART trn Atmega8. + Yu c u: G i cc k t t AZ ln my tnh. + M ch:

Trang 5

+ Chng trnh File usart.h


//DF_CPU = 12000000 #define byte unsigned char void usart_init(); void usart_sendbyte(byte data);

File usart.c
#include <avr/io.h> #include "uart.h" // USART initialization void usart_init(){ // USART Frame : // USART Receiver : // USART Transmitter: // USART Mode : // USART Baud Rate : UCSRA UCSRB UCSRC UBRRH UBRRL } // Send the data void usart_sendbyte(byte data){ while(!(UCSRA &(1<<UDRE)));//Wait for empty transmit buffer UDR = data; } void main(){ byte chr; = = = = =

8 Data, 2 Stop, No Parity Off On Asynchronous 9600

0x00; (1<<TXEN); //Transmitter Enable (1<<URSEL)|(1<< USBS)|(1<<UCSZ1)|(1<<UCSZ0); 0x00; 0x4D;

//0x41->A //0x5A->Z usart_init(); for(chr=0x41; chr<=0x5A; chr++){ usart_sendbyte(chr); }

Trang 6

+ K t qu :

***Ngu n tham kh o:
http://en.wikipedia.org/ http://atmel.com/

Trang 7

You might also like