mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Uhrenquarz und RS232


Autor: Peter Roth (gelb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe derzeit einen ATmega88 mit 32,768kHz - Quarz (asynchron) für 
die RTC, die im Power-Save-Mode bei 5µA Stromverbrauch weiterläuft.

Als schneller Haupttakt für den Wachzustand (des Controllers!) ist dann 
leider nur noch der interne RC-Oszillator möglich.

Ich muss aber RS232 mit 115,2kBaud betreiben und brauche eigentlich 
einen Baudratenquarz, z.B. 7,3728 MHz.

Welche Möglichkeiten gibt es, den Haupttakt genauer zu machen? Externer 
Oszillator? Anderer Controller (selbe Familie, nicht SMD)?

Auf externe RTC bin ich selbst schon gekommen, ist aber nicht elegant.

Grüße, Peter

Autor: so nicht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na. Den internen RC auf den externen 32kHz synchronisieren. Sind ein 
paar duzend ASM Zeilen.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter
Der interne Oszillator reicht für den UART, wenn man ihn ab und zu 
nachregelt. Als Referenz dient dann der 32kHz Quarz. Schau mal bei 
Atmel, da gibt es einige AppNotes zu dem Thema, und auch fertigen Code.

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.. oh doch, leider zu genau.

wenn ihr sowas vorhabt nehmt eine RTC mit integriertem Quarz
und wenn notig mit int. Bat.

Autor: Peter Roth (gelb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  so nicht (Gast)

meinst du synchronisieren mit Hilfe von Software-UART?

Bei Änderung des Kalibrierbytes sind die Sprünge in der Frequenz zu 
groß. Da kommt nur entweder zu viel oder zu wenig raus.

Grüße, Peter

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Peter Roth

>Welche Möglichkeiten gibt es, den Haupttakt genauer zu machen? Externer
>Oszillator? Anderer Controller (selbe Familie, nicht SMD)?

das ist der falsche Weg!

@ Gesäßvioline

Du scheinst Dich auszekennen!

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Peter Roth (gelb)

>meinst du synchronisieren mit Hilfe von Software-UART?

Nein, er meinte die Kalibrierung des interen RC-Oszillators per OSCCAL.

>Bei Änderung des Kalibrierbytes sind die Sprünge in der Frequenz zu
>groß. Da kommt nur entweder zu viel oder zu wenig raus.

Probiert oder nur eine Vermutung? Wenn einige sogar OHNE Kalibrierung 
den UART betrieben. Und für RS232 mit dem PC reichen +/-3%.

MFG
Falk

Autor: Peter Roth (gelb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Benedikt K. (benedikt)

Danke für den Tip, habe die Applikation zur Syncronisation gefunden. 
Abgleich auf +/- 2% ist möglich. Bei niedrigeren Frequenzen ist die 
OSCCAL-Kurve zumindest beim ATmega88 flacher als bei höheren Frequenzen, 
so dass ich meine heißgeliebten 7,37.. MHz vielleicht genauer als 2% 
hinbekomme.

Grüße, Peter

Autor: eProfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es geht sehr gut und genau mit OSCCAL.
<Reim>
Der Butterfly wird genau so betrieben,
dort ist es auch sehr schön beschrieben.
</Reim>
lies mal dort nach.

Autor: Peter Roth (gelb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Falk Brunner (falk)

>>Bei Änderung des Kalibrierbytes sind die Sprünge in der Frequenz zu
>>groß. Da kommt nur entweder zu viel oder zu wenig raus.

> Probiert oder nur eine Vermutung? Wenn einige sogar OHNE Kalibrierung
> den UART betrieben. Und für RS232 mit dem PC reichen +/-3%.

Im Datenblatt werden 0,5% empfohlen, ab dann steigt das Fehlerrisiko. 
Aber nur bei kritischen Anwendungen (large serial frames etc.) Daher 
meine Weisheit.

Aber wenn 3% genügen, klappt das ja mit OSCCAL - Synchronisierung.

Grüße, Peter

Autor: rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Appnote von Atmel bezueglich Synchronisation des RC auf einen 32kHz 
Quartz ist Schrott, die verpuffen viel zuviel Code fuer so eine 
Trivialitaet. Ich hab's mit 60 Zeilen ASM geschafft.
http://www.ibrtses.com/embedded/avrosccal.html

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

denn internen Oszillator kann man wundebar verbiegen und abgleichen.

Bei einem Mega8 habe ich den 4MHz Oszillator auf 4,9152MHz verbogen
durch einen Abgleich mit 32,768Khz beim Start.
Danach wird alle 8 Sekunden (Überlauf vom 32,..) kontrolliert durch denn
Wert eines schnellen Zählers (LED-Multiplex mit ca. 400 Hz) und fein 
nach-
geregelt (OSSCAL+-1).

Top Ergebnis auch bei aufheizen (Heisluft) bis 80° und Betrieb bei
3,3Volt.

Für RS232 locker ausreichend!

gruß Hans

Autor: Peter Roth (gelb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke an alle, die geantwortet haben. Das Problem sollte nun gelöst 
sein.

Grüße, Peter

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.