Atmega8 прошивка – Atmega8A в корпусе TQFP-32 прошивка через Arduino ISP

прошивка загрузчика Arduino через Arduino IDE, знакомство c AVRDUDE

ATmega8: прошивка загрузчика Arduino через Arduino IDE, знакомство c AVRDUDE

разделы: AVR , Arduino , Программаторы , дата: 3 марта 2014г.

Идея использовать младшее семейство AVR ATtiny для мелких проектов вместо Arduino — логична и красива, но приходиться учитывать реальное положение вещей. И если посмотреть цены на ebay.com, то получится, что ATmega8 будет лучше и дешевле многих ATtinyXX. Если вы не завод, и не имеете возможность закупаться оптом непосредственно у производителя, то для многих проектов будет проще использовать ATmega8 нежели изгаляться с программной эмуляцией TWI/I2C, UART и пр..

В качестве теории. На ATmega8 работал Arduino NG(next generation). Т.о. скетчи Arduino должны быть полностью совместимы с ATmega8. Вооружившись этим знанием попробуем что-нибудь прошить.

Распиновку и соответсвие выводам Arduino можно посмотреть здесь: http://arduino.cc/en/Hacking/PinMapping

Так же как в предыдущем посте соберите схему подцепив на 19-й пин микросхемы (digital pin 13 Arduino) резистор со сетодиодом. Должно получиться как-то так:

    В Arduino IDE меню-> сервис выберете опции:

  • Плата -> Arduino NG or older w/ ATmega8
  • Программатор -> Arduino as ISP

Далее откройте из примеров скетч «Blink». Здесь нужно будет исправить sleep(1000) на sleep(100). Профайл платы NG подразумевает работу с 16 Мгц резонатором, а у нас микроконтроллер работает от втроенного резонатора на 1 МГц, т.е. в 16 раз медленее.

Залейте скетч в микроконтроллер. Диод должен сразу начать мигать. У меня в перый раз прошивка прошла без единого варнинга, а потом начало выкидывать предупреждение:

что означает, что прошивка прошла успешна, но проверка закончилась ошибкой. Хотя у меня микроконтролер успешно прошивался и работал с таким варнингом, ситуация не хорошая. Вообще, если говорить об ошибках, то самое страшное, что можно получить на данном этапе это наверное:

1) контроллер не отвечает:

avrdude: AVR device not responding
avrdude: initialization failed, rc=-1

2) неверный тип микроконтроллера:

Раз речь пошла об ошибках и косяках пошивки, думаю настало время познакомиться с avrdude, утилитой c помощью которой Arduino IDE шьет микроконтроллеры.

В Arduino IDE: меню -> настройки отметье галочкой чекбокс: «показывать подробный вывод при загрузке»
и загрузите скетч в микроконтроллер еще раз. Если Arduino IDE запущен был из командной строки, то в консоли должен появиться длинный лог, где нас будет интересовать первая строка:

/opt/arduino/hardware/tools/avrdude -C/opt/arduino/hardware/tools/avrdude.conf -v -v -v -v -patmega8 -carduino -P/dev/ttyUSB0 -b19200 -D -Uflash:w:/tmp/build4429286683533029884.tmp/Blink.cpp.hex:i
    где:

  • -С —конфигурационный файл
  • -p —модель микроконтроллера
  • -с —модель программатора
  • -P —порт
  • -b —скорость порта
  • -U —операции с памятью

Часто при ошибках выводится сообщение c предложеним запустить avrdude с опцией -F.

use -F to override this check

НИКОГДА не делайте этого! Если есть ошибка, постарайтесь разобраться в проблеме. Иначе можно заблокировать чип.

Наиболее интересная опция для нас «-U», операции с памятью. Формат опции: тип_памяти:операция:файл:формат_файла

для начала, можно попробовать считать прошивку микроконтроллера:

-U flash:r:my.hex:i
    где:

  • r — чтение прошивки
  • i — формат файла прошивки Intel

введите в консоли команду:

/opt/arduino/hardware/tools/avrdude -C/opt/arduino/hardware/tools/avrdude.conf -v  -patmega8 -carduino -P/dev/ttyUSB0 -b19200  -U flash:r:my.hex:i

