LINUX.ORG.RU

Atmega8

 


0

3

Доброго времени суток. Столкнулся с проблемой в программировании atmega8, а именно в установке фьюзов для работы с внешним кварцем на 20MHz. Программатор UsbAsp, программирую в avrdude. Уже две атмеги запорол, прошу подсказать правильную последовательность действий.

С уважением UB4AEP

В 2017-м году контроллеры, которые настраиваются фьюзами, должны отправиться в топку.

По теме: ты убедился осциллографом на тактовых выводах, что генератор завелся? Синус видишь? А какие значения ты вписывал? Ты знал что у фьюзов некоторые значения значат ровно обратное, т.е. 1 означает 0 - твой программатор это учел?

I-Love-Microsoft ★★★★★ ()

20 MHz многовато будет для Atmega8. Это раз. Если не те фьюзы в плане тактового генератора прошил и теперь контроллер не запускается, «оживить» его можно просто подав 1 MHz сигнал на XTAL с любого источника, хоть с другого контроллера, во время прошивки. Это два.

В помощь

http://www.engbedded.com/fusecalc/

выбираешь все настройки, внизу страницы формируется командная строка для avrdude. Это три.

curufinwe ★★★★★ ()

Контроллер с завода тактируется от внутреннего генератора - шить фьюзы лучше всего на самой низкой скорости, например: avrdude -c usbasp -B 1200 -p $DEVICE -U hfuse:w:$HFUSE:m -U lfuse:w:$LFUSE:m После этого, программу уже можно лить без ограничений по скорости: avrdude -c usbasp -p $DEVICE -U flash:w:«firmware.hex»:a

Saunk ()
Ответ на: комментарий от I-Love-Microsoft

Осциллографом не проверял. Ставил Галочки во фьюзах те которые указанны были. Этого не знал.

UB4AEP ()
Ответ на: комментарий от curufinwe

В схеме указан на 20МГц кварц. Он программатором не определяется совсем. Спасибо за совет, попробую. С генератора ВЧ сигналов если подать, пойдёт?

UB4AEP ()
Ответ на: комментарий от UB4AEP

По даташиту он до 16 МГц вроде, может и на 20 работать, но не гарантированно. На 18 у меня работает стабильно.

С генератора ВЧ сигналов если подать, пойдёт?

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

curufinwe ★★★★★ ()
Последнее исправление: curufinwe (всего исправлений: 1)
Ответ на: комментарий от curufinwe

Что-то не понял я что указывать надо, кроме выбора мк

UB4AEP ()

установке фьюзов для работы с внешним кварцем на 20MHz
Уже две атмеги запорол

После этих джвух атмег мог бы сделать вывод, что авр — бесполезный кусок кремния и купить наконец нормальный контроллер на ARM, вроде STM32.

Unicode4all ★★★★ ()
Ответ на: комментарий от Unicode4all

Выйдет просто ещё N запоротых армов же.

anonymous ()
Ответ на: комментарий от Unicode4all

Ага, а потом бы ТС: Уже два ARMа запорол :D

anonymous ()
Ответ на: комментарий от anonymous

Запороть stm32 надо сильно постараться. У меня так и не получилось.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от curufinwe

В принципе, фьюзами убить Atmega8 можно только если отключить ножку Reset соотв. фьюзом.

Или отключить ISP?

И то, всегда есть high-voltage programming.

intelfx ★★★★★ ()
Ответ на: комментарий от Unicode4all

На arm не пойдёт, не придумали ещё это устройство на нём

UB4AEP ()
Ответ на: комментарий от UB4AEP

В самом деле, переходите на ARM (тот же STM32, а я вообще МК Миландр пользуюсь). Я всю молодость с AVR возился, теперь только ARM - стартуют они как правило от встроенного RC-генератора, а потом на лету разгоняются на нужную частоту изнутри посредством программных настроек.

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Да я все понимаю, просто прошиваю я мк раз в пятилетку и готовой прошивкой вот и натолкнулся на камень подводный этот с фьюзами

UB4AEP ()
Ответ на: комментарий от Dark_SavanT

Запороть stm32 надо сильно постараться

+1, разве что в раскаленный металл кинуть или кувалдометром придавить с размаху, программно запороть ИМХО нереально

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Подскажите как правильно прошивать. Сперва прошивку прошить, а потом фьюзы?

UB4AEP ()
Ответ на: комментарий от UB4AEP

На самом деле уже ответили, что разницы в общем-то нет.

Программатор позволяет прочитать ID контроллера? Или просто считать фьюзы (не зашивать, а именно считать).

Хорошо, могу ли я увидеть командную строку программатора или скриншот графического интерфейса с фьюзами? Я могу посмотреть и проверить их корректность.

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от UB4AEP

Какие значения если считать fuse на новом исправном контроллере? Они такие, как представлены на картинке?

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от UB4AEP

ATmega8 не факт что может на 20 МГц, максимум 16 МГц (кажется). Ты уверен что 20 может? Попробуй кварц на 8 МГц подцепить - запустится?

Фьюзы абсолютно верны с твоей стороны. CKOPT=0, CKSEL3:0=1111, SUT1:0=10 это верно для 16 МГц кварца. Не забудь правильные конденсаторы.

Судя по картинке, дефолтные значения, например RSTDISBL, в даташите в состоянии 1, у тебя на картинке тоже. Видимо все таблицы имеют одинаковую полярность. Так что скорее 20 МГц не тянет, может старые экземпляры микросхем это еще могли (нештатно).

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от UB4AEP

В схеме указан на 20МГц кварц...

А в документации указана максимальная частота 16 МГц. На 20 МГц заведётся один контроллер из десяти. Просто впаяй кварц частотой пониже, в районе 10 МГц, должно запуститься.

one_more_hokum ★★★ ()
Ответ на: комментарий от UB4AEP

Для начинающего будет очень удобна такая обёртка над avrdude, как BitBurner, в ём сразу показываются те настройки, к которым приведёт комбинация фузов.

one_more_hokum ★★★ ()
Ответ на: комментарий от UB4AEP

В схеме указан на 20МГц кварц

Значит надо ставить именно ТУ мегу, есть вариации одного и того же контроллера, которые могут работать на разных тактовых. Возможно у тебя неподходящая вариация/ревизия.

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

с пониженной частотой есть только ATMega8L — 8 МГц максимум

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.