UART mit Internem Oszillator über großen Temperaturbereich

OP #1128370
Ich habe einen ATMega88 welcher auf einer Platine mit verschiedenen I2C 
Sensoren in einem Temperaturbereich von -30° bis 50°C eingesetzt wird.
Da die Schaltung sehr starken Vibrationen ausgesetzt ist, vertraue ich 
auf keinen Quarz (erfahrungsgemäß mögen die das nicht!) und möchte den 
internen RC Oszillator verwenden.
Mein Problem ist nun, das der AVR jede Minute 4Byte an Messdaten zur 
Zentraleinheit schicken soll.
Ich habe mir also überlegt, dass die Zentraleinheit ein 0-Byte schickt, 
der AVR die Zeit zwischen Start- und Stopbit misst und sich dann 
anpasst.
Ist es besser den RC-Oszillator zu kalibrieren oder die 
Baudrateneinstellung anzupassen? Wie kann ich die Länge am einfachsten 
messen ohne einen zusätzlichen Pin (mit ICP gehts ja recht einfach...) 
am AVR zu opfern?
Welches vorgehen ist empfehlenswert?
#1128373
Schau dir mal den Bootloader von Peter Danegger in der Codesammlung an, 
der erkennt die Baudrate automatisch. Er verwendet zwar einen Soft UART, 
aber die Baudratenmessung sollte auch auf den Hardware UART übertragbar 
sein.

Ich würde OSCCAL verändern, das dürfte feiner einstellbar sein, vor 
allem wenn die Baudrate etwas höher ist. Prinzipiell sollte es aber egal 
sein.
Gast #1128387
Schau mal auf das LIN-Protokoll.

Dort findet bei jeder Übertragung eine Neukalibrierung zwischen Master 
und Client statt.  Das Protokoll ist speziell auf solche Anwendungen 
(geringe Datenrate, einfache Implementierung des Clients), wie von Dir 
geschildert, ausgerichtet.

  RE
#1128394
Benedikt K. wrote:
> Ich würde OSCCAL verändern, das dürfte feiner einstellbar sein, vor
> allem wenn die Baudrate etwas höher ist. Prinzipiell sollte es aber egal
> sein.

Ich hab wohl übersehen, wo im Datenblatt die garantierte Funktion f_RC = 
f(OSCCAL) steht, kannst Du sie mir sagen?


Den Baudratentimer kannst Du nach der Messung sofort auf den richtigen 
Wert einstellen.
Mit OSCCAL geht nur Trial&Errror, d.h. Du mußt soviele Meßbytes 
schicken, bis es stimmt.


Peter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.