Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
RUWIDO Merlin IR-USB-HID-keyboard
#26
Hi zusammen,

zunächst mal: Danke, Danke, Danke für dieses Projekt! Ich war für meine xbmc-Installation genau auf der Suche nach einer solchen Lösung für die Ruwido Merlin Tastatur.
Habe aber mit dem "Endprodukt" Probleme -das Flashen klappt, aber der Stick wird nicht erkannt. Kann jemand von euch in meinem Vorgehen einen Fehler entdecken? Ich komme seit Tagen nicht weiter..... und weiß nicht mehr, wo ich suchen soll. Hier meine Schritte:

Ich besaß noch zwei Betemcu usbasp und habe einen enstprechend umgebaut: An PD3 (INT1) hängt über den 10 Pin-Anschluss ein TSOP. Fürs Flashen ist er zudem mit einem Jumper bestückt.

Dann habe ich mit "make" die Hexfile erstellt.
Vorher habe ich natürlich für den betemcu usbasp die usbconfig.h angepasst, wie von euch berschrieben:

Zitat:#define USB_CFG_IOPORTNAME      B
#define USB_CFG_DMINUS_BIT      0
#define USB_CFG_DPLUS_BIT      1

Ich hab es durchgemessen Port B0 und B1 müssten für D+ bzw D- am USB stimmen....
Die USB_CFG_CLOCK_KHZ hab ich unangetastet gelassen.

Das erste Kompilieren lieferte einen Error. Dann habe ich nach einigem Googlen dafür eine Lösung gefunden:
Unter meinem ubunutu quantal einen gcc-avr und avr-libc downgrade gemacht - auf gcc-avr 4.3.4-1 und avr 1.6.7-1 von lucid. Das hat dafür gesorgt, dass ich mit "make" eine  anstandslos kompilierte main.hex im Ordner hatte. Keine Meldung mehr mit "const" und error wegen irgendwelcher Variablen-Definitionen...

Dann habe ich mit" make flash" die hexfile in den usbasp gebracht. Die fuses hab ich auch über "make fuse" gesetzt.
Alles klappt problemlos. Verifizierung OK. Fuses OK. etc.

Sobald ich aber das Gerät an den PC hänge liefert lsusb kein neues Gerät! Ich kriege mit dmesg nur folgende Meldung:
Code:
[ 6461.283703] usb 3-4: new full-speed USB device number 47 using xhci_hcd
[ 6461.283943] usb 3-4: Device not responding to set address.
[ 6461.484796] usb 3-4: Device not responding to set address.
[ 6461.685485] usb 3-4: device not accepting address 47, error -71
[ 6461.838425] usb 3-4: new full-speed USB device number 48 using xhci_hcd
[ 6461.838625] usb 3-4: Device not responding to set address.
[ 6462.039508] usb 3-4: Device not responding to set address.
[ 6462.240213] usb 3-4: device not accepting address 48, error -71
[ 6462.393134] usb 3-4: new full-speed USB device number 49 using xhci_hcd
[ 6462.393337] usb 3-4: Device not responding to set address.
[ 6462.594199] usb 3-4: Device not responding to set address.
[ 6462.794920] usb 3-4: device not accepting address 49, error -71
[ 6462.947859] usb 3-4: new full-speed USB device number 50 using xhci_hcd
[ 6462.948078] usb 3-4: Device not responding to set address.
[ 6463.148975] usb 3-4: Device not responding to set address.
[ 6463.349632] usb 3-4: device not accepting address 50, error -71
[ 6463.349671] hub 3-0:1.0: unable to enumerate USB device on port 4

Der usbasp funktioniert von der Hardware-Seite. Ich kann die normale usbasp-Firmware von fischl draufspielen. Die vorher kopierte betemcu firmware schluckt das Gerät aber nicht mehr. Auch nicht wenn ich die fuses zurückstelle auf den anfänglichen Wert.  Aber mit der fischl-Firmware funktioniert der Stick.
Er wird mit lsusb angezeigt und kann sogar Atmegas auslesen...
Habe mal durchgemessen was die USB-Pins liefern 5V bei VCC und entsprechen, 3 V, 0V , 0V bei D+ bzw D- und GND...

Weiß jemand von euch, wie ich diesen "Device not responding"-Fehler beseitigen kann. Habe ich einen wichtigen Schritt vergessen? Ist meine main.hex einfach nur falsch erstellt. Hat jemand von euch eine funktionierende main.hex für den usbasp, die ich nutzen könnte?

Danke für eure Hilfe
Beste Grüße
sam

PS
Ach ja: main.hex und usbconfig in einer zip anbei:

