Поиск по этому блогу

5 янв. 2014 г.

Чем и как "прошить" МК AVR ? Как загрузить программу в микроконтроллер. Как запрограммировать микроконтроллер AVR.

Напоминаю: Об основах и тонкостях электроники и схемотехники читайте в настольной книге электронщика:  П.Хоровиц, У.Хилл. Искусство схемотехники на РУССКОМ языке.   
Я советую прошивать микроконтроллер прямо из программатора встроенного в компилятор CodeVisionAVR через простейший адаптер - буквально "пять проводков" соединяющих принтерный порт ПК с прошиваемым микроконтроллером AVR.
ПОДРОБНО: Результат написания и компиляции программы - файл-прошивку с расширением .hex (и возможно файл с содержимым для 
EEPROM 
МК) нужно записать ("зашить") в МК . МК AVR многократно программируются прямо в устройстве в котором будут работать - такое программирование называют - "ин систем программинн" или ISP.

Для этого установите на плате вашего устройства 6 контактов,  а лучше 6-ти штырьковый разъем для ISP
вид сверху платы на штырьки.
выводы подсоединить к МК в соответствии с указанными названиями.
Подробней по ISP разъемам посмотрите Апликейшн Ноут AVR910

Вывод 2 нужно подключить к 
+ питания МК если вы собираетесь использовать программатор питающийся от вашего же устройства - например фирменный ISP AVR.

Для "5 проводов" этот вывод не подключается. Для программирования достаточно 5 контактов. Соответственно и разъем который вы будете использовать может быть любым удобным для размещения на плате и имеющий минимум 5 контактов. Все контакты ISP разъема подсоединяются к  ножкам  МК в соответствии с названиями.
   
 
ВНИМАНИЕ !  в ATmega64 и ATmega128 выводы MOSI и MISO не применяют для ISP  Внимательно смотрите ДатаШит !     Например для ATmega128 сигналы MISOподключают к ножке PE1,  MOSI подключают к ножке PE0
 
   

Я советую вам пользоваться  интерфейсом программирования встроенным в компилятор CodeVisionAVR и конечно же в нем разрабатывать программу для МК.  Дело в том, что вам вряд ли удастся сразу написать программу без ошибок, даже после прогона в софт эмуляторе симуляторе ваше устройство может делать не то,  что вы от него ожидаете - значит в программу нужно будет вносить изменения и снова зашивать в МК , и так раз 20 и более.  
Вы можете в компиляторе CodeVisionAVR открыть меню "Проджект -> Конфига -> Афта Мэйк"  и отметить чек бокс  "Program the chip" затем ОК. Еще нужно в меню "Сеттинс  -> Программер" выбрать ваш адаптер (подробней ниже) для программирования. Теперь после безошибочной компиляции программы вам будет доступна кнопка "Program" - нажмите на нее и произойдет программирование МК - т.е. файл .hex будет загружен в память программ МК. Затем МК будет "сброшен" (на ножку RESET будет подан лог. 0 а затем опять "1") и начнет выполнять только что прошитую (загруженную в него) программу. Вам даже не нужно будет отсоединять адаптер программирования от вашего устройства  если вы не используете в устройстве последовательный интерфейс SPI.  ... и так до окончательной отладки устройства.
   
 
В А Ж Н О !  В диалоге настройки программирования не трогайте галочки установки фьюзов МК если не разобрались четко что они делают! Иначе вы можете отключить режим ISP или внутренний RC-генератор и для следующего программирования вам понадобится ставить кварц с конденсаторами или даже искать Параллельный программатор для AVRНо популярному ATtiny2313 даже параллельный программатор не поможет!  
 
   
в ATmegaXXX с завода включен внутренний RC генератор на  частоте 1 МГц   ( уточните это по ДШ  и его возможные частоты ) Если вам нужна другая частота или нужно включить внешний кварцевый или керамический резонатор - вам нужно запрограммировать некоторые фьюзы по таблицам из ДШ или по таблице фьюзов на стр. 2
З а п о м н и т е : 
  • НЕ запрограммированный  фьюз        1
  • ЗАпрограммированный   фьюз             0
