Friday, March 15, 2019

Лабораторын ажлын даалгавар №15 (Revised 2019.03.16)

Лаб №15 Atmel Studio 7.0, USBASP Programator, Win AVR суулгах, ATMega Микроконтроллёр

1. Ажлын зорилго
   1. USB Programator USBASP-г суулгах
   2. Atmel Studio 7.0 & WinAVR суулгах
   3. ATMega 16/32 микроконтроллёртой танилцах
   4. ATMega 16/32 микроконтроллёр ашиглан LED асааж / унтраах 

2. Лабораторын ажлын даалгавар

(1) USB Programator USBASP-г суулгах:

1. USB портоор холбогдох ATMega чипийг програмчлах програмaтор
2. http://www.fischl.de/usbasp/ драйвер татаж авах
3. Универсал USB драйвер Zadig-г татан авч USBASP Programator-г таниулахдаа доорх файлыг сонгож install хийнэ
=================
libusb-win32 (v1.2.6.0)
=================
4. Зөв суусан бол дараах мэдээлэл гарна: Device manager дээр Atmel USB Devices доор USBasp гэж танина.

(2) Atmel Studio 7.0 & WinAVR суулгах

1. ATMEL Studio 7.0 (http://www.atmel.com/microsite/atmel-studio/) суулгах
2. WinAVR(2010) суулгах
3. ATMEL Studio-ийн Tools -> External Tools- руу орох
4. Title хэсэг дээр USBASP гэж бичих
5. Command дээр browse хийж avrdude.exе-г дуудах (C:\WinAVR-20100110\bin\avrdude.exe)
6. Энэ үед WinAVR суулгасны хэрэг гарна
7. Argument хэсэгт:  -p m16 -c usbasp -P usb -U flash:w:"$(ProjectDir)Debug\$(TargetName).hex":i гэж бичих
8. Use output-г check хийх ==>Apply==>OK
9. Tools menu дотор USBASP гэсэн товч үүснэ==>hex file-г uC-руу шарна.

(3) ATMega 16/32 Микроконтроллёр
1. 16, 32, 64, 128, 328KB: Programmable flash memory
2. Program memory: Limited memory
3. Limited speed: External crystal
4. 8 bit CPU

5. ATMega 16 / 32 Микроконтроллёр порт
ATmega16 тус бүр нь 8 битийн гаралт бүхий 4 порттой, нийт 4* 8 = 32 хөл (pin)
PORTA (PA0-PA7)
PORTB (PB0-PB7)
PORTC (PC0-PC7)
PORTD (PD0-PD7)
Эдгээр 4 портууд нь ерөнхий зориулалтын оролт/гаралтаар хэрэглэгдэнэ. Порт бүр нь гурван оролт/гаралтын регистерүүдийг ашиглан оролтоор эсвэл гаралтаар тохируулагдан ашиглагдана.

6. ATMega 16 / 32 Оролт / Гаралтын регистер 
Порт бүрд гурван төрлийн оролт / гаралтын регистер байна
Өгөгдөлийн регистер /Data register/: PORTx
Өгөгдөлийн чиглэлийн регистер /Data direction register/: DDRx
Оролтын хөлний хаягийн регистер /Input pins address register/: PINx
х: A, B, C, D портуудын аль нэгийг нь заана.

7. DDRx: Data Direction Регистер (8 Bit) 
Портыг оролт / гаралт ашиглах эсэхийг тохируулна
Регистерт 1-ийг бичвэл тухайн хөлийг гаралтаар ашиглана
Регистерт 0-ийг бичвэл тухайн хөлийг оролтоор ашиглана
Регистерийн бүх битүүдийг уншиж / бичиж болно
Анхны утга нь бүгд тэг
Жишээ:
Setting Port D as an output port: DDRD = 0xFF;
Setting Port D as an input port: DDRD = 0x00;
Хэрэв портыг оролтоор ашиглах бол Pull-Up R-ийг идэвхжүүлнэ.
DDRB=DDRB &(~(1<<PB2));
PORTB=PORTB | (1<<PB2);

8. PORTx: Data Регистер (8 бит)
Портын хөлнүүд рүү өгөгдөл бичих регистер
Портны хөлнүүдэд логик өндөр (High), нам (Low) түвшний хүчдэл өгнө
Регистерийг нэг болгох үед тухайн хөл рүү 5В буюу логик өндөр түвшин гарна
Регистерийг тэг болгох үед тухайн хөл рүү 0В буюу логик нам түвшин гарна
Анхны утга нь бүгд тэг

PORTx: Data Регистер Жишээ: 
PORTD = 0x55;
Портын заасан хөл рүү нэгийг бичихэд OR-ийг ашиглана
PORTD = PORTD | (1<<3);
Портын заасан хөл рүү тэгийг бичихэд AND болон NOT-ийг ашиглана
PORTD = PORTD & (~(1<<3));
Портын заасан хөл рүү toggle /Сэлгэх/ хийхэд XOR-ийг ашиглана
PORTD = PORTD ^ (~(1<<3));
Портыг шалгах: Порт А-ын 2-р хөл 1-тэй тэнцүү эсэх
if(PORTA & (1<<2);

9. PINx: Input Pins Address Register (8 Bit)
Портны хөлнүүдээс утга уншихад ашиглана
Зөвхөн унших үйлдэл хийнэ, бичих боломжгүй
Жишээ:
We will read the value on Port D in an 8 bit variable named ‘port_value’.
port_value = PIND; 

10. LED асаах / унтраах
Port D-ийн 3-р хөлөнд гэрлэн диод холбосон. Ихэнх LED нь 10мА гүйдлээр гэрэлтдэг (Max утгаас хэтэрвэл шатна, Мах утга: 20-30мА). Гүйдлийг хязгаарлахын тулд эсэргүүцэл тавина.
Диод 0.7В-р бүрэн нээгдэж, 10мА-р асна.

1) 1ш LED-г 1Гц-н давтамжтой унтрааж асаах код бичих
2) 2ш LED-г ээлжилж асаах код бичих
3) 3ш LED-г 1сек-н зайтай ээлжилж асах код бичих
4) 4ш LED-г 2, 2-р нь сөөлжилж асах код бичих

3. Лабораторийн тайлан
1.  Си програм дээр бичсэн кодоо бичиж тайлбарлах
2.  Бодлогын алгоритмоо тайлбарлах
3.  Лабораторын ажлаар олж авсан мэдлэгээ дүгнэж бич

4. Лабораторийн тайлан өгөх, хамгаалах
1.  Лаб-ын тайланг бусдаас хуулахгүй, өөрийн хийсэн зүйлийг бичнэ.
2. Лаб-ын ажлын тайланг дараагийн лаб орохын өмнө багшид цаасан дээр хэвлэж өгч хамгаална.

No comments:

Post a Comment