AVR088
Рекомендации по переходу между микроконтроллерами ATmega8535 и ATmega16
Введение
В данном документе приведены рекомендации для пользователей микроконтроллеров ATmega8535 для перехода на микроконтроллер ATmega16. Кроме того, эта информация будет полезна для пользователей, осуществляющих обратный переход с ATmega16 на ATmega8535. Для пользователей микроконтроллера AT90S8535 разработано отдельное руководство AVR086 «Замена A90S8535 на ATmega8535».
Помимо описываемых в этом документе отличий у ATmega16 имеется следующая особенность:
- Интерфейс JTAG (разрешен по умолчанию)
- Электрические характеристики данных микроконтроллеров также отличаются. Для получения более детальной информации необходимо изучить документацию на микроконтроллеры.
- Размер памяти
Некоторые типы памяти больше у ATmega16. В таблице 1 приведено сравнение размеров различных типов памяти.
Таблица 1 – Сравнение размеров памяти
|
ATmega8535 |
ATmega16 |
Флэш-память |
8 кбайт |
16 кбайт |
ОЗУ |
512 байт |
1 кбайт |
ЭСППЗУ |
512 байт |
512 байт |
Также отличаются размеры загрузочного сектора (Boot Loader). Необходимо обратить внимание на следующее:
- Размер страницы флэш-памяти 64 слова у ATmega16 взамен 32 слов ATmega8535.
- Секция No-Read-While-Write (нет_чтения_во_время_записи) начинается с адреса 0x1C00, а не с 0xC00.
Векторы прерываний и относительные переходы/вызовы процедур
ATmega8535 использует 1-словные векторы прерывания, а ATmega16 - 2-словные векторы. 1-словный вектор может содержать только инструкцию относительного перехода RJMP, которая в свою очередь не способна адресоваться в пределах всего размера памяти ATmega16 (8 кслов).
Команды RJMP/RCALL способны адресоваться в любом направлении памяти в пределах 2 кслов за счет циклического перехода в начало при достижении конца (4 кслов) флэш-памяти ATmega8535, тем самым охватывая весь диапазон памяти. Команды циклических переходов RJMP/RCALL должны быть заменены на JMP/CALL для адресации в пределах 8 кслов флэш-памяти ATmega16.
Компилятор или ассемблер учитывают данные отличия, пропуская правильно указанные команды или выдавая сообщение об ошибке в противном случае.
Таблицы прерываний эквивалентны.
Конфигурационные биты
Отличие состоит в двух конфигурационных битах, как показано в таблице 2.
Таблица 2 – Расположение конфигурационных бит
Номер позиции бита |
ATmega8535 |
ATmega16 |
Старший конфигурационный байт |
7 |
S8535C |
OCDEN |
6 |
WDTON |
JTAGEN |
5 |
SPIEN |
SPIEN |
4 |
CKOPT |
CKOPT |
3 |
EESAVE |
EESAVE |
2 |
BOOTSZ1 |
BOOTSZ1 |
1 |
BOOTSZ0 |
BOOTSZ0 |
0 |
BOOTRST |
BOOTRST |
Младший конфигурационный байт |
7 |
BODLEVEL |
BODLEVEL |
6 |
BODEN |
BODEN |
5 |
SUT1 |
SUT1 |
4 |
SUT0 |
SUT0 |
3 |
CKSEL3 |
CKSEL3 |
2 |
CKSEL2 |
CKSEL2 |
1 |
CKSEL1 |
CKSEL1 |
0 |
CKSEL0 |
CKSEL0 |
Дополнительная информация
При использовании ATmega16 необходимо также учесть следующее:
- Сторожевой таймер реализован без уровней безопасности, что означает возможность изменения установок предделителя без временной последовательности, как у ATmega8535.
- Не реализован режим постоянного включения сторожевого таймера
- Обратите внимание, что при запуске встроенной отладочной системы основной тактовый генератор продолжит свою работу даже в режимах сна (sleep). Это потребует существенного общего потребления тока. Поэтому, по мере необходимости разрешайте/запрещайте работу этой системы с помощью конфигурационного бита OCDEN.
наливные полы, полиуретановые полы
|