CÂU H I ÔN T P MÔN H C
VI X LÝ VÀ VI ĐI U KHI N
-T t c các chip trong h AVR đu bao g m 32 thanh ghi Register File có đa ch tuy t đi t
0x0000 đn 0x001F.ế
-Và ph n n m ngay sau register file, ph n này bao g m 64 thanh ghi đc g i là 64 thanh ghi ượ
nh p/xu t (64 I/O register) hay còn g i là vùng nh I/O (I/O Memory). Vùng nh I/O là c a ngõ
giao ti p gi a CPU và thi t b ngo i viế ế
Câu 1. S khác nhau gi a Vi đi u khi n 8 bit và 16 bit?
-Thanh ghi là các ô nh đc bi t,đc s d ng đ l u tr t m th i các l nh và d li u thông ượ ư
qua vi c l u tr các giá tr 0 và 1. ư
-Vdk 8 bit là vdk có nh ng thanh ghi có 8 bit nh và b x lí s h c trên các toán h ng 8 bit (tr
tr ng h p ghép 2 thanh ghi High và Low đ đc 16 bit),vdk 16bit có nh ng thanh ghi có 16 bit ườ ượ
nh và b x lí s h c trên các toán h ng 16 bit là ch y u. ế
Câu 2.So sánh Vi đi u khi n có ki n trúc Von-Neumann và Vi đi u khi n có ki n trúc ế ế
Havard?
-Von-Neuman: Trong ki n trúcế von Neumann không phân bi t vùng ch a d li u và mã ch ng ươ
trình. C ch ng trình và d li u đu đc truy nh p theo cùng m t đng. Đi u này cho phép ươ ượ ườ
đa d li u vào vùng mã ch ng trình ROM, và cũng có th l u mã ch ng trình vào vùng d ư ươ ư ươ
li u RAM và th c hi n t đó.
-Ki n trúcế Havard tách/phân bi t vùng l u mã ch ng trình và d li u. Mã ch ng trình ch có ư ươ ươ
th đc l u và th c hi n trong vùng ch a ROM và d li u cũng ch có th l u và trao đi trong ượ ư ư
vùng RAM.
- u đi m n i b t c a c u trúc b nh Harvard so v i ki n trúc von Neumann là có hai kênh tách Ư ế
bi t đ truy nh p vào vùng b nh mã ch ng trình và d li u nh v y mà mã ch ng trình và ươ ươ
d li u có th đc truy nh p đng th i và làm tăng t c đ lu ng trao đi v i b x lý. ượ
Câu 3.Truy n nh n n i ti p UART gi a hai Vi đi u khi n ,gi a vdk và máy tính ế
-Truy n thông n i ti p :d li u đc truy n t ng bit trên 1 (ho c m t ít) đng truy n. ế ượ ườ
-Khái ni m “đng b đ ch s “báo tr c” trong quá trình truy n ướ
-Truy n thông “không đng b ” ch c n m t đng truy n cho m t quá trình. “Khung d li u” ườ
đã đc chu n hóa b i các thi t b nên không c n đng xung nh p báo tr c d li u đn.ượ ế ườ ướ ế
-Baud rate (t c đ Baud):Ph i gi ng nhau trên các thi t b ế
-Frame (khung truy n): Khung truy n bao g m các quy đnh v s bit trong m i l n truy n, s
l ng các bit trong 1 data ,các bit “báo” nh bit Start và bit Stop, các bit ki m tra nh Parity;tuân ượ ư ư
theo 1 quy t c nh t đnh đ tránh m t ho c sai d li u.
-Start bit: bit đu tiên,báo cho thi t b nh n bi t r ng có m t gói d li u s p đc truy n t i. ế ế ượ
-Data: là thông tin chính mà chúng ta c n g i và nh n.
Trang 1/14
-Parity bit: parity là bit dùng ki m tra d li u truy n đúng không.
-Stop bits: là m t ho c các bit báo cho thi t b nh n r ng m t gói d li u đã đc g i xong. ế ượ
*)Truy n thông n i ti p không đng b v i AVR (UART) ế
G m:chân xung nh p - XCK, chân truy n d li u – TxD (Transmitted Data) và chân nh n d li u
– RxD (Reveived Data).
1. Thanh ghi:
Cũng nh các thi t b khác trên AVR, t t c ho t đng và tráng thái c a module USART ư ế
đc đi u khi n và quan sát thông qua các thanh ghi trong vùng nh I/O. Có 5 thanh ghi đc ượ ượ
thi t k riêng cho ho t đng và đi u khi n c a USART, đó là:ế ế
-UDR: hay thanh ghi d li u, là 1 thanh ghi 8 bit ch a giá tr nh n đc và phát đi c a USART. ượ
Th c ch t thanh ghi này có th coi nh 2 thanh ghi TXB (Transmit data Buffer) và RXB (Reveive ư
data Buffer) có chung đa ch . Đc UDR thu đc giá tr thanh ghi đm d li u nh n, vi t giá tr ượ ế
vào UDR t ng đng đt giá tr vào thanh ghi đm phát, chu n b đ g i đi. Chú ý trong các ươ ươ
khung truy n s d ng 5, 6 ho c 7 bit d li u, các bit cao c a thanh ghi UDR s không đc s ượ
d ng
UCSRA (USART Control and Status Register A): là 1 trong 3 thanh ghi đi u khi n ho t đng c a
module USART.
Thanh ghi UCSRA ch y u ch a các bit tr ng thái nh bit báo quá trình nh n k t thúc ế ư ế
(RXC), truy n k t thúc (TXC), báo thanh ghi d li u tr ng (UDRE), khung truy n có l i (FE), d ế
li u tràn (DOR), ki m tra parity có l i (PE).
+UDRE (USART Data Register Empty) khi bit bày b ng 1 nghĩa là thanh ghi d li u UDR đang
tr ng và s n sàng cho m t nhi m v truy n hay nh n ti p theo. Vì th n u b n mu n truy n d ế ế ế
li u đu tiên b n ph i ki m tra xem bit UDRE có b ng 1 hay không, sau khi ch c ch n r ng
UDRE=1 hãy vi t d li u vào thanh ghi UDR đ truy n đi.ế
+U2X là bit ch đnh g p đôi t c đ truy n, khi bit này đc set lên 1, t c đ truy n so cao g p 2 ượ
l n so v i khi bit này mang giá tr 0.
+MPCM là bit ch n ch đ ho t đng đa x lí (multi-processor). ế
-UCSRB (USART Control and Status Register B): đây là thanh ghi quan tr ng đi u khi n
USART. Vì th chúng ta s kh o sát chi ti t t ng bit c a thanh ghi này.ế ế
+RXCIE (Receive Complete Interrupt Enable) là bit cho phép ng t khi quá trình nh n k t thúc. ế
Vi c nh n d li u truy n b ng ph ng pháp n i ti p không đng b th ng đc th c hi n ươ ế ườ ượ
Trang 2/14
thông qua ng t, vì th bit này th ng đc set b ng 1 khi USART đc dung nh n d li u. ế ườ ượ ượ
- TXCIE (Transmit Complete Interrupt Enable) bit cho phép ng t khi quá trình truy n k t thúc. ế
- UDRIE (USART Data Register Empty Interrupt Enable) là bit cho phép ng t khi thanh ghi d
li u UDR tr ng.
- RXEN (Receiver Enable) là m t bit quan tr ng đi u khi n b nh n c a USART, đ kích ho t
ch c năng nh n d li u b n ph i set bit này lên 1.
- TXEN (Transmitter Enable) là bit đi u khi n b phát. Set bit này lên 1 b n s kh i đng b
phát c a USART.
- UCSZ2 (Chracter size) bit này k t h p v i 2 bit khác trong thanh ghi UCSRC quy đnh đ dài ế
c a d li u truy n/nh n. Chúng ta s kh o sát chi ti t khi tìm hi u thanh ghi UCSRC. ế
- RXB8 (Receive Data Bit 8) g i là bit d li u 8. B n nh l i r ng USART trong AVR có h tr
truy n d li u có đ dài t i đa 9 bit, trong khi thanh ghi d li u là thanh ghi 8 bit. Do đó, khi có
gói d li u 9 bit đc nh n, 8 bit đu s ch a trong thanh ghi UDR, c n có 1 bit khác đóng vai ượ
trò bit th chín, RXD8 là bit th chín này. B n chú ý là các bit đc đánh s t 0, vì th bit th ượ ế
chín s có ch s là 8, vì l đó mà bit này có tên là RXD8 (không ph i RXD9).
- TXB8 (Transmit Data Bit 8), t ng t nh bit RXD8, bit TXB8 cũng đóng vai trò bit th 9 ươ ư
truy n thông, nh ng bit này đc dung trong lúc truy n d li u. ư ượ
-UCSRC (USART Control and Status Register C): thanh ghi này ch y u quy đnh khung truy n ế
và ch đ truy n. Tuy nhiên, có m t r c r i nho nh là thanh ghi này l i có cùng đa ch v i ế
thanh ghi UBRRH (thanh ghi ch a byte cao dùng đ xác l p t c đ baud), nói m t cách khác 2
thanh ghi này là 1. Vì th bit 7 trong thanh ghi này, t c bit URSEL là bit ch n thanh ghi. Khi ế
URSEL=1, thanh ghi này đc chip AVR hi u là thanh ghi đi u khi n UCSRC, nh ng n u bit ượ ư ế
URSEL=0 thì thanh ghi UBRRH s đc s d ng. ượ
Các bit còn l i trong thanh ghi UCSRC đc mô t nh sau: ượ ư
- UMSEL (USART Mode Select) là bit l a ch n gi a 2 ch đ truy n thông đng b và không ế
đng b . N u ế UMSEL=0, ch đ không đng b đc ch n, ng c l i n u UMSEL=1, ch đế ượ ượ ế ế
đng b đc kích ho t. ượ
- Hai bit UPM1 và UPM0( Parity Mode) đc dùng đ quy đnh ki m tra pariry. N u ượ ế
UPM1:0=00, parity không đc s d ng (mode này khá thông d ng), UPM1:0=01 không đc sượ ượ
d ng, UPM1:0=10 thì parity ch n đc dùng, UPM1:0=11 parity l đc s d ng (xem thêm ượ ượ
b ng 1).
B ng 1: ch n ki m tra parity.
Trang 3/14
- USBS (Stop bit Select), bit Stop trong khung truy n b ng AVR USART có th là 1 ho c 2 bit,
n u USBS=0 thì Stop bit ch là 1 bit trong khi USBS=1 s có 2 Stop bit đc dùng.ế ượ
- Hai bit UCSZ1 và UCSZ2 (Character Size) k t h p v i bit UCSZ2 trong thanh ghi UCSRB t o ế
thành 3 bit quy đnh đ dài d li u truy n. B ng 2 tóm t t các giá tr có th có c a t h p 3 bit
này và đ dài d li u truy n t ng ng. ươ
B ng 2: đ dài d li u truy n.
- UCPOL (Clock Pority) là bit ch c c c a xung kích trong ch đ truy n thông đng b . n u ế ế
UCPOL=0, d li u s thay đi thay đi c nh lên c a xung nh p, n u UCPOL=1, d li u thay ế
đi c nh xu ng xung nh p. N u b n s d ng ch đ truy n thông không đng b , hãy set bit ế ế
này b ng 0..
-UBRRL và UBRRH (USART Baud Rate Register): 2 thanh ghi th p và cao quy đnh t c đ
baud.
- Nh c l i là thanh ghi UBRRH dùng chung đa ch thanh ghi UCSRC, b n ph i set bit này
b ng 0 n u mu n s d ng thanh ghi UBRRH. Nh b n quan sát trong hình trên, ch có 4 bit th p ế ư
c a UBRRH đc dùng, 4 bit này k t h p v i 8 bit trong thanh ghi UBRRL t o thành thanh ghi ượ ế
12 bit quy đnh t c đ baud. Chú ý là n u b n vi t giá tr vào thanh ghi UBRRL, t c đ baud s ế ế
t c thì đc c p nh t, vì th b n ph i vi t giá tr vào thanh ghi UBRRH tr c khi vi t vào thanh ượ ế ế ướ ế
ghi UBRRL.
-Giá tr gán cho thanh ghi UBRR không ph i là t c đ baud, nó ch đc USART dùng đ tính ượ
t c đ baud.
- Đ s d ng module USART trên AVR b n ph i th c hi n 3 vi c quan tr ng, đó là: cài đt t c
đ baud (thanh ghi UBRR), đnh d ng khung truy n (UCSRB, UCSRC) và cu i cùng kích ho t
b truy n, b nh n, ng t…
*)Truy n nh n n i ti p UART gi a hai Vi đi u khi n ế
Đu chéo TxD c a vdk này v i RxD c a vdk khác và ng c l i. ượ
Truy n d li u:
void uart_tx_setup(){
//set baud,f=8Mhz
UBRRH=0;
Trang 4/14
UBRRL=51; //9600 bps
//set khung truyen va kich hoat bo nhan du lieu
UCSRA=0x00;
UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //du lieu 8bit
UCSRB=(1<<TXEN); //cho phep truyen
while (bit_is_clear(UCSRA,UDRE)); //cho den khi bit UDRE=1
// truy n d li u.......
}
-Nh n d li u: chúng ta có 2 cách đc d li u nh n v . Cách th nh t là cách h i vòng
(polling), ki m tra n u bit RXC = 1 thì đc giá tr thanh ghi UDR (và đc c bit RXB8 trong ế
thanh ghi UCSRB n u frame truy n 9 bit đc dùng). Cách th hai là s d ng ng t “nh n hoàn ế ượ
t t” (Receive Complete Interrupt), b ng cách set bit cho pháp ng t nh n hoàn t t, t c bit RXCIE
trong thanh ghi UCSRB, và bit cho phép ng t toàn c c (bit I, xem l i bài 3) thì m t ng t s x y ra
khi d li u đã đc nh n và ch a trong thanh ghi UDR, chúng ta ch c n đc giá tr c a thanh ghi ượ
UDR trong trình ph c v ng t là xong.
-Code nh n d li u b ng ph ng pháp ng t ươ
void uart_rx_setup(){
//set baud,f=8Mhz
UBRRH=0;
UBRRL=51; //9600 bps
//set khung truyen va kich hoat bo nhan du lieu
UCSRA=0x00;
UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);// cho phep truyen,nhan,ngat RxD
sei(); //cho phep ngat toan cuc
}
ISR(SIG_UART_RECV){ //trinh phuc vu ngat USART hoan tat nhan
//đc d li u trong UDR.....
}
*)Giao ti p AVR v i máy tínhế
Giao ti p thông qua c ng COM là giao ti p theo chu n n i ti p RS232ế ế ế
Chu n RS232
-Là chu n giao ti p n i ti p không đng b ,kho ng cách k t n i 12,5m đn 25,4m ế ế ế ế
-Đc đi m:
+ M c gi i h n trên và d i (logic 0 và 1) là ±12V.M c logic 1 n m trong kho ng -12V đn ướ ế
-3V.M c logic 0 n m trong kho ng 3V đn 12V. ế
+ T c đ truy n nh n d li u 20kbps,t i đa có th lên đn 100kbps. ế
Trang 5/14