AVR не может войти в режим программирования

У меня есть ATMega88PB на печатной плате, которая не входит в режим программирования после изменения настроек предохранителя на EXTFSXTAL_16KCK_14CK_0MS. До этого AVRISP MkII мог взаимодействовать с микроконтроллером (с тех пор я перешел на Atmel ICE, который до сих пор не может взаимодействовать).Ошибка Атмел Студио

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

Я нахожу это сбивающим с толку, потому что генератор, похоже, работает нормально - если бы я запрограммировал неправильную настройку предохранителя (например, ext clk), то я бы ожидал, что генератор будет отключен для экономии энергии. Как видите, это не так, поскольку частота генератора чуть ниже 20 МГц.

Форма сигнала XTAL2:Форма сигнала XTAL2

Форма сигнала XTAL1:XTAL1 Форма волны

Вот схема цепи генератора:Схема

Я пытался запрограммировать устройство на всех доступных скоростях, но безуспешно. Я также безуспешно пытался подать тактовый сигнал с контакта CLK0 работающего ресивера и пробовал нагрузочные конденсаторы емкостью 18 пФ вместо 33 пФ, указанных на схеме.

Что еще я могу попытаться снова запустить этот микроконтроллер?

Ответы (1)

Ваш низкий регистр предохранителя - 0xD7. Это равно 0b1101 0111 в двоичном формате.

Глядя на таблицу данных, младшие 4 бита отвечают за часы. Это коррелирует с

CKSEL3 = 0, CKSEL2 = 1, CKSEL1 = 1, CKSEL0 = 1.

Согласно техническому описанию это недопустимая настройка, но ее можно установить на низкочастотный кварц. Двумя аналогичными допустимыми настройками являются 0b0100 и 0b0101, они оба предназначены для низкочастотного генератора. Попробуйте заменить кварц 20 МГц на кварц 32,768 кГц.

Несоответствие ожидаемой частоты и фактической частоты может привести к тому, что процессор не запустится.

Если это не сработает, вам, возможно, придется использовать параллельное программирование для восстановления чипа. Параллельное программирование не требует рабочего кристалла и обеспечивает внешние часы.

Вот скриншот листа данных.введите описание изображения здесь

Я сейчас не за компьютером, поэтому не могу проверить, но возможно ли, что регистр предохранителей, показанный студией atmel, является старыми настройками предохранителей, которые он обнаружил до записи нового предохранителя? (На скриншоте SUT_CKSEL изменен, но еще не записан).
На странице 27 таблицы данных указано, что CKSEL3...0 = 0111 - 0110 соответствует полному кварцевому генератору, поэтому я не уверен, почему вы думаете, что это недопустимая настройка. Кроме того, SUT1...0 и CKSEL0 = 011 соответствуют кварцевому генератору с включенным БПК. (время запуска 16k CK, +19CK после сброса) и, наконец, CKDIV8 = 1 означает, что деление часов отключено. Это предохранители, которые я намеревался запрограммировать, поэтому я не вижу проблемы.
@bhillam Я не уверен, из какого листа данных вы работаете, где вы его взяли? Я получил этот лист данных с веб-сайта Atmels. На фото страница 30. Настройка генератора 0111 не указана.
Кажется, у меня есть предварительный лист данных. imgur.com/ID8x0TR не то, чтобы это имело значение, поскольку Atmel Studio должна иметь правильные настройки предохранителей (я не вводил шестнадцатеричное поле, я выбрал их в графическом интерфейсе).
@bhillam Итак, что именно находится в полях HEX? Потому что ваш снимок экрана показывает 16kCK_14CK_0MS, что не является параметром, указанным в таблице данных.
У меня нет возможности узнать, какие сейчас фактические биты предохранителей, так как программатор не будет связываться с avr. Когда я получу кристалл на 32 кГц, я попробую проверить его.
Я заменил кварц 20МГц на кварц 32.768кГц и теперь генератор вообще не запускается - раньше он колебался, но не реагировал на программатор.
@bhillam Тогда параллельное программирование - единственный оставшийся способ восстановить чип.
В итоге я снова запрограммировал чип, введя внешний тактовый сигнал 1 МГц на вывод XTAL1/TOSC1 (моя ошибка заключалась в том, что при этом я оставлял кристалл подключенным). Фьюзы, считанные программистом, теперь такие: ex: F9, hi: DF, lo: 77, поэтому я не уверен, откуда программа взяла предыдущие биты фьюзов. Как и ожидалось, это полноценный кварцевый осциллятор, поэтому я не уверен, почему возникла проблема. Кварц колебался на частоте 20 МГц, но не в полную силу (размах всего около 2 В пик-пик), поэтому теперь мой вопрос: почему генератор не может достичь рельсов? (0-5В)?
Что бы это ни стоило, опция кварцевого генератора с полным ходом была удалена из версии rev. 42176E (октябрь 2015 г.) таблицы данных ATMega48/88/168PB (без пояснений). Кроме того, в техническом описании не указано, что работа на частоте выше 16 МГц поддерживается маломощным кварцевым генератором (единственный вариант высокоскоростного генератора). Наконец, AtmelStudio, по-видимому, не сужает параметры фьюзов в зависимости от выбранного устройства, позволяя программировать совершенно бессмысленные фьюзы.