Forum: Mikrocontroller und Digitale Elektronik VUSB auf ATTiny85


von Felix L. (felix_l156)


Lesenswert?

Hallo alle zusammen,

ich bin überfordert mit der Installation von VUSB auf einen ATtiny85. 
Ich habe mir diese Anleitung 
https://codeandlife.com/2012/01/22/avr-attiny-usb-tutorial-part-1/ 
reingezogen, steige aber irgendwann aus...

Ich habe schon alles möglich durchgelesen und mache seit Tagen damit rum 
aber ich bekomme es einfach nicht hin.

1. Versuch VUSB auf den ATtiny85 zu bringen per Arduino und Arduino IDE
2. Versuch per AVRDUDE und einem USBtiny Programmer
3. Versuch per Atmelstudio und USBtiny Programmer

Alles erfolglos....

Ziel:
USB-Stick mit dem ATtiny85 einstecken
Als HID-Tastatur erkennen lassen
Über einen Taster die "Enter-Taste" betätigen
Über einen anderen Taster die "Leer-Taste"  betätigen

Frage:
Aus diesem Grund suche ich jemanden, der mir diesen Chip so flashen 
kann, dass ich keinen Treiber benötige, wenn der Stick eingesteckt wird 
oder wenn mir jemand ein faches und funktionierendes Tutorial nennen 
kann...

Ich würde es gerne selbst hinbekommen, verstehe es aber leider nicht...
Danke vorab :-)

von Top S. (topsoft)


Lesenswert?

Hier vieleicht:
https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/attiny85-als-usb-eingabegerat

Ich würde das aber eher mit einem Mega32U4 machen.

Gruß

: Bearbeitet durch User
von Felix L. (felix_l156)


Lesenswert?

Das ist leider nicht das Richtige.
Der Link, welchen du gepostet hast bezieht sich auf den Digispark, 
welcher auch wieder Treiber benötigt.

Effektiv soll das Ding wie eine Tastatur erkannt werden.

von Frank L. (hermastersvoice)


Lesenswert?

der Digispark braucht KEINE weiteren Treiber. Der meldet sich als HID an 
und kann als Maus oder Tastatur programmiert werden.

von Stefan F. (Gast)


Lesenswert?

Felix L. schrieb:
> Alles erfolglos....

Wenn du hinweise zum Problem geben würdest, könnten wir dir helfen.

Alternativ kannst du vorprogrammierte Digispark Module fertig kaufen. 
Das ist sogar billiger, als deinen Chip einmal hin und zurück zu 
schicken.

Ich sage Dir noch einen Grund, der für mich persönlich gilt, warum ich 
auf deine Bitte (ihn für dich zu programmieren) nicht eingehe:

Da du schon daran scheiterst, den Chip zu flashen, erwarte ich weitere 
Probleme nachdem ich ich meinen Teil erledigt habe. Und darauf habe ich 
überhaupt keinen Bock. Wenn man solchen Leuten den kleinen Finger 
reicht, nehmen sie erfahrungsgemäß den ganzen Arm. Das wird eine 
never-ending Story.

Vielleicht bin ich auch einfach nur zu alt für sowas, dass sich zu viele 
negative Erfahrungen in mein Hirn gebrannt haben. Ich meine das nicht 
böse, wollte nur erklären, warum ich hier ausnahmsweise absichtlich 
nicht hilfsbereit bin.

von Felix L. (felix_l156)


Lesenswert?

Stefan ⛄ F. schrieb:
> Wenn man solchen Leuten den kleinen Finger
> reicht, nehmen sie erfahrungsgemäß den ganzen Arm.

Schade, dass du alle anscheinend über einen Kamm scherst.
Du scheinst wirklich durch die Bank schlechte Erfahrungen gemacht zu 
haben...

Du musst es ja nicht machen :-) Ich freue mich ja auch über die Hilfe 
hier.

Die Schaltung für so etwas aufzubauen ist für mich ein Kinderspiel 
jedoch nicht die Programmierung. Das sind meines Erachtens nach völlig 
unterschiedliche Baustellen...

Mein Problem ist zum Beispiel, dass per AVRDUDE *.hex Dateien auf den 
Chip geschrieben werden sollen. Ich weis leider weder wie man eine hex 
Datei erstellt bzw. wie ich in eine fertige Datei "lesen" kann um es 
auch zu verstehen :-D

von Stefan F. (Gast)


Lesenswert?

Du kannst also weder programmieren, noch fertige Programme übertragen. 
Keine Schande. Was du brauchst ist ein fertiges Produkt.

Dir kann geholfen werden, mit einem KeyWarrior: 
https://www.codemercs.com/de/tastatur

oder du fuchst dich da doch rein. Als Anregung könnte diese Präsentation 
auf Basis von Arduino helfen: 
https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/attiny85-als-usb-eingabegerat

von :-) (Gast)


Lesenswert?

Vielleicht hilft dir das weiter:

http://blog.flipwork.nl/?x=entry:entry081009-142605

Bei mir läuft das einwandfrei auf dem ATTiny85

von Philipp K. (philipp_k59)


Lesenswert?