на выходе будем иметь лог:

/opt/arduino/hardware/tools/avrdude -C/opt/arduino/hardware/tools/avrdude.conf -v  -patmega8 -carduino -P/dev/ttyUSB0 -b19200  -U flash:r:my.hex:i

avrdude: Version 5.11, compiled on Sep  9 2011 at 16:00:41
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "/opt/arduino/hardware/tools/avrdude.conf"
         User configuration file is "/home/flanker/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyUSB0
         Using Programmer              : arduino
         Overriding Baud Rate          : 19200
         AVR Part                      : ATMEGA8
         Chip Erase delay              : 10000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom         4    20   128    0 no        512    4      0  9000  9000 0xff 0xff
           flash         33    10    64    0 yes      8192   64    128  4500  4500 0xff 0x00
           lfuse          0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           calibration    0     0     0    0 no          4    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9307
avrdude: safemode: lfuse reads as DF
avrdude: safemode: hfuse reads as CA
avrdude: reading flash memory:

Reading | ################################################## | 100% 7.43s

avrdude: writing output file "my.hex"

avrdude: safemode: lfuse reads as DF
avrdude: safemode: hfuse reads as CA
avrdude: safemode: Fuses OK

avrdude done.  Thank you.

Итак, получив, в итоге, сообщение об успешном завершении: «avrdude done. Thank you», мы получаем файл с копией прошивки микроконтроллера. Пара слов о фьюзах. Это биты конфигурации микроконтроллера. Если запись фьюзов пройдет с ошибкой, микроконтроллер скорее всего заблокируется. Если сконфигурировать их неправильно, микроконтроллер скорее всего тоже заблокируется. Пока не будем их трогать, но есть одна возможность. Часта микроконтроллера по умолчанию 1МГц. Можно переключить его на работу внешним резонатором прошив загрузчик arduino. Меню -> Сервис -> Записать загрузчик.

Загрузчик состоит из flash-прошивки и фьюз-битов конфигурации, которые предусматривают работу от внешнего резонатора. Т.е. прошивая загрузчик, мы конфигурируем микроконтроллер на работу с внешним резонатором. Ну, а что касается самого загрузчика, то он потом затрется новой прошивкой, фьюзы останутся.

Перед прошивкой загрузчика, установите резонатор с частотой 1-16 МГц на 9 и 10 pin микросхемы. Там еще «по уму» должны быть керамические конденсаторы, но работать будет и без них. Для проверки сойдет.
Схема:

После прошивки частоту можно будет менять заменой кварца. Так же у меня пропал варнинг при проверке после прошивки: «verification error». В целом, микроконтроллер с кварцом работает стабильнее.

www.count-zero.ru

Arduino — примеры, эксперименты: Как прошить Atmega328 и Atmega8

   Ранее я писал, что большую и дорогую Arduino Uno можно заменить на малюсенький и дешёвый микрочип Atmega328 или даже Atmega8

   
      Я покажу как прямо из среды программирования Arduino прошить микроконтроллеры Atmega328 и Atmega8. Первый у меня имеется в DIP корпусе, а второй в TQFP.

    Для программирования я использую программатор USBasp. Купил его на ebay.com, стоит он в пределах 150р.



  Первая проблема с которой столкнутся пользователи Windows8 и Windows10 — установка драйвера для USBasp.

     Проблема в том, что эти операционные системы просят, что бы у драйвера была какая-то цифровая подпись, а у драйверов для USBasp на сегодняшний день её нет. Проблема решается отключением проверки этих цифровых подписей. Для этого перезагружаем компьютер с нажатой клавишей Shift. Появляется экран, на котором выбираем «Диагностика»

Далее — «Дополнительные параметры»

Далее — «Параметры загрузки»

Далее — «Перезагрузить»

На следующем экране появляется список действий, которые мы можем сделать. Выбираем на нём «Не проверять цифровые подписи драйверов», жмём цифру 7

   Подключим наш программатор к микрочипу. Для удобства я купил макетную плату и соединительные проводки. Соединяем микрочип с программатором согласно схеме

У Atmega8 в TQFP корпусе выводы располагаются следующим образом

