RTV forum PL | NewsGroups PL

Digispark i USB - u kogoś działa?

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Digispark i USB - u kogoś działa?

Atlantis
Guest

Wed May 01, 2019 9:26 pm   



Podczas zakupów w sklepie elektronicznym z ciekawości kupiłem dwie
płytki Digispark (takie jak ta: https://allegro.pl/oferta/6766868826).
Przyznam, ż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?

Zbych
Guest

Wed May 01, 2019 9:56 pm   



Atlantis wrote on 01.05.2019 23:26:
Quote:
Podczas zakupów w sklepie elektronicznym z ciekawości kupiłem dwie
płytki Digispark (takie jak ta: https://allegro.pl/oferta/6766868826).
Przyznam, ż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?

Wbudowany generator RC ATTiny85 ma rozrzut +/- 10%, strona 164:
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2586-AVR-8-bit-Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet.pdf

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:

https://github.com/pepaslabs/CalibrateATtiny85OSCCAL

ww
Guest

Thu May 02, 2019 9:52 am   



W dniu 2019-05-01 o 23:26, Atlantis pisze:
Quote:
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.


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?

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.

ToMasz
Guest

Thu May 02, 2019 9:56 am   



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

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?

cezar
Guest

Thu May 02, 2019 10:32 am   



On 02/05/2019 10:56, ToMasz wrote:
Quote:
Generalnie jestem rozczarowany pracą płytki w roli urządzenia USB:

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?

on chyba uzyl teensy

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

https://www.mouser.co.uk/new/microchip/Atmel-atmega32/


https://www.sparkfun.com/tutorials/337

Atlantis
Guest

Thu May 02, 2019 3:02 pm   



On 02.05.2019 11:52, ww wrote:

Quote:
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.

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. Wink

Atlantis
Guest

Thu May 02, 2019 3:53 pm   



On 02.05.2019 12:32, cezar wrote:

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

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.

ww
Guest

Thu May 02, 2019 3:57 pm   



W dniu 2019-05-02 o 17:02, Atlantis pisze:
Quote:
ga 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. Wink

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.

Mirek
Guest

Thu May 02, 2019 4:17 pm   



On 02.05.2019 17:53, Atlantis wrote:

Quote:
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.


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 ;)

--
Mirek.

Atlantis
Guest

Thu May 02, 2019 5:11 pm   



On 02.05.2019 18:17, Mirek wrote:

Quote:
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 Wink

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.

Atlantis
Guest

Thu May 02, 2019 8:04 pm   



On 01.05.2019 23:56, Zbych wrote:

Quote:
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:

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.

elektroda NewsGroups Forum Index - Elektronika Polska - Digispark i USB - u kogoś działa?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map