26 июля 2013 г.

Как запрограммировать AVR микроконтроллер с помощью usbasp

Здесь я расскажу как запрограммировать микроконтроллер на примере ATmega32 с помощью "Khazama AVR Programmer",  "eXtreme Burner- AVR" и "usbasp".

usbasp - это программатор который можно собрать самому, либо купить (на ebay 3$). Драйвера и дополнительная информация на сайте создателя


Khazama AVR Programmer и "eXtreme Burner- AVR" это программы которые заливают прошивку в микроконтроллер, нужно использовать только 1 из них на выбор, ниже я расскажу как с ними работать.

Сперва нужно поставить необходимый драйвер для USBASP, который можно найти по ссылке выше. Далее нужно написать код который будет управлять нашим микроконтроллером, для этого я использую ATMEL STUDIO.

После того как мы скомпилируем наш код, создастся прошивка для МК (.hex файл) которую нужно залить в МК, её работоспособоность можно проверить в самой AVR студии или любой среде моделирования для этого предназначенной , к примеру Proteus.

Далее нужно подключить программатор к МК, для этого необходимы только 6 проводов USBASP (если их 10 то 3, 4, 6 и 8 выводы не используются ).

Ниже представлена схема программатора если вы решите собрать его самостоятельно:


Если купить готовый программатор, то чаще всего он уже с готовым разъёмом, который осталось подключить к микроконтроллеру. Лучше прозвонить кабель который выходит из программатора и найти землю, остальное можно найти с помощью распиновки.
Когда известно какой вывод за что отвечает осталось подключить их к ножкам микроконтроллера, для этого нужно свериться с даташитом и проверить распинову, нам нужны контакты MOSI, SCK, MISO, RESET, GND и  VTG (это VCC +5 В питание). К примеру необходимые ножки ATmega8:



Когда всё готово нужно запустить Khazama AVR Programmer и проверить видит ли он МК.
Главное окно:



Сперва нужно выбрать в выпадающем меню в центре наш микроконтроллер. Затем нужно нажать command -> read chip signature:


Если не выдаст никаких ошибок то всё в порядке.

Теперь нужно показать ему наш .hex файл, для этого нужно нажать File -> load flash file to buffer. Выбрать нужный файл и нажать ОК:


Теперь нужно разобраться с fuse битами (про них можно почитать Здесь).
Чтобы зайти в меню fuses нужно нажать Command -> fuse and lock bits (CTRL + A):


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


Галочка значит что бит НЕ выставлен, как по нотации ATMEL, пустой квадратик значит что бит ВЫСТАВЛЕН. "Write all" записать в МК выставленные биты.
Мне не нужно ничего менять, так что я нажимаю cancel и жму "auto programm" для того чтобы запрограммировать МК.


Всё, микроконтроллер получает напряжение от программатора и сразу начинает работать.

Если появляется ошибка "error setting usbasp isp clock" нужно либо перепрошить программатор, либо сменить программу для программатора, но даже с этой ошибкой МК можно прошивать как и раньше, только нельзя прочитать и выставить Fuse биты.

eXtreme Burner- AVR

Я использую "eXtreme Burner- AVR", т.к с ним у меня никогда не было проблем и здесь удобнее менять информацию в EEPROM. Вот его основное рабочее окно:

11 комментариев :

  1. Здравствуйте, где можно найти USBASP драйвер для Aavr Studio 4 то есть драйвер определился в системе как не UspAsp а как COM-n. Спасибо.

    ОтветитьУдалить
    Ответы
    1. Драйвер для Windows xp / 7
      http://www.fischl.de/usbasp/usbasp-windriver.2011-05-28.zip

      Не думаю что он может работать в связке с AVR Studio, прошивка пишется в студии, затем получаем .hex файл который нужно залить в МК, для этого используется "eXtreme Burner- AVR", "AVRDUDE" или "Khazama AVR Programmer".

      Удалить
  2. command -> read chip signature: Выдаёт ошибку
    ---------------------------
    Khazama AVR Programmer
    ---------------------------
    Error while operating...

    : error: programm enable: target doesn't answer. 1

    : initialization failed, rc=-1

    : AVR device initialized and ready to accept instructions

    : Device signature = 0x000000

    : Yikes! Invalid device signature.

    : Expected signature for ATMEGA8 is 1E 93 07

    done. Thank you.

    Прощу помощи. Писать на portal99991123(собака)mail(точка)ru

    ОтветитьУдалить
    Ответы
    1. Проверь правильно ли выставлены Fuse биты, возможно там настроено чтобы МК работал от внешнего кварца, в таком случае без кварца МК не запустится..

      Удалить
    2. Khazama выдает окно с таким текстом, когда на программаторе не установлена перемычка, подающая +5v на программируемый микроконтроллер. Или перемычка установлена на +3.3v. Expected signature for ATMEGA8 is 1E 93 07 - это не ошибка это нормально. Можно прошивать микроконтроллер и пользоваться им. Сам с этим столкнулся и долго не мог понять в чем дело. Первый опыт прошивания :) Однако всё заработало, удачи!

      Удалить
  3. здравствуйте! подскажите пожалуйста для чего нужен WinAVR и для чего Khazama. как я понял хазама для того чтобы прошить микроконтроллер. а винавр зачем? что-то там с Мфайлом не понимаю для чего это все

    ОтветитьУдалить
    Ответы
    1. WinAVR использовался раньше (в 4 студии и до неё) для компиляции файлов из кода программы написанной на C в машинный код (готовую прошивку) который можно залить в МК.
      В новых версиях студии (недавно вышла 7) он уже не нужен.
      Khazama - это программа которая записывает вашу готовую прошивку с компьютера в МК.

      Удалить
  4. Здравствуйте.
    Только начинаю осваивать процесс прошивки перепрошивки чипов.
    Хочу спросить Вас: вот прошили; замигали огоньки на программаторе и Khazama "отчитался".... А как ПОСМОТРЕТЬ то, что записал в память? Можно ли это сделать? Каким образом?

    ОтветитьУдалить
    Ответы
    1. Здравствуйте, можно: "Command -> Read FLASH to Buffer", в итоге получите .hex файл в буфере который можно сохранить и залить в другой контроллер, также можно проверить совпадает ли прошивка в контроллере с вашей: "Command Verify Flash".
      .hex файл можно открыть текстовым документом, но он состоит из 1 и 0.

      Удалить
    2. Спасибо.
      Я уже разобрался "что к чему"

      Удалить
  5. Кто может подсказать, какие строки eeprom соответствуют
    Каким строкам poniprog???

    ОтветитьУдалить