Hallo zusammen. Ich möchte gerne für einen ATMEGA32U4 eine USB-Kommunikation aufbauen. Soll ja mit LUFA alles recht simpel sein, aber es klappt bei mir nicht. Ich habe ein neues Projekt in Eclipse angelegt, und den LUFA-Ordner importiert. Dann habe ich die Dateien aus dem Demoordner von LUFA (Demo/Device/ClassDriver/VirtualSerial) importiert. Unter den Einstellungen hab ich MCU richtig eingestellt. Unter Path and Symbols hab ich USE_LUFA_CONFIG_HEADER hinzugefügt (weil ich ohne das LUFA-makefile arbeiten will), LUFAConfig.h ins root-Verzeichnis gelegt und in LUFAConfig.h F_USB = F_CPU eingetragen. Ein paar Anpassungen musste ich machen, weil manchen Headerdateien nicht gefunden wurden, aber da ließen sich die Pfadangaben einfach korrigieren. Beim Compilieren erhalte ich jetzt die Fehlermeldung „too many arguments to function ‚USB_Init‘.“ in der Datei HostApplication.c. Das wundert mich, da ich ja ein Device sein möchte. In der LUFAConfig.h hab ich noch USB_DEVICE_ONLY definiert. Wieso hab ich also diesen Fehler, und was muss ich machen, um ihn loszuwerden? Besten Dank, wenn mir hier jemand weiterhelfen kann!!!! Ein schönes Wochenende allen…… Sebastian
Hallo, ohne Makefileabarbeitung, wird der Compiler nicht glücklich. Ohne das gesamte Projekt von Dir, kann niemand mit einer textlichen Beschreibung etwas anfangen. Also mache es so, wie es vorgesehen ist!
Karl M. schrieb: > Ohne das gesamte Projekt von Dir, kann niemand mit einer textlichen > Beschreibung etwas anfangen. Das ist ja das schöne. Es ist das 0815-LUFA-Demo-Standardprojekt. Keinerlei Zusatzcode. Ich will erstmal nur das Demoding zum Laufen bekommen.......
Sebastian R. schrieb: > HostApplication.c. Das wundert mich, da ich ja ein Device sein möchte Weiß Eclipse dass diese Datei also nicht mitkompiliert werden soll? Woher soll Eclipse wissen dass du ein Device baust? Exkludiere diese Datei vom Build-Prozess (Rechtsklick Menü).
Sebastian R. schrieb: > In der LUFAConfig.h hab ich noch USB_DEVICE_ONLY definiert. Der LUFA-Ordner enthält ja alles Mögliche. Davon sollen ja unzählige Dateien nicht mitkompiliert werden. Ich nehme an, dass über die LUFAConfig.h (bzw. das Makefile) die Infos weitergegeben werden, was benötigt wird und was nicht.
Sebastian R. schrieb: > Ich nehme an, dass über die > LUFAConfig.h (bzw. das Makefile) die Infos weitergegeben werden, was > benötigt wird und was nicht. Wie soll das funktionieren? Woher soll eclipse wissen für welche Source-Datei der Compiler aufgerufen werden soll und für welche nicht? Wenn du das makefile nicht benutzt, musst du selber die nicht benötigten Dateien vom Build-Prozess ausschließen.
Gut. Habe HostApplication.c ausgeschlossen, jetzt ist es derselbe Fehler („too many arguments to function ‚USB_Init‘.“) in der DeviceApplication.c.
Ich glaube es liegt nicht an der Funktion direkt, sondern an den Einstellungen, die die Konfiguration bestimmen, mit der diese Funktion aufgerufen wird. In der LUFAConfig.h gibt es den Parameter USE_STATIC_OPTIONS (USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLE | USB_OPT_AUTO_PLL) Wenn ich den weglasse habe ich den Fehler 'too few arguments to function 'USB_Init' Mit diesem Parameter habe ich eine Menge Meldungen 'undefined reference to ....' Das ist die Funktion:
1 | void USB_Init( |
2 | #if defined(USB_CAN_BE_BOTH)
|
3 | const uint8_t Mode |
4 | #endif
|
5 | |
6 | #if (defined(USB_CAN_BE_BOTH) && !defined(USE_STATIC_OPTIONS))
|
7 | ,
|
8 | #elif (!defined(USB_CAN_BE_BOTH) && defined(USE_STATIC_OPTIONS))
|
9 | void
|
10 | #endif
|
11 | |
12 | #if !defined(USE_STATIC_OPTIONS)
|
13 | const uint8_t Options |
14 | #endif
|
15 | )
|
16 | {
|
17 | #if !defined(USE_STATIC_OPTIONS)
|
18 | USB_Options = Options; |
19 | #endif
|
20 | |
21 | #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
|
22 | /* Workaround for AVR8 bootloaders that fail to turn off the OTG pad before running
|
23 | * the loaded application. This causes VBUS detection to fail unless we first force
|
24 | * it off to reset it. */
|
25 | USB_OTGPAD_Off(); |
26 | #endif
|
27 | |
28 | if (!(USB_Options & USB_OPT_REG_DISABLED)) |
29 | USB_REG_On(); |
30 | else
|
31 | USB_REG_Off(); |
32 | |
33 | if (!(USB_Options & USB_OPT_MANUAL_PLL)) |
34 | {
|
35 | #if defined(USB_SERIES_4_AVR)
|
36 | PLLFRQ = (1 << PDIV2); |
37 | #endif
|
38 | }
|
39 | |
40 | #if defined(USB_CAN_BE_BOTH)
|
41 | if (Mode == USB_MODE_UID) |
42 | {
|
43 | UHWCON |= (1 << UIDE); |
44 | USB_INT_Enable(USB_INT_IDTI); |
45 | USB_CurrentMode = USB_GetUSBModeFromUID(); |
46 | }
|
47 | else
|
48 | {
|
49 | UHWCON &= ~(1 << UIDE); |
50 | USB_CurrentMode = Mode; |
51 | }
|
52 | #endif
|
53 | |
54 | USB_IsInitialized = true; |
55 | |
56 | USB_ResetInterface(); |
57 | }
|
Also am USE_STATIC_OPTIONS Parameter liegt es wahrscheinlich nicht. Der ist im Demoprojekt auch gesetzt. Ich hab das Projekt jetzt neu aufgesetzt und außer ein paar Kleinigkeiten (includepfade korrigiert) nicht gemacht. Folgender Fehler tritt auf: s. Anhang. Weiß jemand Rat? Sebastian
Kannst du das bisschen relevanten Text nicht einfach gleich in den Beitrag copy&pasten? "Multiple definition of `main'" Es gibt in diesem LUFA-Beispiel ganz viele verschiedene Inkarnationen von möglichen Geräten. Jede hat dabei ihre eigene Implementierungsdatei mit einem eigenen main(). Einige davon benötigen offenbar auch noch weitere, von dir zu liefernde Implementierungsdaten ("undefined reference") – aber vermutlich sind das Unterprojekte, die du eigentlich sowieso gar nicht haben willst und daher gar nicht mit compilieren solltest. Sorry, aber ohne dass du dir selbst wenigstens ein bisschen einen Überblick verschaffst, was da im LUFA-Code wofür zuständig ist und was du davon genau tatsächlich für deinen Anwendungsfall benutzen musst, wird das wohl nicht abgehen. Das ist kein Lego, bei dem man einfach irgendwie alles aufeinander stöpseln kann, und dann schon zu irgendeinem Ergebnis kommen wird, was zumindest zusammen passt (auch wenn es vielleicht nicht das war, was man sich ursprünglich vorgenommen hatte :).
Ja, da hast Du Recht. Sorry!!! Ich hab zu schnell gepostet, und erst danach die ganzen Meldungen genau gelesen. Hab die unnötigen Dateien ausgeschlossen, und jetzt ist es fehlerfrei. JUHUU!!!! Ich teste mal, ob es auch richtig erkannt wird..... Das LUFA-Zeug hab ich wirklich falsch eingeschätzt. Ich dachte das binde ich einfach ein und mit ein paar wenigen Konfigurationen kann ich meinen Anwendungsfall einstellen. Tja, again what learned.... Danke Dir für Deine Antwort! Sebastian
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.