Professional Documents
Culture Documents
i hc Bch Khoa H Ni
BI 1: M u
Gii thiu v h VK AVR. Cc php ton c bn. Thc hin ci t cc phn mm lin quan. Lm quen vi Atmega16.
vv . Tch hp nhiu chun giao tip ngoi vi : UART, USART , TWI , SPI . Di in p lm vic rng. Hot ng n nh ng tin cy. Chng loi phong ph ph hp vi nhiu mc ch s dng.
ATmega128
Cc php ton c bn
Php ton AND ( & ) :
Cu lnh trong C : Y = A & B ;
A 0 0 1 1
B 0 1 0 1
Y 0 0 0 1
Cc php ton c bn
Php ton OR ( | ) :
Cu lnh trong C : Y = A | B ;
A 0 0 1 1
B 0 1 0 1
Y 0 1 1 1
Cc php ton c bn
Php ton NOT ( ~ ) :
Cu lnh trong C : Y = ~A ;
A 0 1
Y 1 0
Cc php ton c bn
Php ton dch bt ( << , >> ) :
Cu lnh trong C :
Lm quen vi Atmega16
Gii thch cu lnh : Php ton |= : A |= B ; ~ A = A | B ; Tng t : A &= B; ~ A = A&B; A += B; ~ A = A+B; PAn (n : 0-7 ): Trong th vin < avr/io.h > cc chn PA0 n PA7 c nh ngha tng ng vi cc s nguyn t 0 7. Vy ta c : PORTA |= (1<<PA2); => PORTA = PORTA | (1*2^2) ;
PORTA
PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 0 0 0 0 0 0 0 0 0 0 0
PORTA
PA7 PA6 PA5 0 0 0 0 0 1 0 0
0 0 1 0 0
Tng t khi ta mun t 1 bit v 0: PORTA &= ~ ( 1 << PA2 ); => PORTA &= ~ 0b 0000 0100 ; => PORTA = PORTA & 0b 1111 1011 ;
PORTA
PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 1 1 1 1 1 1 1 1 1 1 1
PORTA
PA7 PA6 1 1 1 1 1 0 1 1
&
1 1 0 1 1
nh sau
Set ln 1 : Tn_thanh_ghi | = (1 << Tn_bit ); PORTB |= (1<<PB2); Set v 0 : Tn_thanh_ghi &= ~ (1 << Tn_bit ); PORTB&=~(1<<PB3);
Thc hin set bit : DDRA |= ( 1<< DDAn ); // vi chn tng ng l u ra. DDRA &= ~( 1<< DDAn ); // vi chn tng ng l u vo.
tr u vo. Ch c c .
Cch kim tra cc chn vo: if (PINA == 0b00000100) // Kim tra chn 2 ca PORTA c // phi mc 1 khng. { /*code*/}
khi c nhiu phm n ng thi th khng nhn bit c => cn thc hin kim tra c lp theo u vo => If (!( PINA & ( 1<< PA2 ))) {/* code */} Vic s dng phm bm theo dng ny i hi VK phi hot ng lin tc ( ch hi vng )
trung tm , yu cu tm dng tt c cc cng vic khc u tin thc hin cng vic m ngt yu cu. Khi c tn hiu ngt , cc chng trnh ang chy s c lu vo cc ngn xp , b x l trung tm s gi 1 chng trnh phc v ngt tng ng vi ngt c yu cu thc hin cc thao tc x l ngt , sau khi thc hin xong chng trnh con phc v ngt , chng trnh s quay tr v trng thi trc .
INT1 : Cho php ngt chn INT1 INT0 : Cho php ngt chn INT0 INT2 : Cho php ngt chn INT2
INTF1 : c set ln 1 khi xy ra ngt sn hoc thay i mc logic chn INT1. Lun l 0 khi l ngt mc. INTF0 : c set ln 1 khi xy ra ngt sn hoc thay i mc logic chn INT0. Lun l 0 khi l ngt mc. INTF2 : c set ln 1 khi xy ra ngt chn INT2.
void main() { DDRA = 0xFF; DDRB = 0xFF; DDRD = 0x00; PORTD = 0xFF; PORTB = 0x00; MCUCR &=~ ((1<<ISC11)|(1<<ISC10)); // ngat muc thap o chan ngat INT1 GICR |= (1<<INT1); // cho phep ngat ngoai sei(); // cho phep ngat toan cuc while(1) { for(x=0;x<8;x++) { PORTB =(1<<x); _delay_ms(100); } } }
B Timer/Counter
M t:
Atmega16 c 2 Timer/Counter 8 bits v 1 Timer/Counter
16 bits
Timer/Counter0 : 8 bits. Timer/Counter1 : 16 bits. Timer/Counter2 : 8 bits.
B Timer/Counter
Cc chn ca b timer/counter:
Timer/Counter 0:
T0 ( PB0 ) : OC0 ( PB3 ) :
Timer/Counter 1:
T1 ( PB1) :
OC1A ( PD5 ): OC1B ( PD4 ) : ICP ( PD6 ) :
Timer/Counter 2:
OC2 ( PD7 ) :
B Timer/Counter
Cc vn trong bi hc:
Cc vn c bn ca b Timer/Counter. S dng Timer/Counter nh 1 b Timer. S dng Timer/Counter nh 1 b Counter. S dng Timer/Counter lm b PWM ( Pulse Width
Modulation ).
B Timer/Counter
Cc vn c bn:
L Module c lp so vi CPU. Chc nng chnh l lm b nh thi (timer) v b m s
kin (counter). 3 b Timer/Counter ca ATmega16 u c b canh chnh thi gian ( Caliration ) s dng trong cc ng dng thi gian thc rt tin li. Thng thng 1 b Timer/Counter s c cc ch hot ng : Normal Mode , CTC Mode , PWM Mode.
Kho st Timer/Counter0
Cc nh ngha quan trng cn nm c:
BOTTOM : gi tr nh nht m 1 T/C c th m c ,
gi tr ny bng 0. MAX : gi tr ln nht m 1 T/C c th m c , gi tr ny ph thuc vo phn gii ca T/C . VD: T/C0 l T/C 8bits => MAX = 2^8 - 1 = 255. BOTTOM v MAX l 2 hng s i vi 1 T/C. TOP : L gi tr m khi T/C t ti n s thay i trn thi. BOTTOM TOP MAX . Gi tr TOP c thit lp thng qua 1 thanh ghi ng vi mi T/C.
Kho st Timer/Counter0
Cc thanh ghi iu khin Timer/Counter :
TCCR0 : Time/Counter Control Register :
Kho st Timer/Counter0
TCCR0 : Time/Counter Control Register :
Kho st Timer/Counter0
i vi cc ch khng phi PWM
i vi ch Fast PWM
Kho st Timer/Counter0
i vi cc ch Phase Correct PWM Mode
Kho st Timer/Counter0
Cc thanh ghi iu khin Timer/Counter :
TCCR0 : Time/Counter Control Register :
Kho st Timer/Counter0
Cc ch chia tn :
Kho st Timer/Counter0
TCNT0 : Time/Counter Register :
Thanh ghi ny lm nhim v lu gi tr m ca b T/C . Gi tr ca thanh ghi ny s tng 1 n v sau mi khong thi gian c nh sn trong qu trnh chia tn. Mi khi gi tr ca TCNT bng vi gi tr ca thanh ghi OCR s xy ra 1 s kin ngt v chn OC0 s cho ra dng sng c thit lp mode .
Kho st Timer/Counter0
OCR0 : Output Compare Register :
Kho st Timer/Counter0
TIMSK : Time/Counter Interrupt Mask :
Bit OCIE0 : Cho php ngt khi thanh ghi OCR = TCNT Bit TOIE0 : Cho php ngt trn Timer/Counter0.
B Timer/Counter
S dng T/C nh 1 b Timer:
M t hot ng :
( Normal Mode ) Trong ch Normal Mode thanh ghi TCNT tng gi tr ca n ln 1 n v sau mi 1 khong thi gian c nh trc trong qu trnh chia tn . Khi TCNT t gi tr bng MAX = 255 , n sinh ra mt ngt. Ta tn dng ngt ny bin T/C thnh 1 b Timer.
B Timer/Counter
1us 155 1us 156 157 (255-155) x 1us = 0.1ms 158 159 255
B Timer/Counter
S dng T/C nh 1 b Counter:
M t hot ng : ( Normal Mode )
Cc s kin c m t chn T0 v lu li s s kin trong thanh ghi TCNT.
B Timer/Counter
#include <avr/io.h> #include <util/delay.h> void main() { DDRD = 0xFF; // PORTD ra PORTD = 0x00; // muc thap , cho giong voi thanh ghi TCNT0 DDRB = 0x00; // PORTB dau vao cho chn T0 PORTB = 0xFF; // Muc cao TCCR0 |= (1<<CS01)|(1<<CS02); // su dung suon xuong de bat su kien TCNT0 =0;
B Timer/Counter
while(1) { if (TCNT0 == 200) TCNT0 = 0; // cho phep dem den 200 PORTD = TCNT0; } }
B Timer/Counter
S dng T/C lm b PWM:
M t hot ng :
( ch fast PWM ) T chn OC0 ca VK s c xung ra vi rng xung thay i c bng cch thay i gi tr ca OCR0 ( 0 255 ). Tn s ca chui xung ny c tnh bng cng thc:
B Timer/Counter
fPWM = 8/(8 x 256) = 0,004 Mhz
B Timer/Counter
#include <avr/io.h> void main() { DDRB = 0xFF; TCCR0 |= (1<<CS01); //chia tan 8 TCCR0 |= (1<<WGM01)|(1<<WGM00); // che do fast PWM OCR0 = 10; // khoi tao thanh ghi OCR0 TCCR0 |= (1<<COM01)|(1<<COM00); //chon che do OC0 =1 khi TCNT = OCR }
Khi USART
M t:
Atmega16 c 1 b USART ( Universal Synchronous/
Asynchronous serial Receiver and Transmitter) . y l khi giao tip ni tip rt linh hot :
Hot ng c ch song cng ( truyn nhn c lp ) Truyn thng ni tip ng b ( Synchronous )hoc khng
ng b ( Asynchronous ). ng b giao tip Master / Slave Gii tc truyn a cp Cho php s dng nhiu khung truyn : 5,6,7,8,9 Databits ; 1,2 Stopbit.
Khi USART
M t:
C kh nng to bit kim tra chn l v kim tra bit kim tra
chn l. C kh nng pht hin li trn C kh nng pht hin li khung truyn C kh nng x2 tc ch khng ng b C cc ngt pht hin: kt thc qu trnh nhn , thanh ghi truyn trng , kt thc qu trnh truyn
Khi USART
Cc chn ca khi USART:
Chn TXD ( PD1 ) :
Chn xut tn hiu ra ca khi USART. Chn RXD ( PD0 ) : Chn nhn tn hiu vo ca khi USART. =>> Mun 2 khi truyn thng ny giao tip vi nhau th phi kt ni TXD ca b ny vi RXD ca b kia. Chn XCK ( PB0 ) : Chn kt ni xung Clock ca cc b USART . Chn ny ch s dng trong ch ng b ( Synchronous )
Khi USART
Khung truyn:
St : Start bit : lun mc thp v ch c 1. Data bits : 5, 6, 7, 8 hoc 9 bits. Khng c Parity bit , Parity bit chn , Parity bit l. Sp : Stop bit : 1 hoc 2 Stop bit : lun mc cao. IDLE : khng c giao tip ( mc cao ).
Khi USART
Gii thch v khung truyn
Start bit: L bt u tin c gi i thng bo vi bn nhn l c d liu ang c gi ti.
Stop bit:
L bt cui cng thng bo kt thc 1 khung truyn .
Parity bit:
Nu c s dng th bt ny nm gia data bit cui cng v
Parity chn : l kt qu ca php XOR cc databit v bit 0. Parity l : l kt qu ca php XOR cc databit v bit 1.
Khi USART
Gii thch v khung truyn
Cc data bit:
Cc data bit s c kim tra bng tc truyn Baudrate.
Kt lun : 2 khi giao tip c vi nhau th: C cng 1 khung truyn ( frame format ). Phi c cng tc truyn ( baud rate ).
Khi USART
Cc thanh ghi :
UDR ( USART Data buffer Register )
Thanh ghi d liu ca khi USART. Khi truyn thi y l thanh ghi ghi d liu cn truyn. Khi nhn thanh ghi ny ghi d liu nhn. Phn bit ? Thanh ghi ny ban u mc nh l nhn Mun ghi d liu gi i th trc cn UCSRA |= ( 1<< UDRE ). Sau khi ghi d liu xong , b Transmitter c khi ng th d liu ny s c chuyn vo thanh ghi dch khi thanh ghi trng, ri d liu c truyn i.
Khi USART
Cc thanh ghi :
UCSRA ( USART Control and Status Register A)
RXC : Receive complete : Set ln 1 khi trong UDR c d liu cha c c. Xa v 0 khi b m trng. TXC : Transmit complete : Set ln 1 khi ton b d liu trong thanh ghi dch c y ra ngoi v khng c d liu mi xut hin trong UDR. T v 0 khi chng trnh con phc v ngt c gi, hoc ngi dng c th xa bng cch ghi 0 vo.
Khi USART
Cc thanh ghi :
UCSRA ( USART Control and Status Register A)
UDRE: UDR is Empty: Set ln 1 khi UDR trng v sn sng nhn d liu mi. Xa v 0 khi b m trng. FE : Frame Error : Set ln 1 khi xy ra li khung truyn. 0 khi khng c li khung truyn Lun t bit ny l 0 khi tc ng vo UCSRA
Khi USART
Cc thanh ghi :
UCSRA ( USART Control and Status Register A)
DOR : Data Over Run : Set ln 1 khi xy ra s c trn d liu: ang c d liu trong b m , c d liu trong thanh ghi dch v ng thi pht hin 1 start bit mi. Xa v 0 khi c thao tc c d liu t UCR Khi s dng thanh ghi UCSRA th phi bit ny l 0 PE : Parity Error : Set ln 1 khi xy ra li bit kim tra chn l. Xa v 0 khi c thao tc c d liu t UCR
Khi USART
Cc thanh ghi :
UCSRA ( USART Control and Status Register A)
U2X : Double the USART Transmittion speed : Ch c tc dng vi ch Asynchronous. MPCM : Multi processor Communication Mode : Khi set ln 1 , tt c cc khung truyn khng c a ch s b loi b.
Khi USART
Cc thanh ghi :
UCSRB ( USART Control and Status Register B)
RXCIE : RX Complete Interrupt Enable : Cho php ngt khi nhn xong. TXCIE : TX Complete Interrupt Enable : Cho php ngt khi nhn xong. UDRIE : UDR Empty Interrupt Enable: Cho php ngt khi UDR trng.
Khi USART
Cc thanh ghi :
UCSRB ( USART Control and Status Register B)
RXEN : RX Enable : Cho php nhn. TXEN : TX Enable : Cho php truyn. UCSZ2 : Character size: s lng databit kt hp cng UCSZ1, UCSZ0 thanh ghi UCSRC xc nh s databit.
Khi USART
Ch s data bit:
Khi USART
Cc thanh ghi :
UCSRB ( USART Control and Status Register C)
URSEL: Bit ny l 1 th thanh ghi ny l UCRSC ( chnh n :D ) Bit ny l 0 th thanh ghi ny tr thnh UBRRH s dng set Baudrate. UMSEL : Mode Select : Chn ch : Set ln 1: ch ng b Synchronous. Set v 0 : ch khng ng b Asynchronous.
Khi USART
Cc thanh ghi :
UCSRB ( USART Control and Status Register C)
Khi USART
Cc thanh ghi :
UCSRB ( USART Control and Status Register C)
USBS: Stop Bit Select : 0 : 1 Stop bit. 1 : 2 Stop bits. UCPOL : Clock Polarity : Ch s dng trong ch Synchronous. Trong ch Asynchronous bit ny l 0. Chn sn ly mu tn hiu .
Khi USART
Cc thanh ghi :
UBRRL v UBRRH ( Baudrate Register )
URSEL : bit chn = 0 th l UBRRH Khi set baudrate ta tra bng v gn gi tr cho UBRRH v UBRRL
Khi USART
M phng :
Thc hin giao tip truyn thng ni tip gia 2 VK. Yu cu khung truyn : 8 data bits , 1 stop bit , no parity ,