NOT_AI (07.10.2005 14:17, просмотров: 4740)
Несколько вопросов по AVR от начинающего В начале предыстория.
Решил заняться изучением микроконтролёров в свободное время. Как раз подвернулась простая задачка: собрать таймер времени от 1 миллисекунды до десятков секунд. Все книжки для начинающих написаны на примере AT90S2313, но в магазинах его в DIP корпусе нет (давно уже прекратили выпускать). Решил собрать на ATTiny2313. Прочитал официальную документацию по ATTiny2313 и о замене AT90S2313 на него. Несколько смутило расхождение в описании значений по умолчанию fuse битов для tiny.
Собрал программатор STK200/300. Для программирования использовал avreal. Первые грабли были с частотой внутреннего генератора. В описании написано что он имеет частоту 8МГц и коэффициент деления 8, т.е. частота на которой работает микроконтролёр равна 1МГц. При указании такой частоты avreal не может синхронизироваться. Решить эту проблему помогла статья на этом форуме "Отчет от замене AT90S2313 на ATtiny2313". При указании частоты в 12.5 раз меньше чем частота RC генератора синхронизация прошла с первой попытки.
Зашил первую программу мигания светодиодом. Всё заработало, светодиод подключенный к МК и через сопротивление 1кОм на общий замигал с интервалом примерно 1 секунда. Решил определить опытным путём частоту на которой работает МК. Для этого увеличил задержку в программе и заново записал. Интервал увеличил слишком сильно: 58 секунд. Уменьшил задержку в два раза, прошил и ... после этого пошли проблемы. Мигал светодиод не 29 секунд а меньше одной. После ещё одной попытки перезаписи программы в МК он перестал подавать признаки жизни вообще. Не работала даже программа которая просто устанавливала 1 на выводе к которому подключен светодиод. При этом МК можно было спокойно перезаписывать, из чего можно сделать вывод что внутренний RC генератор всё таки работает.
Но так как поставленная задача проста и её можно решить с помощью AT90S1200 я так и решил сделать (кроме того удалось купить такой МК в DIP корпусе). Написал программу в AVR Studio, протестировал её в дебагере. При попытке записать avreal выдает: Device connected, but not recognised, ID: 0x000102 (looks as protected). Ключик '-!' не помогает. Такая проблема описывалась чуть больше года назад на этом форуме.
Вот на этом и заканчивается предыстория, а теперь вопросы:
1. Что случилось с ATTiny2313, можно ли восстановить её работоспособность или её можно выкинут?
2. Какова реальная частота на которой работает по умолчанию ATTiny3213, и как подстроить её для получения необходимых значений?
3. Имеет ли смысл использовать внутренний RC генератор для задач где нужно определять промежутки времени с погрешностью 1% (устройство запитывается от батареек, температурный интервал от 10°С до 30°С)?
4. Есть ли ещё какие-нибудь грабли для начинающих до которых я не дошел в изучении Tiny?
5. Что вообще делать с AT90S1200 (параллельного программатора у меня нет)?
6. У всех столько проблем было в начале или это я такой везучий?