Разблокировка Digispark ATTiny85 после прошивки на HID

Я сделал простой тестовый скетч, чтобы мой ATTiny85 эмулировал клавиатуру и отправлял последовательность нажатий клавиш.

#include "DigiKeyboard.h"
void setup() {
  // не нужно ничего настраивать для использования DigiKeyboard
}

void loop() {
  DigiKeyboard.delay(1000);
  DigiKeyboard.sendKeyStroke(0);
  DigiKeyboard.sendKeyStroke(106); // F15
  DigiKeyboard.delay(59 * 1000);
}

Все работало нормально, но теперь каждый раз, когда я подключаю его к USB-порту компьютера, Windows определяет его как клавиатуру и начинает печатать то, что я запрограммировал.

Arduino IDE не может его перепрограммировать. Когда он говорит «Подключите устройство сейчас», я делаю это, но он сразу же действует как клавиатура, а не как программируемый ATTiny85.

Arduino IDE

Примечание. На изображении показан вывод консоли. Код — это просто мигалка.

Есть ли способ сохранить эту плату? Я просто хочу загрузить в него еще один скетч. Может быть, каким-то образом переписать загрузчик или полностью стереть флеш-память.

Кроме того, пожалуйста, дайте мне несколько советов, чтобы я не был заблокирован снова в будущем. Я очень хочу использовать эту плату в качестве эмулятора клавиатуры, но я хочу иметь возможность перепрограммировать ее при необходимости.

ATTiny85

, 👍0

Обсуждение

Пожалуйста, не размещайте изображения кода. Просто скопируйте и разместите свой код в редакторе, а затем отформатируйте его как *пример кода*., @sempaiscuba

@sempaiscuba код не является важной частью изображения ... Вывод консоли., @Daniel Ribeiro

добавить вывод консоли в виде текста, а не изображения, @jsotola

используйте переключатель или перемычку, чтобы включить код клавиатуры, @jsotola

У вас к плате вообще ничего не подключено, кроме компа?, @timemage

Эта плата хитрая, потому что загрузчик не может быть защищен. -- Как вы это описываете, вы все делаете правильно. После начала загрузки плату необходимо подключить, чтобы запустилось ее программное обеспечение. Обычно вы отключаете плату перед началом загрузки. Если загрузчик присутствует, он ждет 5 секунд загрузчика ПК, прежде чем запустить пользовательское приложение. -- В любом случае, если загрузчик не подключается к вашей плате, загрузчик может быть перезаписан. -- Вы пытались удалить устройство в диспетчере оборудования? Windows может мешать., @the busybee

@timemage, да, это правильно. К плате ничего не подключено, кроме компа по USB соединению., @Daniel Ribeiro

@thebusybee, Да, я пытался удалить устройство в Диспетчере оборудования, но при повторном подключении оно снова появляется. Я также попытался заменить драйвер с помощью Zadig (на libusb-win32), и теперь Windows не определяет его как клавиатуру, как раньше ... но я все еще не могу написать на него новый скетч., @Daniel Ribeiro

Ну тогда предположу, что вы потеряли загрузчик. В Интернете есть несколько ресурсов, описывающих, как прошить загрузчик. Вы должны предпочесть инструкции производителя или аналогичный серьезный сайт. Или купить новое устройство., @the busybee

Да, я мог бы просто купить новый, загрузить новый скетч и снова быть запертым снаружи, как я сейчас... Это неустойчиво, не должно быть невозможно загрузить новую программу несколько раз. Вот о чем этот вопрос: как исправить эту конкретную плату и как предотвратить повторную блокировку., @Daniel Ribeiro


1 ответ


2

Если вы не можете получить доступ к загрузчику через USB, вам остается вариант ISP/ICSP (внутрисхемное последовательное программирование). У меня есть эта плата digispark, и я никогда не мог запрограммировать ее с помощью Arduino IDE/USB. Однако с тех пор я всегда использую как программатор USBasp, так и инструмент программирования AVRDUDESS. С ними можно легко запрограммировать контроллер (ни разу они меня не подводили). Подключите разъемы SPI, +5V, GND и RESET от ATTINY85 к программатору, скомпилируйте код, запрограммируйте двоичные файлы с помощью AVRDUDESS и вуаля.

,

Привет. Не могли бы вы добавить больше деталей к этому ответу? Что такое USBasp? АВРУДЕСС? О каком "программисте" вы говорите? Это отдельное устройство?, @Daniel Ribeiro

Я добавил некоторые детали в свой ответ. Да, USBasp — это отдельное устройство, программатор, обычно реализуемый с контроллером Atmel AVR. Вы можете легко купить их на Ebay или в другом месте. AVRDUDESS — это инструмент с графическим интерфейсом, который поможет вам прошить скомпилированный двоичный файл в целевой контроллер, т. е. в данном случае attiny85., @jcfgonc

Вы можете многому научиться из Я сломал свой Arduino Uno? Проблемы с загрузкой на плату, @sa_leinad