Digispark ATtiny 85 - не распознается как HID устройство

Я пытаюсь создать автоматическую запись имени пользователя с помощью Digispark ATtiny 85. У меня есть довольно простой набросок:

#include <DigiKeyboard.h>        
void setup() {
}
void loop() {
    DigiKeyboard.sendKeyStroke(0);
    DigiKeyboard.delay(100);
    DigiKeyboard.sendKeyStroke(76, MOD_ALT_RIGHT | MOD_CONTROL_LEFT); //ctrl+alt+del
    DigiKeyboard.delay(2000);
    DigiKeyboard.print("username");
    DigiKeyboard.sendKeyStroke(0x2B); //tab

    for (;;) {}
}

Когда я загружаю код через Arduino IDE в устройство (плата: Digispark (по умолчанию - 16,5 МГц), он успешно завершается, распознается как скрытое устройство и немедленно выполняет все задачи. Но когда я отключаю его и подключаю снова (к своему компьютеру или любому другому компьютеру), он распознается как загрузчик Digispark и ничего не делает.

Я пробовал это в Arduino IDE 1.8.8 и в Arduino IDE 1.6.5, и я понятия не имею, почему он распознается только сразу после загрузки. У меня есть два ATtinys, и оба ведут себя одинаково.

Кто-нибудь может мне помочь, пожалуйста?

Редактировать: Я попытался добавить digitalWrite(1, HIGH); чтобы определить, запускается ли скетч вообще, и оказалось, что он даже не запускается (кроме как после загрузки) ...

, 👍1

Обсуждение

вы ждете 5 секунд, пока скетч начнет выполняться?, @jsotola

Ну, я попытался добавить что-то вроде 4-секундной задержки при запуске, и я даже позволил ATtiny некоторое время находиться в USB. Ни то, ни другое не помогло..., @Jakub Zacek

заголовок вашего сообщения указывает на то, что вы неправильно определили проблему, поэтому трудно найти решение в Интернете ..... "не распознано как скрытое устройство" - это не проблема ....... проблема в том, что загруженная программа не запускается после digispark сбрасывается .... digispark переходит в режим загрузки программы и не переходит к загруженной программе по истечении времени ожидания, @jsotola

Вероятно, вы правы. На момент написания статьи я не знал, что скетч не выполняется. Я попытался погуглить проблему в отношении того, что вы написали, но также безуспешно - не нашел ничего, что я мог бы использовать., @Jakub Zacek


3 ответа


1

Через пять секунд, когда загрузчик должен переключиться на выполнение вашего кода, как он отображается в списке USB-устройств (lsusb в Linux, диспетчер устройств в Windows и т. Д.)

Оригинальный Digispark был немного темпераментным при подключении к портам USB 3. Если вы подключаете его к одному из них, попробуйте использовать концентратор usb2 и вместо этого подключить его к концентратору.

Кроме того, вы получили это от Digistump, или это подделка?

,

Я перепробовал несколько USB-портов (2 и 3), но ни один из них не работал даже по прошествии длительного периода времени. Все это время он отображается в диспетчере устройств как загрузчик Digispark. К сожалению, я купил его в местном чешском интернет-магазине, поэтому понятия не имею, продают ли они клон или оригинал. Есть ли способ определить, является ли он оригинальным или клонированным?, @Jakub Zacek

Я просто прогнал ваш скетч на digispark, и он вел себя так, как ожидалось; на данный момент самое простое, что можно сделать, это просто получить еще один маленький digispark и посмотреть, работает ли он. Это оборудование с открытым исходным кодом, так что, скорее всего, если вы не заказали его напрямую у digistump, это подделка., @JayEye


1

Я надеюсь, что я здесь не слишком поздно, но я полагаю, что вам может потребоваться обновить загрузчик. Не могли бы вы воспользоваться приведенными здесь инструкциями? https://www.iot-experiments.com/micronucleus-bootloader-upgrade / Так получилось, что я читал это руководство: https://hackernoon.com/low-cost-usb-rubber-ducky-pen-test-tool-for-3-using-digispark-and-duck2spark-5d59afc1910 и раздел устранения неполадок там звучит как проблема, с которой вы столкнулись.

,

Привет, спасибо за ваш ответ. Я попытался обновить прошивку, но, к сожалению, без какого-либо успеха, вот micronucleus.exe результат: https://pastebin.com/2SsexNQ4 ., @Jakub Zacek


0

То же самое и здесь,

Я новый пользователь, поэтому не говорю, что это правильный путь.

Теперь я включаю "digiKeyboard.update();" и "digiKeyboard.задержка (1000);". оба вверху, оба для запуска USB-сигнала много-много раз на хост.

команда "digiKeyboard.sendKeyStroke(0);" работает не каждый раз.

,