mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT90USB1287 mit Nutzung von USB und UART mit 460800 Baud


Autor: uffi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: M. H. (doktorgnadenlos)
Datum:

Bewertung
0 lesenswert
nicht 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 !

Autor: uffi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: M. H. (doktorgnadenlos)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan Salewski (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm nen Attiny2313 und programmier ihn als UART-SPI Converter.


Peter

Autor: uffi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ peda: Das ist ein konstruktiver Vorschlag. Danke für den Tipp. Das ist 
wirklich ne Überlegung wert. Danke, uffi.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.