Mit Arduino muss das mit dem Tiny85 klappen.

Vielleicht das falsche Tiny85 Framework mit den falschen Fuses.

Für V-USB muss man andere Fuses setzen, bzw eine passende "VUSB" 
Boardauswahl haben oder die Boards.txt abändern.

Ich würde empfehlen zum Testen den Nucleos(Digispark) Bootloader zu 
flashen, wenn der funktioniert, passt schonmal die USB Verdrahtung 
Hardwareseitig.

Wie ist denn der Momentane Aufbau der Schaltung? D+/D- vertauscht etc?

Auf dem Arduino gibt es kein V-usb.. das ist direkt mit drin im Attiny 
Addon.

: Bearbeitet durch User
von Felix L. (felix_l156)


Angehängte Dateien:

Lesenswert?

Vielen Dank erst einmal für die Hilfe :-)
Ich habe nun ein Foto angehängt von der Verbindung vom USBtiny 
Programmer zum ATtiny85 und ein Foto von der Schaltung, welche ich so 
aufgebaut habe.


Auf meinem Windows PC habe ich in der CMD folgendes eingegeben:
1
avrdude -c usbtiny -p t85


Worauf ich das hier angezeigt bekomme:
1
avrdude: AVR device initialized and ready to accept instructions
2
Reading | ################################################## | 100% 0.02s
3
avrdude: Device signature = 0x1e930b
4
avrdude: safemode: Fuses OK
5
avrdude done.  Thank you.


Und beim setzen der Fuses scheitere ich schon, nach dem Beispiel von
> :-) schrieb:
>
> http://blog.flipwork.nl/?x=entry:entry081009-142605



soll ich folgendes tun
>First program the microcontroller with the .hex file
>
>(don’t forget to set the fuses first to 0xFF 0xDF 0xC1)


bedeutet das, dass ich folgenden code eintippen muss bevor ich den 
eigentlichen code für VUSB flashe?
1
avrdude -c usbtiny -p t85 -U lfuse:w:0xC1:m -U hfuse:w:0xDF:m -U efuse:w:0xFF

Ich habe das Gefühl schon nah dran zu sein :-D

von Stefan F. (Gast)


Lesenswert?

vorher oder nachher ist egal.

> Ich habe das Gefühl schon nah dran zu sein
korrekt

Ganz am Ende bei efuse fehlt ein ":m"

von Felix L. (felix_l156)


Lesenswert?

Hab ich vergessen zu kopieren, wurde aber so abgedrückt...Danke :-)
> Ganz am Ende bei efuse fehlt ein ":m"

Funktioniert alles immer noch nicht...
gib es eine Möglichkeit eine hex Datei zu "lesen" oder zu verändern?
Ich habe das Gefühl. dass die Pins anders deklariert wurden oder hängt 
das damit gar nicht zusammen?

von Stefan F. (Gast)


Lesenswert?

Felix L. schrieb:
> Funktioniert alles immer noch nicht...

Auf meiner Glaskugel erscheint leider keine Fehlermeldung und der 
magische Spiegel ist kaputt.

> Ich habe das Gefühl. dass die Pins anders deklariert wurden oder hängt
> das damit gar nicht zusammen?

Das interessiert avrdude nicht. Wenn du willst, kannst du auch ein 
Katzenbild in den Flash Speicher laden.

von Philipp K. (philipp_k59)


Lesenswert?

Felix L. schrieb:
> dass die Pins anders deklariert wurden oder hängt
> das damit gar nicht zusammen?

doch in Deinem Schaltplan ist der Pullup auf 7, in dem Schaltbild des 
von Dir geflashtem Hex von  http://blog.flipwork.nl ist es genau anders 
herum.

EDIT ich nehme PB3 und PB4 in meinen Projekten.. Micronucleus Standard.

: Bearbeitet durch User
von Felix L. (felix_l156)


Lesenswert?

Deswegen wollte ich wissen, ob es möglich ist, das im Programm selbst zu 
ändern? Dass D+ auf Pin7 geht und D- in meinem Fall auf Pin5.

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

Felix L. schrieb:
> Deswegen wollte ich wissen, ob es möglich ist, das im Programm selbst zu
> ändern? Dass D+ auf Pin7 geht und D- in meinem Fall auf Pin5.

Wenn Du in der Lage bist, den Code zu compilieren, ist's kein Problem:
in der Datei 'usbconfig.h' finden sich die beiden Konstanten
1
#define USB_CFG_DMINUS_BIT      0
2
/* This is the bit number in USB_CFG_IOPORT where the USB D- line is onnected.
3
 * This may be any bit in the port.
4
 */
5
#define USB_CFG_DPLUS_BIT       2
6
/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected.
7
 * This may be any bit in the port. Please note that D+ must also be connected
8
 * to interrupt pin INT0! [You can also use other interrupts, see section
9
 * "Optional MCU Description" below, or you can connect D- to the interrupt, as
10
 * it is required if you use the USB_COUNT_SOF feature. If you use D- for the
11
 * interrupt, the USB interrupt will also be triggered at Start-Of-Frame
12
 * markers every millisecond.]

Grüßle
Volker

