Как использовать контакты ATtiny, которые обычно «зарезервированы» для программирования микросхем?

Как запрограммировать ATtiny45 на использование контактов 1, 5, 6, 7 (т.е. PB5, PB0, PB1, PB2) в качестве входа или выхода?

pinMode(5, OUTPUT);
pinMode(0, OUTPUT);
pinMode(1, INPUT);
pinMode(2, INPUT);
digitalWrite(5, HIGH);
...

Эти выводы обычно используются для программирования самого ATtiny, так как же избежать конфликта?

Конечно, я мог бы просто обойтись без этих 4 контактов, но тогда, поскольку есть также контакты для VCC и GND, остались бы только 2 контакта: PB3, PB4!

Вопрос: как использовать контакты в качестве ввода/вывода, которые обычно используются для программирования ATtiny?

Связанный вопрос:

  • Должен ли я подключить контакты 1, 5, 6, 7 ATtiny к программатору

  • Или мне следует подключить контакты 1, 5, 6, 7, а также 8 и 4 (VCC и GND) ATtiny к программатору?

Если вторая пуля верна, при подключении VCC и GND не заставит ли ATtiny запускать ранее загруженный код?

, 👍0

Обсуждение

Подсказка: они не *зарезервированы* для программирования. Они *двойные* как штифты для программирования., @Majenko


2 ответа


Лучший ответ:

1

Чипы ATTiny, обычно используемые в платах типа Arduino, такие как Adafruit Trinket или Digispark USB, обычно имеют загрузчик, который запускается перед вашим собственным кодом. Загрузчик проверяет определенное состояние USB-порта платы, чтобы увидеть, не ожидает ли что-то записи новой программы в чип.

Загрузчик принимает новый код от главного компьютера, если он есть, и записывает его в определенное место во флэш-памяти. Если загрузчик не находит ничего, подключенного к USB-разъему, пытающегося загрузить новую программу, то он (загрузчик) начинает выполняться из флэш-памяти в том месте, где была сохранена ваша программа.

Но что, если вы хотите написать новый загрузчик или не иметь загрузчика? В этом случае вы можете написать новое программное обеспечение, используя выводы MOSI, MISO и SCK (часы), если вывод RESET замкнут на землю.

См.: http:// ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2586-AVR-8-bit-Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet.pdf#page=151

Чтобы использовать все 6 контактов без питания в качестве ввода-вывода для Trinket или Digispark, в чипе ATTiny установлен «предохранитель», который отключает нормальное назначение контакта RESET — удерживать чип в состоянии сброса. Это означает, что вы не можете отключить RESET и загрузить программу обычным способом.

Если контакт RESET отключен, а загрузчик отсутствует, то существует другой метод загрузки программного обеспечения, который называется "Последовательное программирование высокого напряжения". Не беспокойтесь, «высокое» напряжение составляет около 12 В.

См.: http:// ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2586-AVR-8-bit-Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet.pdf#page=155

Вы можете найти схемы или приобрести комплекты/продукты, позволяющие запрограммировать чип ATTiny в режиме HV в Интернете. Многие используют маленькие батарейки на 12 В "A23" или "A27", которые обычно используются в радиочастотных передатчиках дистанционного управления, чтобы получить сигнал 12 В для перевода микросхемы в высоковольтный режим программирования.

,

это похоже на ответ на другой вопрос ОП, @Juraj

Оба, кажется, связаны..., @jose can u c

Спасибо за ваш ответ!, @Basj

@Basj Если это ответ на ваш вопрос, отметьте его., @the busybee


2

Вы можете просто использовать все контакты, кроме контакта сброса (контакт 0). Когда вы хотите запрограммировать Attiny, вы просто подключаете программатор. Он сбросит Attiny через контакт сброса и переведет его в режим программирования ISP. В этот момент ваш код еще не запущен.

Примечание: Если вы хотите запрограммировать Attiny, пока он все еще находится в своей цепи, вы должны быть осторожны, чтобы подключенная цепь не мешала связи с ISP. Самый безопасный способ — отключить Attiny от его цепи, а затем запрограммировать его.

,

Также учитывайте связь с провайдером, нарушающую вашу подключенную цепь., @Gerben

На всякий случай: когда я использую Arduino Uno в качестве ISP-программатора для ATtiny, я обычно подключаю контакты 1, 5, 6, 7. Нужно ли мне также подключать VCC и GND ATtiny к VCC и GND Arduino Uno? Если да, то при подключении VCC и GND не заставит ли ATtiny запускать предыдущий код? (Я обновил вопрос в конце, чтобы включить это замечание)., @Basj

Да, вам также необходимо подключить GND и VCC. Если ваш проект ATTiny не имеет собственного источника питания/батарей (в этом случае вам все равно нужно подключить GND). Программатор потянет контакт сброса в НИЗКИЙ уровень, что остановит запуск вашей исходной программы и переведет ATTiny в «режим ISP»., @Gerben