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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.