Forum: Mikrocontroller und Digitale Elektronik Atmega8u2 USB


von B.H. (Gast)


Lesenswert?

Hallo,
versuche seit ein paar Tage einen Atmega8u2 am USB zum laufen zu 
bekommen.
Die Schaltung ist Standard. µC an 16Mhz Quartz. Zwischen USB und µC sind 
zwei 22Ohm Widerstände.
Als Treiber wollte ich LUFA verwenden, da ich mit dem AVR Studio absolut 
nicht klar komme. Ich habe nun den LUFA DFU Bootloader so konfiguriert, 
dass er mit einem Atmega8u2 laufen sollte:
1
MCU          = atmega8u2
2
ARCH         = AVR8
3
BOARD        = USER
4
F_CPU        = 16000000
5
F_USB        = $(F_CPU)
6
OPTIMIZATION = s
7
TARGET       = BootloaderDFU
8
SRC          = $(TARGET).c Descriptors.c BootloaderAPI.c BootloaderAPITable.S $(LUFA_SRC_USB)
9
LUFA_PATH    = ../../LUFA
10
CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -IConfig/ -DBOOT_START_ADDR=$(BOOT_START_OFFSET)
11
LD_FLAGS     = -Wl,--section-start=.text=$(BOOT_START_OFFSET) $(BOOT_API_LD_FLAGS)
12
13
# Flash size and bootloader section sizes of the target, in KB. These must
14
# match the target's total FLASH size and the bootloader size set in the
15
# device's fuses.
16
FLASH_SIZE_KB         = 8
17
BOOT_SECTION_SIZE_KB  = 4
Es kompiliert auch wunderbar, nur wenn ich nun den Code auf den Atmega 
lade, passiert gar nichts. Auch keine Enumeration.
Mein erster Gedanke war nun, dass der Takt nicht stimmt.
Unter den fuses habe ich EXTLOFXTAL im Avrstudio (das einzigste mit 
XTAL).
wenn ich nun diesen Code ablaufen lasse:
1
    asm volatile("nop");   //1clk
2
    PORTC |= (1<<4);       //2clk
3
    asm volatile("nop");   //1clk
4
    PORTC &= ~(1<<4);      //2clk + rjmp 2clk = 8clk*2MHz = 16MHz

dann sehe ich im oszi ein 2MHz Signal. Also läuft er mit den 16Mhz.
Die USB Buchse habe ich auch schon überprüft, ob sie richtig 
angeschlossen ist.
Das einzige Merkwürdige sind 4Volt, die ich am USB_cap Messe, der für 
den Internen Stepdown-Wandler benötigt wird. Das sollten doch 3.3V sein 
oder?

Kann mir jemand Tipps geben, wie ich die USB Kommunikation überprüfen 
kann? Oszi steht zur Verfügung.

mfg.

von Achim M. (minifloat)


Lesenswert?

B.H. schrieb:
> Das einzige Merkwürdige sind 4Volt, die ich am USB_cap Messe, der für
> den Internen Stepdown-Wandler benötigt wird. Das sollten doch 3.3V sein
> oder?

Sind auch alle Masseanschlüsse angeschlossen?

B.H. schrieb:
> Zwischen USB und µC sind
> zwei 22Ohm Widerstände.

Hm? Was steht denn dazu im Datenblatt? Kommt mir ein kleines bisschen 
hoch vor.
mfg mf

von Uwe (de0508)


Lesenswert?

Hallo,

ein andere OM hatte scheinbar das selbe Problem, seine Lösung: per 
Software am Anfang des Programms den externen Takt einschalten !

Die Fuse Bits helfen hier nicht weiter.

So lief bei ihm dann der USB-Bootloader aus dem Lufa Projekt.

# http://www.fourwalledcubicle.com/LUFA.php

-

von B.H. (Gast)


Lesenswert?

WOW
es war tatsächlich eine fehlende Masseverbindung!!!
Einen Blick auf das Layout, und den Fehler entdeckt...

Vielen Dank!

von B.H. (Gast)


Lesenswert?

Ach, und die Widerstände stammen aus dem Datenblatt, und dem Arduino 
Layout:http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf

Nur meldet sich der µC Als AT90USB82. Da scheint beim build noch etwas 
falsch gegangen zu sein....

jedenfalls dank!

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.