21. Мощные МК AVR



Автор: WildCatМощные микроконтроллеры AVR

Если ваш проект не слишком сложный и запутанный, то наверняка вам подойдет ATTiny2313 или ныне покойный AT90S2313 из дедушкиных запасов. Но если вам нужно много портов ввода/вывода, больше оперативной памяти, EEPROM, да и места под основную программу, вам придется выбрать более навороченный контроллер. Например, я часто пользуюсь ATMega8535, у которого 8 килобайт программной памяти и всевозможные модули. Выпускается он в сорокалапом корпусе.
Однако мой самый любимый контроллер, который подходит для практически всех моих проектов - ATMega8. Давайте сравним его с некогда популярным AT90S2313:



С более мощными микроконтроллерами вам возможно придется менять их фузы. По умолчанию ATMega8 работает на внутреннем тактовом генераторе 1 МГц. Если вы хотите использовать внешний генератор, вам нужно установить некоторые фузы.
Сначала определим их значения по умолчанию для нового микроконтроллера ATMega8. Соберем на макетной плате такую схему:



Хоть МК и работает на внутреннем генераторе, мы все равно подключим к нему внешний кварцевый резонатор. Запустим TWinAvr и нажмем Config. Посмотрим на настройки фузов по умолчанию:



Как показано в даташите на стр. 24, фузы CKSEL3, 2, 1 и 0 должны быть установлены в "1111" для работы с внешним тактовым генератором.



В окне Config TWinAvr поставьте галки CSKSEL3, 2, 1, 0 и снимите галку с CKOPT:



Теперь ваш контроллер будет работь от внешнего резонатора с максимально возможной частотой 16 МГц. Если же вам нужны другие настройки тактовых генераторов, вам следует тщательно ознакомиться с даташитом и расстановкой фузов.
Когда TWinAvr считывает значения фузов из чипа в первый раз, тот работает на внутреннем тактовом генераторе в 1 МГц. Хотя TWinAvr общается с контроллером на частоте 4 МГц, все вроде работает, как это ни странно. Но если вы испытываете какие-то проблемы с чтением фузов, попробуйте снизить скорость TWinAvr с 4 до 1 МГц:



Еще два жирных контроллера - ATMega32 и ATMega128. У них 32 КБ и 128 КБ программной памяти соответственно и гораздо больше портов ввода/вывода и периферийных устройств. ATMega32 доступен в DIP исполнении, ATMega128 - только в SMD. Но их можно использовать вот так:



Обратите внимание: если вы хотите использовать PortF.4, 5, 6 и 7 как обычные порты ввода/вывода, вы должны отключить фуз JTAG, или, иными словами, установить галку JTAG в TWinAvr:



Здесь фузы настроены на работу с внешним тактовым генератором. Фуз CKOPT установлен, чтобы позволить работать микроконтроллеру с максимальной частотой 16 МГц. Фуз M103C не включен, так как мне не нужна совместимость с ATMega103.

Иногда случаются страшные и ужасные вещи, если напутать с фузами. Если после манипуляций с тактовыми фузами ваш контроллер перестал включаться и отвечать TWinAvr, вы можете попробовать подключить TTL генератор ко входу XTAL1 чипа. После этого снова проверьте, видить ли он TWinAvr. При необходимости смените тактовую частоту программы. Если программа увидела чип, снова выставьте фузы и попробуйте запустить контроллер.

DECADALAB ALFA