ATMega644PA, возможно, замурована установкой фьюзов с помощью avrdude

Я программировал ATMega644PA с помощью avr-gcc и avrdude в Linux некоторое время без проблем. Ну пока не решил поменять пару предохранителей. Я использовал опцию avrdude -p ATMEGA644Pдля программирования чипа, хотя это чип ATMega644P A.

Прочитав даташит (и прочитав предохранители на микросхеме) сделал следующее

avrdude -v -c avrispmkII -p ATMEGA644P -P usb -U lfuse:w:0x63:m

Чип больше не будет общаться. После этого я понял, что проблема, возможно, заключалась в том, что я установил биты для внешней синхронизации, а не для кварцевого генератора, но даже с использованием ATTiny для генерации сигнала 1 МГц на соответствующий контакт на моем Mega644 я все еще ничего не получаю.

Любые идеи относительно того, почему чип не отвечает? Может быть, причиной является использование определения avrdude для версии чипа P, а не для версии PA?

И, наконец, что я могу сделать, чтобы спасти свой чип? Я слышал, что это возможно с программированием высокого напряжения или JTAG. Смогу ли я сделать это с STK500?

Во-первых, добро пожаловать на сайт! Я надеюсь, что мы сможем предложить вам теплый прием, но ваш вопрос может быть обманом. Эти вопросы: chiphacker.com/questions/700/… , chiphacker.com/questions/717/… и chiphacker.com/questions/861/recovering-an-attiny13 также относятся к настройкам предохранителей на AVR. Но это другой чип (немного), другие настройки предохранителей и другой программатор, поэтому я говорю, что мы оставим это в покое (и у меня нет представителя, чтобы отметить это).

Ответы (1)

Нет, ваша настройка 0x63 в байте lfuse выбрала внутренний генератор 128 кГц в качестве источника тактового сигнала. (байты 3..0 — CKSEL, см. таблицу 7.1 на стр. 28 таблицы данных ATmega644 , где 0011 — «Внутренний RC-генератор 128 кГц»). Это хорошо и маломощно, но это означает, что ваш программатор, вероятно, не работает достаточно медленно, чтобы запрограммировать ваше устройство. Я не знаком ни с avrdude, ни с STK500, но вот откуда ваша проблема.

However, it will be difficult for you to brick your chip, because you've got the STK500, which can do high voltage programming and rescue it from most situations. As I've never used the device, I'll defer to the many other threads where others have posted problems and solutions for AVR fuse settings. There's also one here on Chiphacker (see my comment.)

Next time, this fuse setting calculator is a nice resource. It's fantastic that you read the datasheet, and tried to calculate what you wanted yourself, but the tool makes it much easier.

BTW, what were the fuses set to before you made the change?

Редактировать: похоже, что вариант «A» просто указывает, что он не является членом серии «* P * ico Power», так что это не должно иметь значения.

lfuse изначально был установлен на 0x64. Спасибо за ссылку на калькулятор предохранителей, действительно отличный ресурс.