PPS auch den avrdude output in einer txt:


Angehängte Dateien
.zip   usbconfig-UND-mainhex.zip (Größe: 9,98 KB / Downloads: 0)
.txt   avrdude-output.txt (Größe: 3,47 KB / Downloads: 2)
Zitieren
#27
1. Nimm mal keinen USB-3 port, sondern USB-2.0 oder USB-1.1

2. D+ muss auf INT0 (oder anderen Interrupt und ein paar Änderungen in der FW)

Zitat:Please note that D+ must also be connected
* to interrupt pin INT0! [You can also use other interrupts, see section
* "Optional MCU Description" below, or you can connect D- to the interrupt, as
* it is required if you use the USB_COUNT_SOF feature. If you use D- for the
* interrupt, the USB interrupt will also be triggered at Start-Of-Frame
* markers every millisecond.

Falls das ein AtMega8 sein sollte, hast du also die Wahl zwischen PD2 oder PD3 für D+
Zitieren
#28
Danke für die rasche Antwort, Wirbel:

also zu 1.: Hab es auch an einem USB-2.0 probiert: kein Unterschied "unable to enumerate device...." - zumindest mit der aktuellen main.hex...

Verzeih mir die laienhafte Frage zu 2.:
Ich muss also in der usbconfig.h doch andere Werte setzen vor dem Kompilieren?

An PD3 hängt ja schon der TSOP....
Daher würde ich D+ auf PD2 setzen. Für den Atmega8L im betemcu usbasp heißt das dann in entsprechend in der usbconfig.h:

Code:
#define USB_CFG_IOPORTNAME      D
#define USB_CFG_DMINUS_BIT      0
#define USB_CFG_DPLUS_BIT       2

soweit korrekt? Meintest du das?

Aber widerspricht das nicht diesem Artikel?
http://jethomson.wordpress.com/2011/08/1...rogrammer/

Zitat:lines. However the betemcu board connects PB1 and PD2 to USB data plus and PB0 to USB data minus. Therefore the USBaspLoader code needs to be changed to use the same pins. Here’s a snippet of bootloaderconfig.h with the changes already made.

#define USB_CFG_IOPORTNAME B
/* This is the port where the USB bus is connected. When you configure it to
* "B", the registers PORTB, PINB and DDRB will be used.
*/
#define USB_CFG_DMINUS_BIT 0
/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected.
* This may be any bit in the port.
*/
#define USB_CFG_DPLUS_BIT 1
/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected.
* This may be any bit in the port. Please note that D+ must also be connected
* to interrupt pin INT0!
*/

Grüße
sam
Zitieren
#29
USB-3 controller verhalten sich etwas anders, deswegen am besten an USB-1 oder 2 testen.

Sicher. Nach Änderung einer Datei neu compilieren und neu flashen.


Nein, es widerspricht dem in keinster Weise. Ich kenne deinen speziellen usbasp clone nicht.
Aber wenn D+ bei deinem Teil mit PB1 *und* PD2 verbunden ist, dann ist doch alles in bester Ordnung. INT0 auf PD2 muss getriggert werden, das ist alles.
Dann sollten auch Pins auf Portb funzen.
Zitieren
#30
Hi Wirbel,
Hi zusammen,

Also: Hab das ganze nochmal mit nem USB-2.0-Port durchgespielt mit beiden Konfigurationen in usbconfig.h:

Code:
#define USB_CFG_IOPORTNAME      D
#define USB_CFG_DMINUS_BIT      0
#define USB_CFG_DPLUS_BIT       2

und dann auch nochmal

Code:
#define USB_CFG_IOPORTNAME      B
#define USB_CFG_DMINUS_BIT      0
#define USB_CFG_DPLUS_BIT       1

Jeweils frisch auf dem anderen Rechner kompiliert und auf den betemcu usbasp geflasht - auch unter USB2.0 keine Wirkung.

Gerät wird nicht mit lsusb aufgelistst, dmesg gibt eine ähnliche Meldung wie vorher aus. Gerät bekommt auch unter USB2.0 einfach keine Adresse...

Ich bin ratlos  Sad

Falls es ein Hardware-Fehler ist: Warum kann ich andere Programme wie die fischl-usbasp-Software erfolgreich aufspielen und über USB nutzen? Wie schrottig kann der Stick dann sein, wenn das funktioniert?

Wenn es ein Software-Problem ist: Wo könnte ich dann den Fehler suchen?

Ich habe gelesen muebau hat die Software auch auf nem usbasp laufen.... es muss doch also prinzipiell gehen.

Gute Nacht
Sam
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste