В этой статье я расскажу о программах и устройствах которые будут нужны при программировании, и в конце напишем простую мигалку.
Предисловие
В мире есть множество микроконтроллеров. Каждый из них по своему уникален. У одних больше портов, у других больше памяти, у третьих больше выходов и так далее. В качестве своего первого микроконтроллера я выбрал ATmega8A.
Общие характеристики микроконтроллера ATmega8A
ATmega8A имеет:
Память: 8 КБ внутренней флэш-памяти для программного кода и 1 КБ статической оперативной памяти (SRAM) для хранения данных.
Частота: может работать на частоте от 1 до 16 МГц.
Периферийные устройства: микроконтроллер оборудован разнообразными периферийными устройствами, включая аналогово-цифровые преобразователи (ADC), таймеры/счетчики, интерфейсы UART (USART), SPI и I2C для связи со внешними устройствами.
Напряжение питания: может работать при напряжении питания от 2,7 В до 5,5 В, что делает его гибким в выборе источника питания.
Низкое энергопотребление: ATmega8A обладает различными способами снижения энергопотребления, что полезно для батарейных устройств.
Размер корпуса: микроконтроллер доступен в разных корпусах (включая DIP и SMD) что облегчает его использование в разных проектах.
Программирование
Писать код я буду в программе "Atmel Studio 6.2", для того чтобы загрузить код в микроконтроллер вам нужен будет программатор (я использую USBASP V2.0) и программа, которая передаст код в программатор (я использую "AVRDUDE_PROG 3.3"). Если нету программатора или микроконтроллера, можно использовать "Proteus".
И так, как я говорил в начале мы напишем простую мигалку. На выходе PORTB 0 (PB0) будет мигать светодиод с интервалом в 1 секунду. Первым делом нам нужно создать проект, открываем Atmel Studio, в верхнем левом углу File->New->Project. В открытом окне выбираем "GCC Executable Project", дальше вводим название на английском (по умолчанию стоит GccApplication1) и выбираем место сохранения проекта. После жмем OK. В открывшемся окне ищем ATmega8A и, выбрав его, жмем ОК.
Перед вами откроется проект из которого нужно удалить все то, что написано зеленым цветом. Далее в самом верху мы пишем #define F_CPU 1000000 и на следующей строчке #include <util/delay.h>. В итоге получаем основу для всех следующих программ.
Разберем что тут написано.
Все что будет начинаться с #include это библиотеки, в которых содержится некий код для повторного использования разными программами.
Библиотека <avr/io.h> - это основная библиотека, <util/delay.h> - библиотека задержек для которой нужна рабочая чистота микроконтроллера, задаваемая строчкой кода #define F_CPU 1000000 в герцах (в данном случае 1 000 000 герц или 1 МГц).
Перед надписью while(1) мы будем производить всю настройку микроконтроллера. (определять порты, вводить переменные, писать функции и т.д.). В фигурных скобках функции while() мы будем работать с выводами микроконтроллера (это основное тело программы).
Первым делом настраиваем PORTB на выход (по умолчанию все порты настроены на вход. Если порт настроен на выход то он будет отдавать информацию, а если на вход - принимать), для этого у регистра DDRB настраиваем первый бит на 1, в двоичной системе исчисления это будет выглядеть 0b00000001 (в программировании счет идет в обратную сторону 76543210) .
DDRB = 0b00000001;
ставим ; как знак окончания строчки.
аналогично выводим на PB0 0 (не забываем про ; ).
PORTB = 0b00000000;
В основном теле программы мы пишем следующе
PORTB = 0b0000001;
_delay_ms(1000);
PORTB = 0b0000000;
_delay_ms(1000);
Разбираем написанное, сначала на PB0 мы подаем 1, затем ждем 1 секунду
(_delay_ms(); это пауза, задающая целым числом, где 1000 будет 1 секунда, 2000 2 секунды и т.д. ), далее подаем на PB0 0 и снова ждем 1 секунду. Программа написана, она будет выполнятся по кругу.
Полный код программы
Жмем F7 и если ошибок не допущено компилятор выдаст следующе сообщение
Загрузка кода в микроконтроллер
Если все правильно то продолжаем. Открыв "AVRDUDE_PROG 3.3" и подключив микроконтроллер к программатору по указанной ниже схеме, загружаем файл с расширением .hex в программу, а затем и в микроконтроллер.
Если же вы собираете в "Proteus" то вам нужно тот же самый файл (расширением .hex) загрузить в свойства микроконтроллера и нажать ОК.
Нажимаем зеленый треугольник в нижнем левом углу и наслаждаемся первым своим написанным кодом)
Схема проекта
Ссылки
Atmel Studio 6.2 - http://theatmel.ru
AVRDUDE_PROG 3.3 - http://www.yourdevice.net
Проект - https://disk.yandex.com.am/d/leVU4BOnfgMomQ