: Bearbeitet durch User
von Philipp K. (philipp_k59)


Lesenswert?

Hier, nehm mal das, das ist kurz und Bündig, quasi sogar in 5 Minuten 
abgearbeitet.. ansich nur eingie Klicks dann ist Dein Attiny schon nen 
Keyboard und kann mit nur einmal bootloader brennen via USB geflasht 
werden..

https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/attiny85-als-usb-eingabegerat

EDIT: man muss noch in einer Datei in 
Dokumente/Appeinstellungen/Arduino15/Hardware/Digistump oder so die USB 
Pins abändern.

: Bearbeitet durch User
von Philipp K. (philipp_k59)


Lesenswert?

Nochmal ganz einfach in 5 Minuten und 5 Schritten zum Erfolg...

1. In Arduino->Datei->Einstellungen unter Boardverwalter URLS diese 
Zeile hinzufügen: http://digistump.com/package_digistump_index.json und 
die IDE Neustarten.

2. In Arduino->Werkzeuge->Boardverwalter müsste jetzt "Digistump AVR 
Boards" zu finden sein, das installieren. Vielleicht nochmal die IDE 
Neustarten.

3. Pins ändern:
C:\Users\MYUSername\AppData\Local\Arduino15\packages\digistump\hardware\ 
avr\1.6.7\libraries\DigisparkKeyboard\usbconfig.h
1
#elif defined (__AVR_ATtiny45__) || defined (__AVR_ATtiny85__)
2
#define USB_CFG_IOPORTNAME      B
3
#define USB_CFG_DMINUS_BIT      3
4
#define USB_CFG_DPLUS_BIT       4

4. Board auswählen. Digispark 16.5Mhz (Müsste es sein)

5. Code ausprobieren:
1
#include "DigiKeyboard.h"
2
int buttonPin = 0; // Hier ist der Taster angeschlossen
3
4
void setup() {
5
  pinMode(buttonPin, INPUT);
6
  digitalWrite(buttonPin, HIGH);
7
}
8
9
void loop() {
10
  DigiKeyboard.sendKeyStroke(0);
11
  if (digitalRead(buttonPin) == LOW){
12
    DigiKeyboard.sendKeyStroke(KEY_R , MOD_GUI_LEFT); // Win+R Tatenkombination
13
    DigiKeyboard.delay(50); // Kurz warten
14
    DigiKeyboard.println("devmgmt.msc"); // Gerätemanager aufrufen
15
    DigiKeyboard.delay(1000);
16
  }
17
}

Optional kann man noch den Bootloader anpassen und damit auch über USB 
Flashen.

: Bearbeitet durch User
von Herman Kokoschka (Gast)


Lesenswert?

WARUM ZUM GEIER
Nimmst Du nicht eine alte USB-Tastatur und baust die Platine aus.
Die ist paar cm² gross, also sehr klein.
Da kannst Du dann an die richtigen Matrix-Pins einfach Deine Taster
anschliessen.

5 Minuten Arbeit.
Fertig.

von asdf (Gast)


Lesenswert?

> Stefan ⛄ F. schrieb:
> > Wenn man solchen Leuten den kleinen Finger
> > reicht, nehmen sie erfahrungsgemäß den ganzen Arm.

> Schade, dass du alle anscheinend über einen Kamm scherst.
> Du scheinst wirklich durch die Bank schlechte Erfahrungen gemacht zu
> haben...

Der Gedankengang hat sich dann ja auch hier mal wieder als der Richtige 
erwiesen.

von Philipp K. (philipp_k59)


Lesenswert?

Herman Kokoschka schrieb:
> WARUM ZUM GEIER
> Nimmst Du nicht eine alte USB-Tastatur und baust die Platine aus.
> Die ist paar cm² gross, also sehr klein.
> Da kannst Du dann an die richtigen Matrix-Pins einfach Deine Taster
> anschliessen.
>
> 5 Minuten Arbeit.
> Fertig.

Für einen Button so ein Aufriss? Für den Laien bestimmt nicht einfach.

von Guido Körber (Gast)


Lesenswert?

Gibt es auch ganz komfortabel fertig als Modul mit einer ordentlichen 
Software um die Tasten zu programmieren:
https://www.codemercs.com/de/tastatur/8x8-matrix

von Felix L. (felix_l156)


Lesenswert?

>Nochmal ganz einfach in 5 Minuten und 5 Schritten zum Erfolg...
Vielen lieben Dank, das werde ich versuchen!

>WARUM ZUM GEIER
>Nimmst Du nicht eine alte USB-Tastatur und baust die Platine aus.
Weil ich dann immer noch nicht weiß wie die Programmierung dahinter 
aussieht :-)

von Thomas Z. (usbman)


Lesenswert?

Felix L. schrieb:
> Weil ich dann immer noch nicht weiß wie die Programmierung dahinter
> aussieht :-)

Naja solange du nicht in der Lage bist 2 Portpins deinen Usbpins 
zuzuordnen und das Ding neu zu übersetzen ist es Wumpe wie die 
Programmierung dahinter aussieht.
Um VUSB zu verstehen ist wesentlich mehr Wissen notwendig.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.