Wednesday, September 29, 2010

AVR programmer


Өмнөх бичлэгээр AVR микроконтроллерийн программыг хэрхэн С хэл ашиглан бичих талаар бичсэн. Тэгвэл одоо компьютер дээр хөрвүүлсэн HEX кодоо чипрүүгээ хэрхэн хуулах (шарах), хуулах төхөөрөмж энгийн прогматорийн (programmer) талаар бичье. Энэхүү энгийн AVR прогматор нь төвөггүйгээр hex файлыг ихэнх АTMEL AVR микроконтроллерүүдэд харьцангуй бага хугацаанд хуулдаг. Уг прогматор нь бусад энгийн прогматоруудаас илүү найдвартай маш бага хугацаанд хуулах үйлдлийг гүйцэтгэдэг.
AVR прогматор нь сериал прогматор нөгөө талаас ажиллаж буй схемнээсээ микроконтроллын SPI холболтын хөлнүүд, RESET хөлийг гаргасан микроконтроллерийн хавтан хоёроос бүрддэг. Таньд контроллераа олон дахин програмчлах тохиолдол гарч магадгүй. Энэ үед эх хавтангаас гаргасан хөлнүүддээ прогматороо залгаад шархад л хангалттай.
AVR Сериал прогматор
Сериал прогматорын хэлхээний зураг

AVR
прогматорын PCB нүүрэн талаасаа

AVR
прогматорын PCB ар талаасаа

RS232
сериалийн залгуурт багтаасан байдал

AVR
сериал прогматор 6 хөлтэй байдлаар
AVR эх хавтан
Энэхүү эх хавтан AVR микроконтроллерийг програмчлахын тулд хамгийн бага элемент ашиглан жишээ болгож хийсэн бөгөөд шарсны дараа конроллераа өөр хэлхээнд тавин ашиглах боломжтой. Сериал прогматороо ашиглан ихэнх төрлийн AVR контроллерийг програмчлаж болох ба програм шарагдаж эхлэх үед RESET 0 болох учир өөр хэлхээг микроконтроллерын портуудад давхар угсарах боломжтой байдаг.

Микроконтроллерт програм шарах зориулалт бүхий эх хавтан. 28-DIP AVR ATmega8 микроконтроллер

Энд хоёр коннектор холбоно: Сериал прогматор, +5V –ийн гадаад тэжээл.
Эх хавтанд 28-DIP суурь, 4MHz осцеллатор, хоёр ширхэг 22pF туйлгүй конденсатор, мөн хоёр ширхэг толгой коннектороос бүрдэнэ. Хоёр хөлтэй коннектор нь AVR микроконтроллерийг тэжээх +5V –ийн тэжээл, 6-н хөлтэй коннекторт прогматороо холбоно.

Эх хавтан 28-DIP AVR ATmega8 микроконтроллер
+5V –ийн тэжээлийн хүчдэлийг энэ тохиолдолд компьютерын USB портноос авбал илүү тохиромжтой байж мэдэх юм.
PonyProg
Анхны бичлэгтээ AVR микроконтроллер ашиглах явцад хэрэглэгдэх программ хэрэгслүүдийг татаж авах холбоосыг тавьсан. Харин энэ програмыг дараах холбоосоос татаж авна уу. ТАТАХ . Энэ хэрэгсэл програм Windows XP, Windows Vista, 7 32 битийн үйлдлийн системтэй, компьютер сериал порттой байх шаардлагатай. Сүүлийн үед гарч буй ихэнх компьютерүүд сериал порт байхгүй, 64 битийн системүүдтэй байгаа тул дараагийн бичлэгтээ USB порт ашигласан, ямарч үйлдлийн системд ажиллах хялбар прогматорыг танилцуулах болно. PonyProg нь бидний ашиглах AVR прогматорт тохирох програм бөгөөд ажиллаж эхлэхээс өмнө "Setup" цэснээс "Interface Setup" –руу орон зурган дээрх дараах тохиргоог хийх шаардлагатай.

Дараагийн сонгох алхам "AVR micro" мөн өөрийн хэрэглэх гэж буй микроконтроллерийн төрлийг сонгож өгнө (Жишээ нь ATmega8).
Дараагий алхам бүрэн бичигдэж дууссан програмын HEX файлыг AVR микроконтроллерийн програмын флаш санах ойд шарж өгнө. Үүний тулд "File" цэснээс "Open Program (FLASH) File ..."-ийг сонгон нээгдсэний дараа hex файлыг дуудаж өгнө. Ингэснээр програмын дэлгэцэн дээр 16-тын тоонууд гарах болно. Төгсгөлд нь бүдэг бороор тодруулсан икон дээр дарж, эсвэл "Command" цэснээс "Write Program (FLASH)" гэсэн сонголтыг дарж шарах коммандыг өгнө.

"Yes"
товчлуур дээр дарж баталгаажуулна.
Комманд өгснөөр програм шарах (бичих) үйл явцыг прогресс хувиар харуулах ба шарж дууссаны дараа зөв шарагдсан үгүйг шалган дахин үйл явцыг харуулна. Хэрэв буруу шарагдсан тохиолдолд алдаа заан дахин шарахыг санал болгоно. Энэ үйл явц програмын багтаамжаас хамааран 10 -аас 30 секунд үргэлжилнэ.

Дараа нь програм бүрэн шарагдсан гэсэн мэдэгдэл ирэх ба энэ үед AVR микроконтроллер програмчлагдсан, ашиглахад бэлэн болсон байна.


AVR микроконтроллер

