AT90USB1287 mit Nutzung von USB und UART mit 460800 Baud

Gast #923200
Lesenswert?

Hallo,

ich möchte auf einem neu zu entwerfenden PCB einen AT90USB1287 
einerseits mit der USB-Schnittstelle zum Programmieren via FLIP und nach 
dem Code flashen für die UART-Kommunikation zu einer Sony Ericson MCA-25 
Kamera mit 460800 Baud nutzen.

Mein Problem:
- USB braucht einen Quartzkristall für die Systemclock mit einer 
Zweierpotenz von 2 MHz (z.B. 16 MHz).
- Für den UART brauche ich aber einen Quartzkristall mit 14,7456 oder 
7,3728 MHz für die Systemclock.

Erste Idee zur Lösung:
2 verschiedene Quartzkristalle auf das Board setzen und über Jumper 
konfigurieren.
Nachteil: Man muss jedesmal zweimal zwei Jumper umstecken, wenn man 
neuen Code laden will.

Habt ihr noch eine pfiffigere Idee?

Braucht man den Quartzkristall für USB auch schon dann, wenn man nur mit 
dem Bootloader Code laden will?

Kann man evtl. die Baudrate für den UART auch vom externen Quartz für 
den Timer2 generieren?

Danke und Gruß, uffi.
#923219
Lesenswert?

Die UART ist sehr tolerant hinsichtlich Taktgenauigkeit. Soweit ich weiß 
synchronisieren die AVRs bei jedem Flankenwechsel. Nach 9 bzw. 10 Bits 
(Startbit + 8 Datenbits (+ 1 Paritybit)) ergibt sich zwangsläufig ein 
Flankenwechsel. Die Abtastung erfolgt etwa in der Bitmitte, sodass die 
maximal tolerierte Taktabweichung einfach zu berechnen ist.

Also, nur Mut beim Runden des UBRR-Registers !
Gast #923248
Lesenswert?

Laut Datenblatt des AT90USB1287 liegt der max tolerierbare Fehler bei 
1-3% je nach Konfig.

Der auftretende Fehler beim Runden des UBRR liegt aber in diesem Fall 
mit 460800 Baud bei 8%. Also wird das nicht hinhauen.
#923266
Lesenswert?

Ich hab's mal kurz überschlagen :
UBRR = 0x03 ergibt tatsächlich eine Abweichung von ca. 9% (mit Double 
Speed).
Daraus ergibt sich eine Baudrate am AVR von 500000Baud. Nach 6 Bits sind 
die 50% bereits überschritten. Resynchronization geschieht nur beim 
Startbit.
Tja, da scheint in der Tat nicht zu funktionieren.
Gast #923441
Lesenswert?

>Braucht man den Quartzkristall für USB auch schon dann, wenn man nur mit
>dem Bootloader Code laden will?

Gerade da, denn die Übertragung soll ja fehlerfrei sein.

>- USB braucht einen Quartzkristall für die Systemclock mit einer
>Zweierpotenz von 2 MHz (z.B. 16 MHz).

Nach dem aktuellen Datenblatt sind sogar nur noch 8 und 16 MHz Quarze 
für USB erlaubt (steht irgendwo am Ende, Errata oder so).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren