Digispark i USB - u kogoś działa?

Podczas zakupów w sklepie elektronicznym z ciekawości kupiłem dwie płytki Digispark (takie jak ta:

formatting link
że początkowo byłem przekonany, że siedzi tam jakiś mały mikrokontroler ze sprzętowym modułem USB - na coś takiego wskazywałaby w końcu forma płytki. Tymczasem nie - jak się okazuje jest to zwyczajne Attiny85, korzystające z biblioteki VUSB, której kiedyś używało się z AVR-ami, zanim upowszechniły się układy zapewniające sprzętową obsługę USB.

Zmuszenie płytek do pracy okazało się nieco bardziej skomplikowane, niż mi się wydawało. Po pierwsze nie posiadały one wgranego bootloadera, więc w grę wchodziło jedynie programowanie przez ISP. Zgodnie z sugestią znalezioną w Sieci wgrałem bootloader micronucleus, z którego korzysta Arduno (po dodaniu definicji tych płytek). To jednak nie wszystko - pin reset w projekcie płytki jest przewidziany jako GPIO, trzeba więc albo dodać brakujący rezystor do VCC, albo wyłączyć ten pin za pomocą fusebita.

Generalnie jestem rozczarowany pracą płytki w roli urządzenia USB:

- Przykład z klawiaturą HID działa przez chwilę. Potem przestaje.

- Przykład z CDC przez chwilę odbiera dane, potem połączenie zostaje zerwane.

- dmesg pokazuje w tych momentach sporo błędów związanych z USB, zakończonych informacją :Failed to enumerate".

Da się to jakoś obejść, czy te płytki po prostu nie nadają się na stabilne urządzenie USB i lepiej zastosować coś ze sprzętową obsługą tej magistrali, choćby Arduino Leonardo/Pro Micro?

Reply to
Atlantis
Loading thread data ...

Atlantis wrote on 01.05.2019 23:26:

Wbudowany generator RC ATTiny85 ma rozrzut +/- 10%, strona 164:

formatting link
USB wymaga przy prędkości 1,5Mb/s dokładności lepszej niż 1,5%. Może to jest przyczyną? Spróbuj skalibrować zegar:

formatting link

Reply to
Zbych

W dniu 2019-05-01 o 23:26, Atlantis pisze:

U mnie to działa i nie wgrywałem żadnego bootloadera (bo już był). Testowałem tylko tryb CDC. Rewelacyjnie stabilne to nie jest (w porównaniu z rozwiązaniami sprzętowymi) ale da się używać do przesłania niewielkich ilości danych. Nowsze wersje tych attiny mają dodatkowo stabilniejszy generator i tam to działało jeszcze lepiej.

A że lepiej sprzętowe USB to chyba oczywiste.

Reply to
ww

ja robię bardzo proste urządzenia na arduino nano i też chciałem próbować na mniejszym - sparku. na 3 projekty jeden działa. A nie były to prototypy tylko przeniesienie z nano na mniejszy wymiar. dałem sobie spokój

ToMasz

ps na YT great scott przerabiał, dorabiał jakieś sterowanie, pad, joystick na usb. może jego film będzie dla Ciebie pomocny?

Reply to
ToMasz

on chyba uzyl teensy

Ja bym spojrzal na jakis lepszy MCU atmela z USB np: ATmega32U4

formatting link

formatting link

Reply to
cezar

Problem polega na tym, że u mnie miała to być część większego projektu. Na mikrokontrolerze chciałem zrobić dedykowane sterowane (kilka przycisków, enkoder), które gadałoby z procesem na komputerze. Pierwotnie planowałem zrobić to na jakimś Arduino i przepychać dane serialem. Potem pojawił się pomysł zrealizowania tego na Leonardo/Pro Micro w formie interfejsu HID.

Kod po stronie mikrokontrolera jest bardzo prosty, więc kiedy odkryłem te Digisparki pomyślałem, że będą się one idealnie do tego nadawały. Problem w tym, że gdyby się miało okazać, że sterownik będzie przez kilka minut działał, a potem przez kilkanaście nie, to "trochę" mija się to z celem. ;)

Reply to
Atlantis

Ten układ jest właśnie używany w Arduino Leonardo/Pro Micro. Początkowo planowałem właśnie wykorzystać tę płytkę, jednak (biorąc pod uwagę minimalną ilość kodu po stronie MCU) te Digisparki mnie zaciekawiły. Jeśli jednak nie uda się na nich osiągnąć sensownej stabilności, to mija się to z celem...

Tak naprawdę problemem nie jest dostępność układów, bo prawie każdy współczesny 32bitowy mikrokontroler ma co najmniej moduł USB device. Sądziłem po prostu, że skoro te Digisparki mają formę płytki wkładanej w port USB, to zostały zaprojektowany z myślą o takich zastosowaniach i będą się w nich sprawdzały.

Reply to
Atlantis

W dniu 2019-05-02 o 17:02, Atlantis pisze:

U mnie właśnie kilka tak prostych urządzeń działa. Ale zdarzało się np, że z jakimś konkretnym hubem nie chciało działać. A teraz np podpiąłem do WIN10 i mam błąd "żądanie deskryptora nie powiodło się". Do tej pory korzystałem z WIN7 i tam działało bez problemu. Ale zdarzało się, że np przez jakiś konkretny hub komputer tego nie wykrywał.

Lepiej chyba jednak użyć dedykowanych rozwiązań a takie cuda traktować jako czysty eksperyment.

Reply to
ww

To raczej z myślą o programowaniu dla mocno niezaawansowanych, którzy nie mają nawet programatora... z resztą po co kupować i wlutowywać złącze do programowania jak można narysować złącze USB ;)

Reply to
Mirek

Tyle tylko, że właśnie taka filozofia leżała u podstaw projektu Arduino. Niby zwykła płytka z Atmegą, niby można to zaprogramować przez ISP, ale przeciętny użytkownik nie musi o tym nawet wiedzieć, bo podpina płytkę do kabla USB i programuje przez bootloader.

Forma płytki wkładanej do portu USB wskazuje jednak na dość specyficzne zastosowanie. Zastosowanie w którym ta płytka zdaje się sobie nie radzić. :)

Spróbuję jeszcze kalibracji, jednak nie obiecuję sobie nie wiadomo czego. Chyba wrócę do pomysłu wykorzystania standardowych płytek Arduino.

Reply to
Atlantis

No cóż... Po skalibrowaniu działa nieco lepiej. Komputer ciągle okresowo przestaje widzieć urządzenie, ale dzieje się to rzadziej i szybciej udaje się z nim ponownie połączyć. Co nie zmienia faktu, że uptime oscyluje nieco powyżej 60% czasu pracy...

Zauważyłem też, że podłączenie do gniazda USB na płycie głównej (zamiast tego w przednim panelu) też poprawia sytuację.

No cóż... Digispark zbyt stabilny jednak nie jest.

Reply to
Atlantis

Tu masz fatal:

formatting link
"[...] CDC requires bulk endpoints which are forbidden for low speed devices by the USB specification. However, most operating systems don't care and CDC works. [...]".

Ten problem da się częściowo rozwiązać HUBem USB. Ale zawsze może się okazać że aktualizacja systemu przyniesie w sobie wycięcie takich konfiguracji i przestanie działać.

Reply to
heby

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.