Пример: Чтобы включить в ATmega16 внешний кварцевый резонатор с частотой от 3 до 8 МГц с конденсаторами (по схеме рис. 12 ДШ) найдите в ДШ раздел "System Clock".
В таблице 2 указаны комбинации фьюзов для разных источников тактового сигнала. Далее написано что с завода МК поставляется с такой комбинацией фьюзов
SKSEL   0001     SUT  10       CKOPT   1

По таблице 4  находим :
Для кварца с частотой от 3 до 8 МГц  нужны конденсаторы от 12 до 22 пФ и  вот  такая  комбинация  фьюзов :
SKSEL   1111     SUT  10       CKOPT   1
Установка фьюзов в программаторе компилятора  CVAVR

Для прошивания МК нажмите кнопку "Program All"
Для использования ATmega16 (и других мег) с внешним кварцевым или керамическим резонатором на частотах выше 8 МГц вам нужно установить фьюзы как в примере выше но запрограммировать CKOPT  - значит сделать его "0". Т.е. вам нужна такая комбинация:
SKSEL   1111     SUT  10       CKOPT   0
CKOPT   0  нужен и тогда когда вы хотите подключить к XTAL2 другой микроконтроллер или тактируемый прибор.
Фьюзы  SUT   - определяют запуск генератора тактового сигнала, в большинстве случаев их установку можно оставить "как с завода"  -   SUT  10   -  более детально это описано в даташите в таблицах до 12.
  Для соединения компьютера с ISP разъемом устройства на AVR Советую сделать адаптер от STK200  - это "правильные 5 проводков" с микросхемой буфером снижающим вероятность случайного повреждения порта ПК. В установках компилятора CodeVisionAVR интерфейс "5-проводков" называется  "Канда системз STK200+/300"


Программа узнаёт адаптер STK200 по перемычкам на разъеме параллельного порта к которому он подключается - должны быть соединены двумя перемычками пары выводы: 2 и 12,  3  и 11. 

   
 
Внимание!   Для программирования к МК должно быть подключено питание. Например +4...+5 вольт ко всем выводам МК в названии которых есть VCC  и 0 вольт ко всем выводам GND (это "общий" провод).     Пример тут
 
   

Попробуйте поискать полезную инормацию в Гугле - ее там море !  Учитесь искать!
 
Если в МК нет внутреннего генератора тактового сигнала (например старые AVR серии AT90sXXXX или мега побывавшая в чьих то шаловливых руках изменивших фьюзы до того как попасть к вам) то нужно подключить кварц  на 1 - 8 МГц и два конденсатора от 15 до 33 пФ. Либо подать тактовый сигнал 1-1.5 МГц от внешнего источника - например генератора на микросхеме 74hc14 или на таймере LM555.

Программатор  AVReAl  может программировать МК без кварца и без конденсаторовОн выводит тактовый сигнал на выв. 5 LPT его нужно подать на ножку XTAL1 МК и добавить в командной строке AVReAL специальный ключ  "-o0".  Программатор  AVReAl  позволяет назначать какие ножки LPT порта использовать - это будет полезно когда часть ножек LPT вы уже спалите   :-)
(Тактовый сигнал генерирует и программатор на USB по ссылке внизу этой страницы.)
 Еще очень советую поставить подтягивающий резистор 10 кОм от ножки Reset МК на питание VCC и конденсатор 0.01-0.33 мкФ (в апноутах AVR040 и AVR042 рекомендуют 0.01 мкФ) отReset на GND  -  как в схеме к задаче 7 курса.

   
 
Я использую самый простой вариант адаптера STK200 - "для самых ленивых"   пять поводков соединяющих линии параллельного (LPT) порта ПК и AVR так же как на схеме STK200 выше, но без микросхемы буфера. Лучше все же токоограничительные резисторы от 150 до 270 ом впаять Проводки не более 15 см длиной !
 
   



Адаптер "5-проводков" прекрасно работает с компилятором CodeVision

   
 
