Бележки микроконтролери Atmel AVR, от къде да започна

Имайте предвид, написана след като губи много време в търсене на информация за това как да се бързо да започнете работа с AVR, на която може да се появи в гребла и всичко останало. Информация онлайн, както обикновено куп, но на много вода, често противоречиви съвети и така нататък. Ето защо, той е роден тук е кратко обобщение.

AVR контролер изходните линии на логиката нула привличат много повече ток, така пряко чувство за активен ниво е ниско, като светодиоди 5 през резистор, а не обратното, и т.н.

Непредсказуемо, но не всички изходи пристанища са на разположение веднага след програмиране на светкавицата. Такива изводи могат да бъдат включени при интерфейса JTAG и четене / запис нищо не се случва. Всичко това се третира правилно инсталиране FUSE бита.

Ако има FUSE'y BODLEVEL0 / 1 /. те трябва да бъдат програмирани до съответното напрежение, когато се използва EEPROM. В този случай, когато властта е нищо в EEPROM не е объркан.

Много полезно да се използват UART да комуникира с компютъра. Цена на въпроса - един допълнителен чип MAX232 и четири кондензатори, а когато отстраняване на грешки възможност за отпечатване на нещо до пристанището е много пестене на време.

При изчисляване на необходимия размер Светкавицата винаги се умножава по 2. RISC код не е много компактен, освен AVR работи с думи, а не байта и 16 килобайта те са превърнати в 8 Kslov, по-правдоподобен.

Струваше ми се неразумно да прекарват времето си обучение друг монтаж, така че всички средства, които не поддържат програмиране в С не бях взети под внимание. Сухият остатък:
  • GCC AVR. Отворен код C / C ++ компилатор, линкер, и всичко останало. Всичко работи, но е повече или по-малко сложни функции на библиотека, трябва да напишете свой собствен достатъчно готов да се закълна.
  • AVR Studio. Някои не, но на среда за разработка, прозорци, менюта. Безплатна, но отново без никакви готови библиотеки Zaman. Може да използва AVR-GCC компилатор.
  • IAR Embedded Workbench за AVR. C / C ++. Срещу допълнително заплащане. Харесва ми тази чанта изглежда тежък, и няма време замислено vkurivat документация. Вие може да искате да погледнете, ако планирате постоянна работа с AVR.
  • CodeVision AVR. C ++ без. Срещу допълнително заплащане, но тя работи без лиценз за малки проекти. И работи под Win98, което позволява да карам навсякъде. Налице е генератор код за инициализиране на микроконтролер. Готови ли сте за библиотеката, също са с различни периферни устройства - LCD, температурни датчици, РТК, FAT файловата система и други. Спрях CodeVision AVR.

С и CodeVision AVR

изстрелване Setting CodeVision AVR не причинява проблеми.

При създаване на нов проект е много удобно CodeWidard, което от своя страна генерира код за инициализиране на контролера.

Библиотечни функции работят, но се натъкнах на някои от функциите:
  • delay_ms () нулира WDT. За това, което може да доведе обясня с пример. Според прекъсване на таймера се обслужва матрица клавиатура, която има обаждане delay_ms (). Ако основната програма podvisnet след рестартирането WDT няма да прекъсне тичам и WDT нулиране редовно. SPI и 1Wire функции работят, но те предполагат че забраната ще бъде прекъснато. Ако прекъсва работят часа и те не искат запушалка или поставят допълнителни RTC чип или да хване края на прекъсването, и наричат ​​функции веднага след прекъсването.
  • Ако е избрана грозен Чар на режим компилатор проект, не е възможно да се създаде един от подписа, например, следния код ще доведе до VISU: Visim, защото той все още неподписан и е винаги по-голям или равен на 0. Ужас!
Благодарение на архитектурата на AVR признаци могат да включват:
  • само указатели към RAM (ако изберете модел малка, а след това тези насоки 8-битов)
  • указатели към Flash, 16 бита, например флаш овъгляване []
  • указатели към EEPROM, 16 бита, например EEPROM овъгляване []

Показалки може да бъде нула. Някой каза, че ако (КОП == NULL)

Ето и кратко и всичко останало.