Основы работы в WinAVR

В качестве платформы для разработки конструкций на микроконтроллерах я использую пакет программ WinAVR. Почему выбор пал именно на него? Данная платформа распространяется бесплатно с открытым исходным кодом. Каждый может её улучшить и доработать по своему усмотрению (хотя смысла это делать не вижу). Генерирует достаточно оптимальный код. Синтаксис языка с в нём максимально приближён к классическому Си, нету конструкций типа PORTB.1 = 1 как в CVAVR. Вообще у меня на компьютере установлены и WinAVR, и пресловутый CVAVR. Есть и PonyProg, и даже Algorithm Builder. И всеми ими приходится иной раз  пользоваться , т.е. они друг друга прекрасно дополняют. Например, когда возникла необходимость прошить AT90USB162, я сделал это при помощи CVAVR, т.к. ни PonyProg, ни USBASP_AVRDUDE_PROG не поддерживают данный кристалл. Кроме того CVAVR удобно пользоваться, если надпись на кристалле затёрта и не известен тип. Для этого, после подключения программатора, во вкладке «chip programmer» нажимается кнопка «read signature». Этой же функцией можно воспользоваться, если есть подозрения в исправности программатора или самой микросхемы.  Algorithm Builder удобно использовать для написания программ для 8-миногих «тинек» — изучая ассемблер, изучается внутренняя архитектура контроллера. Кроме того, при расчёте некоторых величин для записи в регистры удобно смотреть по вкладкам AB, т.к. при вводе частоты работы ядра автоматически рассчитываются, например, значения регистров для установки скорости обмена по UART, другие величины… Но я отвлёкся, разговор-то идёт про WinAVR. Итак, качаем дистрибутив отсюда и устанавливаем на своём компьютере. Я думаю пошагово объяснять установку не нужно – все, читающие эти сроки, наверняка подготовлены как пользователи ПК. Главной программой, в которой собственно и идёт работа является Programmer Notepage. Для себя я вынес её ярлык на рабочий стол ПК. Открываем Programmer Notepage, «File» -> «New». Откроется окно нового файла. Предварительно создадим папку в которой будут храниться наши проекты. В эту папку сохраним новый файл с расширением с. Набираем собственно код. Для примера я использовал небольшой проектик, который будет выводить на экран LCD индикатора все возможные для него символы, ведь содержимое знакогенератора адресов 0xA0 – 0xFF для различных видов HD44780-совместимых LCD индикаторов может меняться от модели к модели. Итак, набираем код. Сохраняем его как znakogenerator.c в папку Znakogenerator. Кроме того, для работы с LCD необходимо подключить файл с набором таких функций. Берём его из своей наработанной библиотеки и копируем в эту же папку. Ну и для задания параметров самого проекта необходимо создать так называемый makefile. В дальнейшем, после приобретения некоторого опыта данный файл можно будет копировать из других своих проектов, а я сейчас покажу как сделать его с помощью специальной программы из пакета WinAVR. Кликаем «Пуск» -> Все программы -> WinAVR -> MFile (иконка в виде кипящего чайника). Открывается окно.Кликаем «Mikefile» и начинаем вводить параметры своего проекта.

В основном там нужно будет поменять название главного файла проекта (по умолчанию «main»), мы вводим znakogenerator, выбрать тип микроконтроллера MCU type, остальное можно не трогать, все параметры, в том числе и указанные выше, возможно поменять будет потом в папке проекта. Потом кликаем «File» -> «Save As» и сохраняем его как mikefile (по умолчанию) в папку Вашего проекта, в нашем случае папку Znakogenerator. Сохранили, теперь из Programmer Notepage открываем папку проекта и видим там четыре файла: znakogenerator.c – это основной файл проекта, lcd.c, lcd.h – файл функций работы с LCD и заголовочный файл к нему (мы их добавили из своей библиотеки) и makefile  проекта, который мы с вами создавали. Откроем его.

Всё, что написано после символа # — это комменты, они нас не интересуют, хотя, если владеете английским можно почитать. Смотрим сверху вниз. Я буду пояснять только те строки, которые необходимы, остальные можно оставить по умолчанию. MCU = atmega88 – строка где мы выбираем тип кристалла. F_CPU = 1000000 – частота работы ядра, которую мы задаём фьюзами. TARGET = znakogenerator – строка, задающая имя главного файла проекта (того, где есть функция main), имя указывается без расширения С. SRC = $(TARGET).c – строка, указующая на источники Си-кода, под ней  добавлена строка SRC += lcd.c – этим мы подключаем к проекту файл lcd.c. Если подключаются ещё какие-то файлы, то они так же записываются как указано выше новой строкой под существующими. Листаем вниз, до опций программатора Здесь в строке AVRDUDE_PROGRAMMER = stk500 можно выбрать любой тип программатора, который есть в выпадающем списке программы MFile. Ниже строка выбора порта связи с программатором AVRDUDE_PORT = com1. Список портов также указан в выпадающем списке MFile. С программаторами есть небольшой ньюанс. Дело в том, что в выпадающем списке программаторов нет USBasp, а он достаточно распространён среди радиолюбителей. Ничего страшного – пропишем его вручную. Вот так: AVRDUDE_PROGRAMMER = usbasp и укажем порт: AVRDUDE_PORT = usb. Всё, сохраним изменения, нажатием на соответствующую кнопочку. Теперь проект нужно откомпилировать и прошить в кристалл. Для этого соберём схему из элементов микроконтроллерного конструктора и подключим её к программатору USBasp, который хорошо описан здесь. В Programmer Notepage кликаем «Tools» -> «Make Clean» — это очистит папку от предыдущих результатов компиляции. После этого «Tools» -> «Make All» — это откомпилирует проект, и, если не будет ошибок, то вылезет такое окно.

После успешной компиляции в папке проекта появиться куча файлов, о них я сейчас рассказывать не буду – можно посмотреть самим. Потом прошиваем кристалл: «Tools» -> «Program». Если всё соединено правильно, результат будет таким,

а на экране LCD Вы уведите раз в полсекунды меняющиеся символы знакогенератора и их порядковый номер.

Теперь, создавая свой проект, можно не выходя после очередной компиляции в USBASP_AVRDUDE_PROG, Pony Prog или другую программу,  зашивать кристалл и видеть результаты изменения исходного кода. Фьюзы предварительно нужно зашить любой из вышеуказанных программ, в зависимости от используемого программатора. Следует также отметить, что WinAVR замечательно стыкуется с AVR studio, но об этом позже. Удачи, друзья!

Запись опубликована в рубрике Разное с метками , . Добавьте в закладки постоянную ссылку.

6 комментариев: Основы работы в WinAVR

  1. jemsMonse говорит:

    Ага, теперь понятно…А то я сразу не очень то и не понял где тут связь с самим заголовком…

  2. Материал на пять с плюсом. Но есть и минус! У меня скорость интернета 56кб/сек. Страница грузилась около 40 секунд.

  3. autopogeste говорит:

    Поздравляю вас Старо-Новым годом, желаю вам в новом году успехов и спасибо что вы находите время поддерживать ваш замечательный блог!

  4. DI HALT говорит:

    Ай яй яй. Кто же скриншоты в BMP выкладывает прям на сайт. АААА!!! Пережми чтоль в GIF страничка сразу же станет весить меньше в два порядка.

  5. Аноним говорит:

    Спасибки)

  6. s_black говорит:

    В плане?

Добавить комментарий

Ваш e-mail не будет опубликован.