Как узнать, какие предохранители установлены на ATtiny?
Исходя из этого вопроса, Проблема с программированием ATtiny85: Ошибка - avrdude: Yikes! Недопустимая подпись устройства,
если ответ от avrdude
равен 0x000000
, то внутренний генератор, вероятно, не используется и требуется внешний (будь то кристалл или тактовый сигнал).
Однако, как показывает это меню из Калькулятора предохранителей Engbedded Atmel AVR®, существует много вариантов:
Итак, вместо того, чтобы настраивать схемы для каждого из параметров, по очереди, пока ATtiny не ответит, есть ли какой-либо способ, которым я могу прочитать, какой из CKSEL
и предохранители SUT
установлены?1
Фон
Я использую Nano/Uno в качестве ISP-программатора, а ATtiny находится на такой же плате разработки (хотя это была бы та же проблема, если бы я использовал макетную плату):
Я точно знаю, что соединения в порядке, так как я проверил их от контакта к контакту двух микросхем (ATmega328PU и ATtiny85) с помощью цифрового мультиметра.
Я получаю 0x000000
, например:
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
потому что программатор ISP не может прочитать ATtiny, так как внешний источник синхронизации был установлен через фьюзы. Однако я хочу знать, как прочитать, какой источник синхронизации был указан, без необходимости вручную проверять все перестановки схемы.
Я не думаю, что простое подключение кварца (и двух керамических конденсаторов) сработает, если выбрана точная настройка, т.е. внешние часы. Однако, если кристалл 16 МГц работает для всех или любых настроек внешних часов, это было бы здорово, но я уверен, что это не работает так, поскольку вы можете подключить кристалл, но это может быть не так. используется, см. Означает ли подпись устройства 0x000000, что atmega неисправен:
Даже если у вас подключен кристалл, это не означает, что он колеблется. Например, ЕСЛИ вы установите предохранители для «Внешнего генератора», это отключит кварцевый генератор.
Когда я перенес ATtiny85 на макетную плату и добавил кварц (16 МГц) и два конденсатора по 22 пФ, ошибка изменилась в лучшую сторону (по крайней мере теперь видит, что подключен ATtiny)
avrdude: Device signature = 0xff0000
avrdude: Expected signature for ATtiny85 is 1E 93 0B
Double check chip, or use -F to override this check.
Интересно, что подпись меняется:
0xff0000
0x00ffff
0xff00ff
Когда я добавляю внешний источник питания к ATtiny на макетной плате, следуя совету Atmega (любой чип) Проблемы с подписью устройства и stk500_getsync()(разрешения), то, к сожалению, подпись устройства в ответе возвращена avrdude
возвращается к 0x000000
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
1 Это, по общему признанию, немного курица и яйцо, как будто я не могу связаться с ATtiny из-за неправильной настройки часов, то как я могу прочитать, какие предохранители поставили..? Это все равно, что сказать: "Если в моей машине нет бензина, как я могу доехать до заправочной станции, чтобы заправиться?" - но я надеялся, что может быть какая-то мера экономии времени
@Greenonline, 👍1
Обсуждение2 ответа
Вам нужен программатор, который подключается к контактам ISP
http://ww1 .microchip.com/downloads/en/DeviceDoc/Atmel-2586-AVR-8-bit-Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet.pdf
Программист будет удерживать сброс на низком уровне, а затем обмениваться данными через выводы SCK/MOSI/MISO для чтения/обновления фьюзов, чтения/программирования памяти и, при необходимости, чтения/программирования EEPROM.
Раздел 20.2 обсуждает 3 байта предохранителя.
Я использую более старый Atmel AVR-ISP MKii. Atmel прекратила их производство, кажется, есть много доступных вариантов замены, и Atmel Studio 7, когда я борюсь с Atmega328P, '1284P и 2560. Я еще не использовал Attiny в проекте.
https://www.microchip.com/mplab/avr-support/atmel-studio -7
Я, видимо, не совсем ясно сформулировал свой вопрос. Я использую Nano/Uno в качестве программатора интернет-провайдера. Я получаю «0x000000», как в «avrdude: подпись устройства = 0x000000», потому что программист интернет-провайдера не может прочитать ATtiny, поскольку внешний источник синхронизации был установлен через предохранители. Однако я хочу знать, как прочитать, какой источник синхронизации был указан, без необходимости вручную пробовать все перестановки схемы. Это, по общему признанию, немного похоже на курицу и яйцо, как будто я не могу связаться с ATtiny из-за неправильной настройки часов, тогда как я могу прочитать, какие предохранители были установлены..?, @Greenonline
Я думаю, вам просто нужно поставить часы, простой способ - подключить кристалл и два конденсатора по 22 пФ. Почитайте здесь, Ник Гаммон решает множество вопросов по настройке предохранителей. https://www.gammon.com.au/forum/?id=11643, @CrossRoads
Я думал, что это может не работать, если не выбрана точная настройка. Если XTAL 16 МГц работает для всех или каких-либо настроек внешней тактовой частоты, тогда это было бы здорово, но я уверен, что это не работает так. , поскольку вы можете подключить XTAL, но он может не использоваться, см. [Означает ли подпись устройства 0x000000, что Atmega плоха](https://www.avrfreaks.net/forum/does-device -signature-0x000000-mean -atmega-bad): `Даже если у вас подключен кристалл, это не значит, что он колеблется. Например, если вы установите предохранители для «Внешнего генератора», кварцевый генератор отключится., @Greenonline
Лучший способ узнать наверняка — использовать программатор высокого напряжения (12 В), чтобы сбросить все настройки. https://gammon.com.au/forum/?id=12898, @CrossRoads
Этот последовательный сброс высокого напряжения выглядит многообещающе, но на странице не совсем ясно, как сбрасывать конкретные предохранители и на какое значение. Я думаю, что требуется больше чтения. Простая подача напряжения 12 В сама по себе не сбрасывает предохранители, а просто переводит их в режим последовательного программирования. Мне нужно будет больше прочитать об этом., @Greenonline
Конечно, см. раздел 20.7 технических данных и таблицу 20.16. Насколько я помню, вам нужно выполнить стирание чипа, прежде чем вы сможете сбросить предохранители., @CrossRoads
Похоже, это проблема X -> Y, поскольку X является отсутствующим источником синхронизации на вашем ATTiny, что препятствует обмену данными.
Если у вас есть второе устройство Uno или другое AVR-устройство, вы можете использовать его для генерации тактового сигнала на любом из цифровых контактов:
void setup() {
DDRB = 0b00100000;
}
void loop() {
PINB = 0b00100000;
}
Это создает прямоугольный сигнал на контакте 13 с частотой 1,6 МГц.
В зависимости от уровня оптимизации IDE (platform.txt) также достижима частота 4 МГц (при -O3
вместо -Os
).
Подключив его к контакту XTAL1
вашего ATTiny85, вы сможете установить связь с платой.
Обязательно соедините все заземления.
- Связь последовательного порта Digispark
- Библиотеки I2C для ATTiny85?
- ATtiny85 Digispark clones failing USB handshake - как их запрограммировать?
- длина провода i2c
- Программирование сервопривода на ATtiny85
- Программирование микроконтроллера Attiny85 без arduino
- Digispark ATtiny 85 - не распознается как HID устройство
- Клавиатура Digispark ATtiny85
Как вы питаете Attiny во время программирования? Дополнительный конденсатор на VCC-GND? https://forum.arduino.cc/index.php/topic,51819.0.html?utm_source=rb-community&utm_medium=forum&utm_campaign=device-signature-0x000000-while-burning-bootloader, @Mikael Patel
Порт USB на этой плате **используется только для питания**! Вы не можете запрограммировать ATTiny через этот порт USB., @Gerben
@Gerben - я использую контакты ICSP и Nano в качестве программиста ISP. Как только вы установите [загрузчик micronuleus](https://github.com/micronucleus/micronucleus) *тогда* вы можете использовать USB-порт для его программирования... см. [Вдохнув жизнь в клон DigiSpark с помощью ATtiny MCU ]( https://makbit.com/web/firmware/breathing-life-into-digispark-clone-with-attiny-mcu/), @Greenonline
@MikaelPatel - Нет, у меня не было ни одного из этих ... интересно ... Я добавил 20 мкФ, но все те же случайные ошибки подписи ... Я заметил, что в ссылке рекомендуется внешний источник питания, кроме того к дополнительной шапке. Однако, когда я добавил регулятор и дополнительный колпачок, ситуация пошла на убыль, и сигнатура устройства, к сожалению, вернулась к
0x000000
., @GreenonlineВозможно, установлен предохранитель отключения интернет-провайдера. У меня было несколько ATTiny13 из Китая, у которых были предварительно запрограммированы предохранители, что делало их непригодными для использования. Я делаю простой программатор высокого напряжения для сброса предохранителей. Кажется, я использовал этот код и схему https://github.com/tsaarni/avr-high-voltage-serial-programming. Довольно простая схема. Всего два резистора и транзистор. Для источника 12 В я просто поставил 4 ячейки CR2032 друг на друга, удерживая одной рукой две перемычки на обоих концах. Очень халтурно, но сработало., @Gerben