ATMega88 — низкопотребляющий 8 битные КМОП микроконтроллеры с AVR RISC архитектурой. Выполняя команды за один цикл, ATMega88 достигают производительности 1 MIPS при частоте задающего генератора 1 МГц, что позволяет разработчику оптимизировать отношение потребления к производительности.
AVR ядро объединяет богатую систему команд и 32 рабочих регистра общего назначения. Все 32 регистра непосредственно связаны с арифметико-логическим устройством (АЛУ), что позволяет получить доступ к двум независимым регистрам при выполнении одной команды. В результате эта архитектура позволяет обеспечить в десятки раз большую производительность, чем стандартная CISC архитектура.
Основные параметры:
- Высококачественный низкопотребляющий 8- битный AVR микроконтроллер
- Передовая RISC архитектура
- 130 команд, большинство которых выполняется за один тактовый цикл
- 32 8 битных рабочих регистра общего применения
- полностью статическая архитектура
- производительность до 16 MIPS при тактовой частоте 16 МГц
- встроенный двухцикловый умножитель
- Энергонезависимая память программ и данных
- 8/16 КБ внутрисистемно программируемой Flash памяти программы, способной выдержать 10 000 циклов записи/стирания
- вспомогательная секция загрузочной программы с независимым битом защиты
- внутрисистемное программирование встроенной программой-загрузчиком
- реальная функция считывания при программировании
- 512 байта EEPROM, способной выдержать 100 000 циклов записи/стирания
- 1К байта встроенной SRAM памяти (статическое ОЗУ)
- программируемая защита от считывания
- Характеристики периферии
- Два 8- разрядных таймера/счетчика с отдельным предделителем и режимом сравнения
- Один 16- разрядный таймер/счетчик с отдельным предделителем и режимом сравнения и режимом захвата
- Счетчик реального времени с отдельным генератором
- Пять ШИМ каналов
- 8 канальный АЦП у приборов в TQFP и MFL корпусах
- 6 10- битных каналов
- 2 8- битных канала
- 6 канальный АЦП у приборов в PDIP корпусе
- 4 10- битных каналов
- 2 8- битных канала
- Программируемый последовательный USART
- Ведущий/ведомый SPI интерфейс
- Байт- ориентированный последовательный 2- проводный интерфейс
- Программируемый сторожевой таймер со встроенным генератором
- Встроенный аналоговый компаратор
- Прерывание и пробуждение при изменении состояния выводов
- Специальные характеристики микроконтроллера
- Сброс при включении питания и детектор кратковременных пропаданий питания
- Встроенный откалиброванный генератор — Внешние и внутренние источники прерывания
- Пять режимов пониженного потребления: Idle, ADC Noise Reduction, Power-Save, Power-down и Standby
- Порты ввода — вывода и корпусное исполнение
- 23 программируемых линии портов ввода-вывода
- 32 выводные TQFP и MFL корпуса
- Диапазон напряжения питания
- от 1.8 до 5.5 В
- Коммерческий рабочий температурный диапазон
- Различный диапазон рабочих тактовых частот
- от 0 до 20 МГц
- Сверх низкое потребление
- Активный режим:
- 300 мкА при частоте 1 МГц и напряжении питания 1.8 В
- 20 мкА при частоте 32 кГц и напряжении питания 1.8 В
- Режим пониженного потребления
- 0.5 мкА при напряжении питания 1.8 В
- Активный режим:
Для использования ATmega88 в Arduino IDE Вам необходимо собрать следующую схему:
Перед прошивкой ATmega88 необходимо установить поддержку контроллера в Arduino IDE, для этого откройте меню Файл >> Настройки и в пункте Дополнительные ссылки для Менеджера плат вставьте ссылку:
https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json
Далее переходим в меню Инструменты >> Плата >> Менеджер плат
В строке поиска напишите atmega88, списке менеджера плат выберите пакет: MiniCore by MCUdude
После установки поддержки плат в Arduino IDE появится плата Atmega88
- Для прошивки скетча или загрузчика Вам понадобится программатор USBasp
Распиновка USBasp
Перед загрузкой в настройках платы укажите частоту кварцевого резонатора (16 МГц), выбрать программатор USBasp, в пункте Variant тип контроллера 88P/88PA, 88/88A (для Atmega88 20PU который я используя для этой статьи) или 88PB, в пункте Bootloader выберите No bootloader или Yes (UART0) если планируете загружать скетчи через UART ( USB — TTL ).
Во вкладке «Инструменты» нажмите «Записать загрузчик«.(делается только один раз)
После записи загрузчика Вы в Arduino IDE увидите примерно следующее:
Для загрузки скетча выберите вкладку — Скетч >> Загрузить через программатор
После загрузки скетча появится следующее сообщение:
Для примера можно загрузить скетч BLINK, для этого в выводу 19 (PB5) через резистор 300 Ом подключите светодиод и загрузите один из скетчей:
#include <avr/io.h> #include <util/delay.h> int main(void){ DDRB |= (1 << PB5); while(1){ PORTB |= (1 << PB5); _delay_ms(1000); PORTB &=~ (1 << PB5); _delay_ms(1000); }}
void setup() { pinMode(13,OUTPUT); } void loop() { digitalWrite(13,HIGH); delay(1000); digitalWrite(13,LOW); delay(1000); }
После загрузки скетча начнет мигать светодиод с интервалом 1 секунда.