Советую для изготовления адаптера взять " принтерный" шнур - он длинный и экранированный, а не экранированные проводки не стоит делать более 10-15 см.
 
   
 
Для питания устройства при программировании и отладке можно кроме сетевого адаптера использовать: 
  • - батарейку на 6 вольт с 2 диодами последовательно для понижения напряжения...
  • - можно три батарейки по 1,5 вольт последовательно соединить 
  • ... а можно +5 вольт взять с вывода 1 гейм порта компьютера или осторожно из гнезда USB.
Желательно питать устройство от ПК!  В этом случае "земля" вашего устройства будет соединена с корпусом ПК и можно будет безопасно подключать и отключать разъем программирующего адаптера.
   
 
ВНИМАНИЕ!  Всегда старайтесь первыми соединить "земли" устройств, а затем питание и потом уже сигнальные линии.
 
   

Не поленитесь:  спаяйте адаптер STK200 на микросхеме буфере по рисункам внизу страницы  - так как LPT порт компьютера более нежен чем COM - соответственно его спалить проще...   

   
 
Если вы хотите использовать ножки МК SCK, MOSI, MISO в вашем устройстве то подключайте другие компоненты к ним через резисторы 4.7 КОм - чтобы не мешать программированию. Так рекомендовано в апноуте AVR042 Для Мега64, -128, -256 вместо MOSI и MISO используются другие ножки для ISP программирования !
 
   
Если у вас нет LPT порта сделайте Аналог  "5 проводков" для COM-порта
Или соберите простой, дешевый USB программатор для AVR
Или соберите похожий программатор USB  программатор AVR и AT89s
Вот топик об успешной сборке этого интерфейса для программирования на ATmega8. Это новый вариант платы для него. Архив с разводкой платы Внимание !  Этот программатор выдает тактовый сигнал 1 МГц и меньше для прошивки МК без кварца и с выключенным внутренним генератором. тактовый сигнал выводится на контакт "LED". Его нужно подвести к ножкеXTAL1.
   
 
Существуют специальные программы "бутлодеры" которые записываются в микроконтроллер способами перечисленными выше и после этого микроконтроллер может сам, при включении, закачивать в себя программу (например из ПК через адаптер UART rs232 COM port схема в задаче 4 курса) и запускать ее выполнение. Есть много бесплатных загрузчиков
 
   

Программатор AVR микроконтроллеров. LPT программатор.
Кликни чтобы увеличить
 
Принципиальная схема программатора на LPT порт показана на рисунке. В качестве шинного формирователя используется микросхема 74HC244 (К1564АП5), 74LS244 (К555АП5) либо 74ALS244 (К1533АП5), хотя может использоваться любой другой неинвертирующий шинный формирователь с тремя состояниями (в этом случае может потребоваться соответствующее изменение схемы).Светодиод VD1 индицирует режим записи микроконтроллера,
светодиод VD2 - чтения,
светодиод VD3 - наличие питания схемы.

Напряжение, необходимое для питания схема берёт с разъёма ISP, т.е. от программируемого устройства. Эта схема является переработанной схемой программатора STK200/300 (добавлены светодиоды для удобства работы), поэтому она совместима со всеми программами программаторов на PC, работающих со схемой STK200/300. Для работы с этим программатором используйте программу CVAVR

Программатор можно выполнить на печатной плате и поместить её в корпус разъёма LPT, как показано на рисунках:

Для работы с программатором удобно использовать удлинитель LPT порта, который несложно изготовить самому (к примеру, из кабеля Centronix для принтера), главное "не жалеть" проводников для земли (18-25 ноги разъёма) или купить. Кабель между программатором и программируемой микросхемой не должен превышать 20-30 см.

AVR miniICE  

Это профессиональное средство для программирования и  отладки программы МК ATmega фирмы Atmel в реальном устройстве. Он полностью совместимый с оригинальным AVR JTAG ICE.
Автор данного устройства Milan Kostomlatsky kosta@mcu.cz
Оригинальное описание находится здесь
Пример реализации: на макетке