Первый запуск Atmega8

Первый запуск Atmega8
(В этой статье рассказывается как запустить простейшую программу на микроконтроллере Atmega8,
с использованием свободнораспространяемого комплекта avr-gcc, avr-lib и avrdude для Linux-ОС, в данном случае под Ubuntu 9.10,
версии Karmic Koala)
Прежде всего, нужно отметить о том, что необходим персональный компьютер с установленной Linux- системой. Я использовал для этой цели Ubuntu 9.10 (Karmic Koala). Работа с популярными пакетами по Windows, например, с WinAVR сильно отличается, хотя и похожа по идее. Файлы из пакета WinAVR нельзя применять под Linuxом!
Первое, что необходимо для работы — программатор. В данном случае выбран простейший, так называемый stk200. Подключается он непосредственно к параллельному порту (см. схему).

stk200 DSCN9642

Второе, что необходимо сделать это установить avr-gcc (готовый пакет для разработки программ на микроконтроллерах AVR) и комплект библиотек к нему. На мой взгляд лучшее (коротко и все просто) написано вот здесь). На всякий случай информация с этой ссылке сохранена в этом документе.
Третья, что необходимо — это скачать последнюю версию программы avrudude, с официального сайта программы (http://www.nongnu.org/avrdude/). Естественно лучше выбрать самую последнюю версию, на момент написания этой статьи — это версия 5.10. На всякий случай вот здесь готовый архив этой последней версии.
Для работы необходимо собрать простейшую схему на основе Atmega 8. Единственное, что требуется из внешних элементов — это светодиод с последовательно подключенным токоограничивающим резисторов на 220 Ом, подключенным к выводу 24 (это PC1), см. рисунок ниже. Естественно при соответвующей модификации программы подключить светодиод можно к любому выводу. Кроме того, необходимо вывод RST микросхемы присоеидинить на плюс питания через резистор около 10 кОм, и добавить несколько блокировочных конденсаторов на питании (один керамический, один электролитический).
Расположение вывод Atmega8 представлено на рисунке ниже, а техническую документацию можно скачать здесь.

mega8_gr
И внешний вид самой микросхемы:
mega8
Плата (нарисована в Photoshope 7.0) — здесь полноразмерная картинка JPG для печати (можете сразу ее и использовать):
c_plate
То, что в итоге должно получится — можно увидеть на рисунке ниже.
c_

Тестовая программа — простешая. Она заставляет мигать светодиод, подключенный к одному из портов (в нашем случае это PORTC).

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
unsigned char counter;
DDRC=0xff;
PORTC=0x00;

while(1)
{
PORTC=0xff;
_delay_ms(250);
PORTC=0x00;
_delay_ms(250);
}
}

Из сложных моментов следует упомянуть, что используется внешняя функция для генерации задержки в программе, расположенная в …util/delay.h — точнее смотрите пути для вашей системы, можете воспользоваться поиском файлов) — в предыдущей версии avr-gcc место расположения было другим (!). Если у вас не будут установлены библиотеки — работать не будет!!! Плюс необходимо указать тактовую частоту процессора. У меня выставлено значение 1 мГц, при использовании внутреннего генаратора.
Нужный режим порта устанавливается директивой DDRC=0xff (т.е. работа «как выход»). Запись нулей или единци на все восемь вывод порта осуществляется директивами PORTC=0xff (установить все в 1) и PORTC=0x00 (установить все в 0).
Более подробно про организацию циклов методы работы с портами (в т.ч. и с отдельными выводами) можно посмотреть на сайте http://www.myrobot.ru ищите там страницы: организация циклов, работа с портами.
На всякий случай вот здесь можно скачать архив этих двух страниц.
Очень рекомендую для первого пуска (и наверное, всегда) создать отдельный каталог, в котором и будет производится работа с программами для микронтроллера. Я, наприме, созда папку «AVR» в каталоге «Документы», в которой и размещаю свои отдельные проекты. В каждой папке проекта — свой makefile. Полную копию того, что получилось у меня можно скачать blinky. Для создания и редактирования файла пользовлся входящим в комлпект Ubuntu 9.10 редактором gedit, естественно можно пользоваться чем угодно: nano или редактором из Midnight Commanderа.
Для компиляции надо пользоваться командами make или сразу make writeflash . В makefile необходимо внести изменения, касающиеся типа процессора, его тактовой частоты и т.п. Плюс, я добавил опцию -E noreset, чтобы при вызове avrdude, сразу же после загрузки программы моя система начинала нормальную работу. Вот видео, где можно посмотреть примерно как это работало.
Lfuse, hfuse я устанавливаю отдельно, в терминальном режиме при запуске avrdude. Их значения: hfuse=0xd9, lfuse=0xe1. Если есть желание попробовать работать с источником тактового сигнала, на внешнем кварце — попробуйте hfuse=0xс9, lfuse=0xef.
Интересный момент… Старые микросхемы серии L , с ограничением по часто в 8 мГц (например, ATMEGA8L 8AU) прекрасно работают с кварцевыми резонаторами до 20 мГц!!! Имейте это ввиду. -:).
Успехов!

апрель, 2010 г
Чубаров И.Ю. (Krolik) (ivder99@bmstu.ru)

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>