VUSB auf ATTiny85

OP #6288855
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 :-)
Gast
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.
OP
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
Gast
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
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.
OP
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
Angehängte Dateien:
OP
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?
Gast
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.
(Firma: L-E-A)
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
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.
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.
Gast
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.
Gast
> 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.
OP
>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 :-)
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.