ATmega128, ATmega128L представляют собой 8-разрядные AVR-микроконтроллеры с внутрисистемно программируемой флэш-памятью емкостью 128 кбайт. За счет выполнения большинства инструкций за один машинный цикл ATmega128 достигает производительности 1 млн. операций в секунду/МГц, что позволяет проектировщикам систем оптимизировать соотношение энергопотребления и быстродействия.
Отличительные особенности:
- Высокопроизводительный, маломощный 8-разрядный AVR-микроконтроллер
- Развитая RISC-архитектура
– 133 мощных инструкций, большинство из которых выполняются за один машинный цикл
– 32 8-разр. регистров общего назначения + регистры управления встроенной периферией
– Полностью статическая работа
– Производительность до 16 млн. операций в секунду при тактовой частоте 16 МГц
– Встроенное умножающее устройство выполняет умножение за 2 машинных цикла - Энергонезависимая память программ и данных
– Износостойкость 128-ми кбайт внутрисистемно перепрограммируемой флэш-памяти: 1000 циклов запись/стирание
– Опциональный загрузочный сектор с отдельной программируемой защитой - Внутрисистемное программирование встроенной загрузочной программой
- Гарантированная двухоперационность: возможность чтения во время записи
– Износостойкость 4 кбайт ЭСППЗУ: 100000 циклов запись/стирание
– Встроенное статическое ОЗУ емкостью 4 кбайт
– Опциональная возможность адресации внешней памяти размером до 64 кбайт
– Программируемая защита кода программы
– Интерфейс SPI для внутрисистемного программирования - Интерфейс JTAG (совместимость со стандартом IEEE 1149.1)
– Граничное сканирование в соответствии со стандартом JTAG
– Обширная поддержка функций встроенной отладки
– Программирование флэш-памяти, ЭСППЗУ, бит конфигурации и защиты через интерфейс JTAG - Отличительные особенности периферийных устройств
– Два 8-разр. таймера-счетчика с раздельными предделителями и режимами сравнения
– Два расширенных 16-разр. таймера-счетчика с отдельными предделителями, режимами сравнения и режимами захвата
– Счетчик реального времени с отдельным генератором
– Два 8-разр. каналов ШИМ
– 6 каналов ШИМ с программируемым разрешением от 2 до 16 разрядов
– Модулятор выходов сравнения
– 8 мультиплексированных каналов 10-разрядного аналогово-цифрового преобразования - 8 несимметричных каналов
- 7 дифференциальных каналов
- 2 дифференциальных канала с выборочным усилением из 1x, 10x и 200x
– Двухпроводной последовательный интерфейс, ориентированный не передачу данных в байтном формате
– Два канала программируемых последовательных УСАПП
– Последовательный интерфейс SPI с поддержкой режимов ведущий/подчиненный
– Программируемый сторожевой таймер со встроенным генератором
– Встроенный аналоговый компаратор - Специальные возможности микроконтроллера
– Сброс при подаче питания и программируемая схема сброса при снижении напряжения питания
– Встроенный калиброванный RC-генератор
– Внешние и внутренние источники прерываний
– Шесть режимов снижения энергопотребления: холостой ход (Idle), уменьшение шумов АЦП, экономичный (Power-save), выключение (Power-down), дежурный (Standby) и расширенный дежурный (Extended Standby)
– Программный выбор тактовой частоты
– Конфигурационный бит для перевода в режим совместимости с ATmega103
– Общее выключение подтягивающих резисторов на всех линиях портов ввода-вывода - Ввод-вывод и корпуса
– 53 –программируемые линии ввода-вывода
– 64-выв. корпус TQFP - Рабочие напряжения
– 2.7 — 5.5В для ATmega128L
– 4.5 — 5.5В для ATmega128 - Градации по быстродействию
– 0 — 8 МГц для ATmega128L
– 0 — 16 МГц для ATmega128
Для поддержки контроллера Atmega128 в среде разработке Arduino IDE необходимо выполнить следующие действия:
- Откройте вкладку Файл >> Настройки и в поле «Дополнительные ссылки для менеджера плат» добавьте адрес:
https://mcudude.github.io/MegaCore/package_MCUdude_MegaCore_index.json
- Далее откройте вкладку Инструменты >> Плата >> Менеджер плат
В поле поиска введите число: 128, установите набор плат: MegaCore by MCUdude
- Выберите плату ATmega128
- Для прошивки скетча или загрузчика Вам понадобится программатор USBAsp
В моем случае я использую микроконтроллер который установлен на плату переходник, схема подключения достаточно простая:
- Далее скопируйте и вставьте в Arduino IDE следующий тестовый скетч (BLINK):
void setup() { pinMode(PE6, OUTPUT); } void loop() { digitalWrite(PE6, HIGH); delay(100); digitalWrite(PE6, LOW); delay(100); }
Подключите к выводу 8 (PE6) через резистор 300 Ом светодиод. После загрузки скетча светодиод начнет мигать.
Для загрузки скетча выберите вкладку — Скетч >> Загрузить через программатор
После загрузки скетча появится следующее сообщение:
Для удобства использования Atmega128 можно установить загрузчик, для этого выберите вкладку — Инструменты >> Записать загрузчик.
После записи загрузчика Вы в Arduino IDE увидите примерно следующее:
Очень удобно для прошивки микроконтроллера использовать переходник USB — TTL используя для этого пины 2 (PE0 — TXD) и 3 (PE1 — RXD) . Фактически Вы будете загружать скетчи как в плату Arduino.
Переходник USB — TTL подключите к Atmega128 по следующей схеме:
Во вкладке — Инструменты >> Программатор выберите >> AVRISP mkll (MegaCore)
Для загрузки скетча нажмите кнопку «Загрузка» в Arduino IDE и как только закончится компиляция нажмите кнопку RESET на плате Atmega128.
Пример тестового скетча:
void setup() { Serial.begin(9600); } void loop() { Serial.println("Atmega128"); delay(1000); }
Плата
Схема платы ATmega128
Все работает. Грабли, использовал такой же дизайн, кварц своей шляпкой давил на лак и видимо добрался до дорожки, чего было достаточно, что бы кристалл не определялся, выяснил после перепайки чипа и попытке перепаять кварц. Так же совсем не дружили мои usbasp с arduino ide, решилось заменой averdude в ide.
На платке есть свободные места для распайки isp разъема и usp-ttl, что и сделал. Спасибо за толковую статью.