ATMEL AVR бүлийн 8 битийн микроконтроллерүүд нь электроник, робот сонирхогчдын дунд хэрэгцээ, нэр хүнд маш хурдан өсч байгаа микроконтроллер юм. Ингэж хэрэгцээ өсөх болсон шалтгаан нь дээд түвшины програмчлалын хэл C, хөгжих өндөх боломж бүхий open-source GNU хэрэгсэлүүд (gcc) ашигладаг, мөн олон нэмэлт интеграл хэлхээг өөртөө агуулсан нь түлхэц болсон. Програм бичихдээ ассамблер, С хэлийг аль нэгээр эсвэл бага зэрэг холих боломжтойгоос гадна, програмыг микроконтроллерт сериалаар бичдэг нь хүний ажилгааг тун төвөггүй болгодог. Иймд уг микроконтроллерийг хэрхэн хэрэглэдэг, С хэл хэл дээр хэрхэн програмчлах талаар энэхүү блогт бичлэг орууллаа.
С хэлээр програмчлах хэрэгсэлүүд
AVR бүлийн микроконтроллер дээр С хэл ашиглан програмчлахын тулд хоёр төрлийн хэрэгсэл програм хэрэгтэй: AVR Studio, WinAVR. Доорх өгөгдсөн линкүүдээр орон тус програмын хамгийн сүүлийн хувилбарыг үнэгүй татан авах боломжтой.
· AVR Studio нь програмыг өндөр нэгдэлтэйгээр хөгжүүлж болох орчин бөгөөд дотроо кодын алдаа хянагч, ассемблер, HEX файл татагч, микроконтроллерийн эмулатор давхар багтсан.
· WinAVR нь GCC дээр суурьласан AVR-ийн хөрвүүлэгч юм. Энэ програмыг AVR Studio-той давхар суулган С-гийн хөрвүүлэгч нь болгон ашигладаг ба эсвэл Notepad ашиглан кодоо бичин дуудаж хөрвүүлж болно.
Програмыг суулгах тун амархан. Эхлээд програмуудынхаа setup файлуудыг татан AVR Studio-г анхлан суулган дараа нь WinAVR-ийг суулгана. Програмын суулгахдаа сонголтуудаас анхлан сонгогдсон (default) сонголтуудыг зөвшөөрч өгөх хэрэгтэй.
AVR Studio ашиглан С хэлээр програмчлах
Жишээ болгож ATMEL AVR бүлийн микроконтроллеруудаас ATmega8-ийг сонгож 6-н оролтоос хамааран 6-н LED асах энгийн програм С хэл ашиглан бичье. Бидний ажил дараах дарааллын дагуу явагдах болно.
· AVR Studio дээр шинэ төсөл (project) үүсгэх
· C кодыг HEX файлруу хөрвүүлэх
1. AVR Studio дээр шинэ төсөл үүсгэх
· Эхлээд дараах сонголтыг сонгон програмыг ажлуулна. Start | Programs | Atmel AVR Tools |AVR Studio.
· Програмын цонх гарч ирсэний дараа Project | New Project цэсийг сонгоход зураг1-т үзүүлсэн цонх гарч ирнэ. Энэхүү цонхонд микроконтроллерийг ямар хэл ашиглан програмчлах, төслийн нэр үүсгэх газрыг зааж өгнө. Хэрэв та анхлан бичиж байгаа бол шинээр project-уудаа хадгалах хавтас (folder) үүсгэхийг зөвлөж байна. Бид project-ийнхаа нэрийг led гэж нэрлэн NEXT товчийг даран цааш үргэлжлүүлье.
Зураг1:
· Дараагийн алхам бол AVR-ийн ямар симулатор, микроконтроллерийг сонгох. Зураг2 –д өөрсдийн сонголтыг харуулав. Хэрэглэх симулатор, микроконтроллерийг сонгосны дараа FINISH товч дарж ажлын дэлгэцэнд шилжинэ.
Зураг2:
· Энэ үед шинэ project файл үүссэн байх ба код бичих цонход кодоо бичин хөрвүүлнэ. Жишээ болгож доорх лед асааж унтраах кодыг бичиж хөрвүүлж үзье.
Зураг3:
· Кодоо бичиж дууссаны дараа Project | Save Project цэсийг сонгон програмыг хадгална.
//*************************************************************************
// School of phycics & electronics 2010.09.29 lab106
//*************************************************************************
#include // avr толгой файл
int main(void)
{
unsigned char i; // хувьсагч зарлаж байна
DDRB = 0x00; // PORTВ-г оролт болгож зарлаж байна
PORTB =0xFF; //портыг pull up байхаар тохируулав
DDRC = 0xFF; // PORTС-г гаралт болгож зарлаж байна
PORTC = 0x00; // PORTС-д 0x00 гэсэн утга оноож байна
while(1) // Төгсгөлгүй давталт
{
// оролт PORTB-г уншаад утгыг i хувьсагчид оноо
// энэ портод 6-н товчлуур холбогдсон
i = PINB;
// i хувьсагчийн утгыг PORTC-д оноо
// энэ портын 6-н хөлөнд лэдүүд холбогдсон
PORTC = i;
}
return 1;
}
//**************************************************************************
Жишээ код 1:
2. С кодыг HEX файл болгон хөрвүүлэх
· Үндсэн цэснүүд дотроос Build | Rebuild All сонголтыг сонгон кодыг хөрвүүлнэ.
· Дээрх кодыг хөрвүүлэхэд led.hex файл үүсэх бөгөөд алдаа гараагүй байна. (Зураг4) HEX файл project-ийг үүсгэсэн хавтасанд \default гэсэн хавтас үүсгэн хадгалагдсан.

Зураг4: