Hiho, nach wochenlangem Probieren habe ich es mit einer großen Unterstuetzung geschafft die LUFA USB Library auf mein selbst entworfenes Board mit dem AVR32UC3B1256 Controller zu flashen. Nebenher laeuft dabei auch schon das LED-Toggle Programm. Die LUFA USB Library habe ich durch ein im Netz gefundes Beispiel: https://github.com/kblomqvist/aery32-plus-lufa einbinden koennen. Dort wird mithilfe der LUFA Library ein serieller Port mittels USB emuliert. Nun habe ich ein folgendes Problem, wenn ich das Board ueber ein USB Kabel mit dem Rechner verbinde, dann erkennt der Rechner nicht, dass ein neues USB Geraet angeschlossen ist. Im Device Manager kann ich nichtmal die Com-Ports konfigurieren, diese werden mir schlicht nicht angezeigt, so als ob keine da waeren. Mit freundlichen Grueßen, bmtil EDIT: sorry, hab mich verklickt, der Thread gehoert natuerlich in das AVR32 Forum, war keine Absicht.
Wenn das Gerät nicht erkannt wird, dann ist etwas an Deiner Firmware faul.
Pit schrieb: > Wenn das Gerät nicht erkannt wird, dann ist etwas an Deiner Firmware > faul. Dieser erstklassigen Diagnose schließe ich mich an.
Na dann werde ich das jetzt mal präzisieren: Deine LEDs mögen ja blinken, aber die USB Enumertion, die zwingend notwendig ist, funktioniert eben nicht. D. h. LUFA läuft nicht richtig. Genaueres ist von hier aus ohne weitere Infos nicht zu sagen.
Hm, k. Ich denke mal dass die LUFA nicht laeuft kann richtig sein. Ich finde aber nirgends den Fehler nicht. Vllt. funktioniert die ganze Clock Geschichte nicht richtig, da USB ja die 48Mhz braucht. Hier sind mein Code und meine Einstellungen des Compilers:
1 | #include <avr32/io.h> |
2 | #include <avr32/uc3b1256.h> |
3 | #include "Config/LUFAConfig.h" |
4 | #include "LUFA/Common/Common.h" |
5 | #include "LUFA/Drivers/USB/USB.h" |
6 | #include "LUFA/Platform/Platform.h" |
7 | #include "Descriptors.h" |
8 | |
9 | #include "LUFA/Platform/UC3/ClockManagement.h" |
10 | #include "LUFA/Platform/UC3/InterruptManagement.h" |
11 | // #include <string.h>
|
12 | // #include <stdio.h>
|
13 | |
14 | |
15 | #define GPIO_LED AVR32_PIN_PA10
|
16 | #define PORT GPIO_LED/32
|
17 | #define PIN GPIO_LED%32
|
18 | |
19 | |
20 | USB_ClassInfo_CDC_Device_t VirtualSerial_CDC_Interface = |
21 | {
|
22 | { /* Config */ |
23 | 0, /* ControlInterfaceNumber */ |
24 | { /* DataINEndpoint */ |
25 | CDC_TX_EPADDR, /* Address */ |
26 | CPU_TO_LE16(CDC_TXRX_EPSIZE), /* Size */ |
27 | EP_TYPE_CONTROL, /* Endpoint type */ |
28 | 1, /* Banks */ |
29 | },
|
30 | { /* DataOUTEndpoint */ |
31 | CDC_RX_EPADDR, /* Address */ |
32 | CPU_TO_LE16(CDC_TXRX_EPSIZE), /* Size */ |
33 | EP_TYPE_CONTROL, /* Endpoint type */ |
34 | 1, /* Banks */ |
35 | },
|
36 | { /* NotificationEndpoint */ |
37 | CDC_NOTIFICATION_EPADDR, /* Address */ |
38 | CPU_TO_LE16(CDC_NOTIFICATION_EPSIZE), /* Size */ |
39 | EP_TYPE_CONTROL, /* Endpoint type */ |
40 | 1, /* Banks */ |
41 | }
|
42 | }
|
43 | };
|
44 | |
45 | /** Event handler for the library USB Connection event. */
|
46 | void EVENT_USB_Device_Connect(void) |
47 | {
|
48 | }
|
49 | |
50 | /** Event handler for the library USB Disconnection event. */
|
51 | void EVENT_USB_Device_Disconnect(void) |
52 | {
|
53 | }
|
54 | |
55 | /** Event handler for the library USB Control Request reception event. */
|
56 | void EVENT_USB_Device_ControlRequest(void) |
57 | {
|
58 | CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface); |
59 | }
|
60 | |
61 | /** Event handler for the library USB Configuration Changed event. */
|
62 | void EVENT_USB_Device_ConfigurationChanged(void) |
63 | {
|
64 | CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface); |
65 | }
|
66 | |
67 | int main(void) |
68 | {
|
69 | |
70 | AVR32_PM.OSCCTRL0.mode = 0; //extern CLock 16Mhz |
71 | |
72 | AVR32_PM.OSCCTRL0.startup = 6 ; // 142 ms startup |
73 | |
74 | AVR32_PM.MCCTRL.osc0en = 1; //OSC0 enable |
75 | |
76 | while(!(AVR32_PM.POSCSR.osc0rdy)); // |
77 | |
78 | AVR32_PM.MCCTRL.mcsel=1; //OSC0 main clock |
79 | |
80 | //OSC0 for PLL0
|
81 | AVR32CLK_StartPLL(0, CLOCK_SRC_OSC0, 16000000, 480000000); //USB Clock |
82 | |
83 | /* Register USB isr handler, from LUFA library */
|
84 | INTC_Init(); |
85 | INTC_RegisterGroupHandler(INTC_IRQ_GROUP(AVR32_USBB_IRQ), 1, &USB_GEN_vect); |
86 | GlobalInterruptEnable(); |
87 | |
88 | /* Initiliaze the USB, LUFA magic */
|
89 | USB_Init(); |
90 | |
91 | for(;;) { |
92 | CDC_Device_SendByte(&VirtualSerial_CDC_Interface, 'H'); |
93 | CDC_Device_SendByte(&VirtualSerial_CDC_Interface, 'e'); |
94 | CDC_Device_SendByte(&VirtualSerial_CDC_Interface, 'l'); |
95 | CDC_Device_SendByte(&VirtualSerial_CDC_Interface, 'l'); |
96 | CDC_Device_SendByte(&VirtualSerial_CDC_Interface, 'o'); |
97 | CDC_Device_SendByte(&VirtualSerial_CDC_Interface, '\n'); |
98 | CDC_Device_SendByte(&VirtualSerial_CDC_Interface, '\r'); |
99 | |
100 | CDC_Device_USBTask(&VirtualSerial_CDC_Interface); |
101 | USB_USBTask(); |
102 | }
|
103 | |
104 | return 0; |
105 | }
|
Die Einstellungen sind nach dem LUFA Tutorial zum importieren der Bibliotheken gemacht: http://www.fourwalledcubicle.com/files/LUFA/Doc/120730/html/_page__exporting_library.html ARCH=ARCH_UC3 F_CPU=16000000 F_USB=48000000 BOARD=BOARD_NONE USE_LUFA_CONFIG_HEADER
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.