К 9 и 10 выводу микроконтроллера присоединяем кварцевый резонатор.

   Здесь стоит пояснить значение этого резонатора.Скорее всего в купленном вами микроконтроллере выставлены настройки (fuses) на работу от внешнего тактового генератора, т.е. от кварца. Поэтому, что бы его прошить, нужно что бы он был подключён к этому самому кварцу. Для перепрошивки кварц можно взять любой попавшийся вам под руку. Я когда впервые перепрошивал просто выпаял его из какого-то сломанного устройства, вот он маленький на фото.

     Его хватило что бы микроконтроллер перепрошился. Если же ваш микроконтроллер изначально настроен на работу от внутреннего тактового генератора, то для прошивки кварц вам не нужен, можно обойтись и без него. 

    Для того, что бы можно было прошивать микрочип прямо из среды разработки Arduino, нужно залить на чип ардуиновский загрузчик. Для этого воспользуемся программой avrdude и онлайн конструктором загрузчиков для ардуино. На странице онлайн конструктора загрузчиков переходим в самый низ и видим конструктор

1. Выбираем «Внутренний генератор» если не хотим использовать кварцевый резонатор, либо выбираем «Внешний генератор» если хотим увеличить скорость работы чипа.

2. Выбираем модель микроконтроллера (в нашем случаем Atmega328)

3. Нажимаем «Создать HEX»

Появляется такое окно:

   Первое что мы делаем — скачиваем наш загрузчик в виде hex файла. Если конструктор по какой-то причине не работает, можно скачать загрузчик для atmega328 для внутреннего генератора здесь. 

      Ниже мы видим блок файла boards.txt для Arduino IDE. Я долго пытался подключить этот блок, что бы в среде ардуино появился выбор платы, но мне это почему-то не удалось, в итоге обошёлся без этого.

     Ещё ниже мы видим подсказку как залить загрузчик через программу avrdude и программатор USBasp. Я делаю следующим образом:

-Подключаю программатор к компьютеру через USB.

-Копирую HEX файл в папку avrdude

-Создаю bat файл в папке avrdude и копирую в bat эту строку

avrdude -c usbasp -p atmega328p -U flash:w:a328p_8MHz_e2_de_5.hex -U lfuse:w:0xe2:m -U hfuse:w:0xde:m -U efuse:w:0x5:m

@echo This batch file

@pause

-Запускаю bat файл. Если лень создавать bat файл, можете скачать его здесь.

Если всё сделано правильно, вы увидите что-то подобное

   Это значит, что всё прошло хорошо и на наш микроконтроллер залился загрузчик ардуино. Теперь мы сможем прошивать его прямо из среды программирования Arduino.

   Если вы где-то накосячили и что-то сделали не правильно, можете увидеть такое сообщение:

    Тут могут быть разные причины:

-Возможно вы не правильно соединили программатор с микрочипом. Проверьте соединения.

-Возможно вы не подключили кварцевый резонатор, а ваш микроконтроллер настроен на работу от него. Тогда подключите любой кварцевый резонатор, хоть из китайских наручных часов выпаяйте.

-И третий вариант о котором я не сказал, но с которым тоже столкнулся, когда прошивал Atmega8. На каком-то форуме мне подсказали, что микрочип работает на пониженной частоте и чтобы прошить его, нужно на программаторе замкнуть перемычку JP3. Что собственно мне и помогло.

   Если проблем у вас не возникло и загрузчик Arduino успешно записался на чип, то переходим к прошивке чипа через среду программирования Arduino. 
   Во-первых, если вы в онлайн конструкторе загрузчика выбирали  «Внутренний генератор», то кварцевый резонатор можно убрать из схемы.

   Откроем среду разработки Arduino и запустим классический пример моргания светодиодом:

     Видим, что в примере указан цифровой выход 13. На микрочипе он соответствует ножке 19

    Т.к. этот вывод у нас сейчас подключен к программатору под вывод SCK, то изменим в программе 13 вывод на 5.

И подключим к нему светодиод.

Выбираем в Инструментах плату, чип и программатор

