MAL4X Научно-технический форум разработчиков симуляторов и автоматики


Симуляторы перегрузок. DIY электроника. ЭВМ. Компьютерные сети.
Up

AVR Фьюзы

Техническая поддержка нахаляву, но не оперативная.

Модераторы: Death_Morozz, FELiS, null

AVR Фьюзы

Сообщение FELiS » 15 авг 2012, 11:41

Уважаемые кодеры, влияют ли тактовые фьюзы на программирование микроконтроллера? Понипрог не видит мегу 32ую, Я её спалил или неправильно выставил фьюзы? На программаторе кварц 4мгц, может стоит поиграться с кварцами, попробовать их подобрать и МК оживет?
Аватара пользователя
FELiS
Добрый Фелис
 
Сообщения: 532
Зарегистрирован: 11 янв 2007, 23:21
Благодарил (а): 27 раз.
Поблагодарили: 123 раз.
Баллы репутации: 156
ТехнарьТехнарь

Сообщение Ale » 15 авг 2012, 12:47

FELiS писал(а):влияют ли тактовые фьюзы на программирование микроконтроллера

Конечно влияют. Если под "тактовыми" фьюзами ты подразумеваешь CKSEL3..0. Дело в том, то если контроллеру не обеспечить тактовую частоту, до него программатором ISP достучаться невозможно. Как правило контроллер продается с предустановленными фьюзами на внутренний RC генератор. А дальше - выбирай при программировании. И тут при неосторожном обращении с фьюзами вполне можно "потерять" контроллер. Приведу возможные ошибки.

1 - CKSEL3..0 выставляются в расчете на внешний кварц. А кварц не запускается, тактовая не идет, достучаться до контроллера уже нельзя.
РЕШЕНИЕ ПРОБЛЕМЫ - замена кварца или внешний генератор к ноге XTAL1 и перепрошивка контроллера.
ВАЖНО - для улучшения условий запуска кварцевого резонатора обязательно припаять на ноги кварца рекомендуемые емкости 20..30 пик на землю. И прошивать фьюз CKOPT, если частота кварца выше 8 МГц.
Вообще это наиболее часто встречающаяся причина "потери" контроллера.

2 - при программировании контроллера импульсы CLK от программатора должны иметь частоту как минимум в 4 раза ниже, чем частота тактового генератора (любого) контроллера. Иначе к нему тоже не достучаться. Как правило в программаторах есть возможность установки этой частоты.

3 - редкий, но довольно опасный случай - случайное стирание фьюза SPIEN (разрешение программирования по последовательному SPI каналу). По умолчанию этот фьз запрограммирован. Если его стереть, то достучаться до микрухи можно только через JTAG. А если при этом еще и JTAGEN затереть, то только высоковольтное параллельное программирование.

4 - есть еще более экзотическая возможность, правда не потери контроллера, а "отсутствия" его работы. Если питание на контроллере, допустим, 3.3В, а при программировании ему прошили BODEN и BODLEVEL. При этом включается внутренний супервизор питания, который при падении напряжения питания контроллера ниже порога (а данном случае порог устанавливается программированием BODLEVEL = 4.0 вольта) дает ему "железный" ресет. И если напряжение питания ниже порога, контроллер просто не будет запускаться

Как-то так, вроде

ЗЫ: Pavel155 (что-то его давно не видно) собирал специальную схему - "доктора", которая вроде может оживлять контроллеры, у которых проблемы с фьюзами.
Наверное типа такого
http://getchip.net/posts/059-ispravlyaem-avr-fyuzy-pri-pomoshhi-atmega-fusebit-doctor/
В нем как раз проблемы устраняются параллельным высоковольтным (+12В) программатором
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Сообщение FELiS » 15 авг 2012, 15:46

Ale
Спасибо за содержательный ответ, вероятно я выставил фьюзы на другую частоту резонатора, попробую заменить кварц в программаторе на другие номиналы согласно даташиту.

Собирать девайс по ссылке накладно, я думаю он имеет смысл только при серийном производстве аппаратуры.
Аватара пользователя
FELiS
Добрый Фелис
 
Сообщения: 532
Зарегистрирован: 11 янв 2007, 23:21
Благодарил (а): 27 раз.
Поблагодарили: 123 раз.
Баллы репутации: 156
ТехнарьТехнарь

Сообщение Ale » 16 авг 2012, 09:47

Ну и вдогонку, так сказать.

Есть у AVR одна неприятная особенность - при плавном повышении или понижении напряжения питания ( что совсем не редкость, учитывая могучие емкости в фильтрах источников питания) контроллер имеет свойство портить свой EEPROM. Для приложений, не использующих eeprom это не имеет значения. А вот если программа хранит в eeprom какие-либо данные, их запросто можно потерять.

Именно для предотвращения подобных ситуаций и был введен супервизор питания, о котором я писал в предыдущем посте. Включается от фьюзом BODEN, а порог срабатывания настраивается фьюзом BODLEVEL.

Таким образом, если контроллер запитывается от +5В, рекомендуется программировать BODEN и BODLEVEL (порог супервизора = 4В). Для приложений, работающих от +3.3В рекомендуется использовать контроллеры с индексом 'L' например atmega32L. У них есть возможность выставить порог = 2.7В.
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь


Вернуться в Техподдержка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 58

cron
x

#{title}

#{text}