Forum: Mikrocontroller und Digitale Elektronik Probleme mit V-USB


von Michael S. (redrabbit)


Angehängte Dateien:

Lesenswert?

Hi :)

Ich versuche seit einigen Stunden meinen ATmega32 mit Hilfe der V-USB 
libary mit meinem Laptop zu verbinden. Leider scheiterts schon beim 
kompiliert.

Da ich keine Ahnung von V-USB habe, wollte ich einfach mal dieses 
Tutorial nachprogrammieren: 
http://hackaday.com/2012/02/09/learning-to-use-the-v-usb-avr-usb-firmware-library/

Nur leider kommt beim komilieren folgender Fehler: "usbdrv.c:537: 
undefined reference to `usbCrc16Append'"
Das deutet für mich darauf hin, dass die Datei, in der die Funktion 
"usbCrc16Append" definiert wird, nicht eingebunden ist.
Also habe ich alle Dateien, die zu V-USB gehören nach dem Konstruktor 
besagter Funktion durchsucht.
Und siehe da, ich habe sie in "usbdrvasm.S" gefunden.
Um das Problem zu beheben, habe ich "usbdrvasm.S" zu meiner Makefile 
hinzugefügt (ASRC = ../../PROJECTS/test/usbdrvasm.S") und sie mit ' 
#include "usbdrvasm.S" ' in main.c eingebunden.
Leider führte das nurnoch zu mehr Fehlern. Eine kleine Auswahl:

usbdrvasm.S:220: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'implementation'
usbdrvasm.S:222: error: expected declaration specifiers or '...' before 
'(' token
usbdrvasm.S:222: error: conflicting types for 'usbCrc16'
usbdrv.h:319: error: previous declaration of 'usbCrc16' was here
usbdrvasm.S:223: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'r24'
usbdrvasm.S:224: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'r22'
usbdrvasm.S:225: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'variables'
usbdrvasm.S:226: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'r18'
usbdrvasm.S:230: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'r24'
usbdrvasm.S:231: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'X'

Ich hab an usbdrvasm.S und usbdrv.c nicht rumgespielt.
Kann es sein, dass man Assembler Dateien nicht so einbindet, und mein 
Compiler sie deshalb versucht als C zu verstehen?


Ich wäre euch echt dankbar, wenn Ihr euch mal die includes und die 
Makefile anschauen könntet :D

(ich verwende übrigens WinAVR, Programmers' Notepad und den 
Makefile-Editor)

mfg

von Michael S. (redrabbit)


Lesenswert?

Ich habs jetzt mit ner anderen Makefile und ner neuen USB-Verbindung so 
weit geschafft, dass der Code compiliert und der mega32 vom Laptop als 
Unbekanntes Gerät (VendorID=0x00 & DeviceID=0x00) "erkannt" wird.
Ich werde heut zum dritten Mal die Verdrahtung und Schaltung überprüfen 
und nochmal den Code durchgehen.
Hat noch jemand ne bessere Idee?

mfg

von 4toTakoe (Gast)


Lesenswert?

Michael Stoffels schrieb:
> als Unbekanntes Gerät (VendorID=0x00 & DeviceID=0x00) "erkannt" wird

Datenleitungen vertauscht oder PullUp von Data- vergessen?

von Coco J. (Firma: Student) (dathcoco)


Lesenswert?

Ich hab dort den Fehler gemacht, dass ich keine PullUps sondern 
PullDowns gemacht habe, so wie nicht 1M\Omega an die eine 
Datenleitung...

von Michael S. (redrabbit)


Angehängte Dateien:

Lesenswert?

Also D+ und D- sollten stimmen, die hab ich schon mehrfach kontrolliert.
Ich hab mich beim USB-Anschluss an den angehängten Schaltplan gehalten.
Nur dass ich D+ an PB0 und D- an PB1 gelegt hab.

...
#define USB_CFG_IOPORTNAME B
#define USB_CFG_DMINUS_BIT 1
#define USB_CFG_DPLUS_BIT 0
#define USB_CFG_CLOCK_KHZ 12000
...

Die Fuses hab ich auf low:0xff & hight:0xd9 gesetzt.
An XTAL1 und XTAL2 hab ich nen 12MHZ Quarz gehängt.

mfg

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.