Нажимаем Скетч — загрузить через программатор.

    Программа скомпилируется и загрузится на наш микроконтроллер. Светодиод замигает.

    С какой задержкой будет мигать светодиод если в программе указано 1 секунда? Зависит от того использовали ли вы внутренний тактовый генератор или внешний. Если внутренний, а частота его 8MHz, то программа будет работать в 2 раза медленней, т.к. в Arduino UNO стоит кварц на 16MHz. 

    Если вы использовали внешний кварц, то задержка моргания светодиодом будет зависить от частоты вашего кварца. При частоте 16MHz светодиод будет моргать через 1 секунду как и полагается по программе.

    Убедимся, что микроконтроллер прошит и работает самостоятельно. Отключим его от программатора и подключим к нему питание 5 вольт. Увидим, что светодиод моргает, программа, залитая в чип, работает!

www.catincoat.ru

Программатор для прошивки микроконтроллеров Atmega8 и Attiny2313

Всем привет.

Схема программатора, которая здесь представлена считается более простенькой и её без труда  может собрать любой начинающий радиолюбитель, который решил опробовать свои силы в сфере создания устройств на микроконтроллерах. В данной схеме не содержится дефицитных элементов и даже не нужно изготавливать печатную плату, всё можете сделать навесным монтажём либо на макетной плате (к примеру здесь развели печатку под неё за 15 мин на кусочке некондиционного стеклогетинакса). Этот программатор подойдёт для прошивки микроконтроллеров Atmega8 и Attiny2313 , это вам может пригодится, например для изготовления импульсных металлоискателей типа ClonePI-W или TrakerPI.

Поскольку схема этого программатора простая и не вызовет вопросов при её сборке, то далее предлагаем поэтапную инструкцию по использованию прибора (начинающим) при прошивке микроконтроллера Atmega8 для сборки металлоискателя ClonePI-W.1.

Устанавливаем программу PonyProg

Скачайте архив с программой и разархивируйте его. Щелкните на setup.exe. Будет обыкновенная инсталляция. Затем зайдите на системный диск и в папке Program Files найдите папку Pony Prog2000. Заходите в неё и удалите файл PonyProg2000.exe. Из разархивированного материала копируйте в эту папку файл PonyProg 207 rus.exe, это позволит русифицировать, а также модифицировать программу. Создайте в этой папке ярлык и разместите его на Рабочем столе. Всё, вы установили программу.

Настраиваем программу

Подключайте программатор и запускайте программу. В меню «Настройки» выберите «Калибровка» и выполните её. Затем, в меню «Настройки», выберите «Настройка оборудования» и выставите Последовательный, COM1 и SI Prog API. Остальные окна-пустые. Жмите «Проверка», ОК. Вот и всё, на этом настройка окончена. Если она проведена успешно, значит всё хорошо, если нет, тогда ищите и устраняйте ошибку в железе.

Прошиваем микроконтроллер

Вставляйте контроллер в панель. В окошке вверху программы выберите AVR Micro, а в соседнем Atmega8. Затем щёлкните Команды — Читать всё. Начнётся чтение данных с микроконтроллера. Когда оно закончится появится сообщение о успешном завершении чтения. Такое чтение, даже чистой микросхемы, даёт возможность более лучшим образом »сдружить» связку Компьютер — Программатор — Микроконтроллер и если всё пройдет хорошо, значит теперь вы можете уверенно надеяться на успех. Теперь можно загружать в программатор дамп самой прошивки. Файл — Открыть содержимое устройства из файла и проводником найдите необходимый нам файл дампа с расширением .hex. Открывайте, его содержимое появится в большом окне программы.

Теперь нужно правильно расставить конфигурационные биты контроллера

Посмотреть их можете на сайте разработчика ClonePI-W. Жмите на пиктограмму с замочком. В окнах расставьте галочки согласно требуемому. Жмите ОК. Затем записывайте программу на микроконтроллер. Команды — Записать всё. Пойдёт запись, а потом проверка. Когда закончится проверка появится табличка «Запись выполнена». Если всё прошло так, как описано выше, то вынимайте контроллер и ставьте его в изготавливаемое устройство, подключайте питание и радуйтесь полученному результату :).

Напоследок еще пара советов

Питание для схемы программатора можете взять с USB порта компа либо применить для этих целей БП (блок питаня) ADSL модема, который на время программации контроллера можете отключить. Кроме этого (в некоторых случаях) на время программирования камня нужно отключить антивирусы и файерволы (к примеру NOD32 блокирует некоторые действия с передачей данных через COM порт).

Вот вкратце и всё по этому девайсу. Всего вам доброго.

payaem.ru

ПРОГРАММАТОР ДЛЯ ПРОШИВКИ микроконтроллеров atmega8 и attiny2313 CAVR.ru


Рассказать в:

Предлагаемая схема программатора является,по моему мнению, наиболее простой и легко может быть воспроизведена любым начинающим радиолюбителем, решившим попробывать свои силы в области создания устройств на микроконтроллерах. Схема не содержит сверхдифицитных деталей и даже не требует изготовления печатной платы — все можно собрать навесным монтажем или на макетной плате (я например развел печатку под нее за 15 минут на куске некондиционного стеклогетинакса). Данный программатор подходит для прошивки микроконтроллеров Atmega8 и Attiny2313 , что может пригодится при изготовлении импульсных металлоискателей типа ClonePI-W или TrakerPI.   Так как схема программатора проста и не вызовет вопросов при изготовлении предлагаю дальнейшую пошаговую инструкцию по пользованию прибором (для начинающих) при прошивке микроконтроллера Atmega8 для изготовления металлоискателя ClonePI-W.1. Установка прграммы PonyProg. Скачиваем архив с программой и разархивируем его. Щелкаем на setup.exe. Произойдет обычная инсталляция. Теперь заходим на системный диск и в папке Program Files находим папку Pony Prog2000. Заходим в нее и удаляем файл PonyProg2000.exe. Из разархивированного материала копируем в эту папку файлPonyProg 207 rus.exe,что позволяет русифицировать и модифицировать программу. Создаем в этой папке ярлык и размещаем его на Рабочем столе. Программа установлена.   Настройка программы. Подключаем программатор и запускаем программу. В меню Настройки выбираем «Калибровка» и производим ее. После этого, в меню Настройки, выбираем Настройка оборудования и выставляем Последовательный, COM1 и SI Prog API. Остальные окошечки-пустые. Жмем Проверка, ОК. На этом настройка закончена. Если она прошла успешно, значит все хорошо; если нет-ищем и устраняем ошибку в железе.   Прошивка микроконтроллера. Вставляем контроллер в панельку. В окне вверху программы выбираем AVR Micro, в соседнем Atmega8. Теперь щелкаем Комманды-Читать все. Пойдет чтение данных из микроконтроллера. По его окончании появится сообщение о его успешном завершении. Такое чтение, даже чистой микросхемы, позволяет лучше ‘сдружить’ связку Компьютер-Программатор-Микроконтроллер и если все пройдет ОК, значит можно точно надеятся на успех. Теперь загружаем в программатор дамп самой прошивки. Файл-Открыть содержимое устройства из файла и проводником находим нужный нам файл дампа с расширением .hex. Открываем, его содержимое отразится в большом окне программы.    Теперь очень важно правильно расставить конфигурационные биты контроллера. Посмотреть их можно на сайте разработчика ClonePI-W. Жмем на пиктограмму с замочком. В окошках расставляем галочки согласно требуемому. Жмем ОК. Теперь записываем программу в микроконтроллер. Комманды-Записать все. Пошла запись, затем проверка. По окончании проверки появится табличка Запись выполнена. Если все прошло так как описано выше то вынимаем контроллер и ставим его в изготавливаемое устройство, подключаем питание и радуемся полученному результату. Напоследок еще пара советов. Питание для схемы программатора можно взять с USB порта компьютера или использовать для этих целей блок питания вашего ADSL модема, который на время программации контроллера можно отключить. Кроме этого (в некоторых случаях) на время программирования камня требуется отключать антивирусы и файерволы (NOD32 например блокирует некоторые действия с передачей данных через COM порт). Вот вкратце и все по предлагаемому девайсу. Материал любезно предоставил Электродыч.



Раздел:
[Программаторы микроконтроллеров]

Сохрани статью в:

Оставь свой комментарий или вопрос:



www.cavr.ru