mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik wieder mal OSCCAL


Autor: bombastix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

eventuell kann mir bei folgender Frage jemand weiter helfen....

Ich benutze einen ATTINY2313 mit internem  8 MHz Takt bei 5V und 
Zimmertemperatur (im Gehäuse, also etwas wärmer...sagen wir mal 23 
Grad).

Der im Werk hinterlegte OSCCAL Wert ist für 8 MHz (gut) aber 3,3 V und 
(glaube ich) 20 Grad Celsius.

Ich möchte mehrere Geräte in Serie bauen bzw. eine allgemeingültige 
Software verwenden - eine individuelle OSCCAL Ermittlung scheidet also 
aus.
(ich kann keinen Quarz verwenden, Pins sind verbraten).

Wie stark ist denn die Streuung der OSCCAL Werte in verschiedenen Chips 
??

Oder anders gefragt ist es besser einen (nicht individuellen) OSCCAL 
Wert in alle 2313 meiner Serie zu brennen, welcher aber bei 5V und 23 
Grad ermittelt wurde ? Oder ist die Chipspezifische Streuung zu groß ?

Vielen Dank für eure Antworten !!

Autor: Rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Exemplar Streuuung ist zu gross fuer serielle Kommunikation. Ich 
verwende einen 32k Quarz zum Eichen bei (jedem) powerup an Timer2. Und 
die Werte streuen sehr stark. Die Spannungsabhaengigkeit ist marginal 
(+-1), aber die Temperaturabhaengigkeit ist es nicht(+-3).

Neben dem 32k Quarz an timer2 fuer 0.15Euro, benoetigt man ca 60 Zeilen 
ASM Code fuer die Kalibration. Die Appnote uebertreibt masslos in dieser 
Hinsicht.

Autor: Rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, ich vergass die Exemplarstreuung, die kann schon mal 20hex fuer 
eine Frequenz betragen.

Autor: bombastix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die schnelle Antwort.

zusammengefasst...

Die Exemplarstreuung überwiegt die Spannungs- und Temperaturstreuung bei 
weitem - ein Nachkalibrieren mit einem fixen (Exemplarunabhängigen) Wert 
ist Unsinn (schade).

Ist das richtig so ?

Grüße,

Bombastix

Autor: bombastix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
neue Idee....

wenn ich den individuellen OSCCAL Wert per ISP auslese, kann man dann 
durch z.B. addition eines Korrektufaktors (der 5V und 23 Grad Celsius 
verkörpert) einen besseren OSCCAL Wert als den implementierten (ohne 
Kalibrierung!) ermitteln ?

Grüße,

Bombastix

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Du hast nichts über die konkreten Bedingungen geschrieben...

Für UART und zeitgenaue Anwendungen geht ohne Quarz normalerweise 
nichts, zumindest nicht zuverlässig bei wechselnden 
Umgebungsbedingungen.

Kommt also daruf an, wieviel zuläsige Abweichung die konkrete Anwendung 
verkraftet.

Gruß aus Berlin
Michael

Autor: Rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@bombastix,
weshalb nicht bei der Programmierung eine Kalibration vornehmen ? Ob's 
ein Offset tut weiss ich nicht, da ich einen Quarz zur Kalibration habe. 
Mach am Besten ein paar Tests.

Autor: bombastix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,

es soll nur genauer sein...

Der 2313 soll bei Wegfallen eines externen Taktes diesen selbst 
generieren - so genau wie möglich (Uhrzeit).
Es gibt also keine Grenzbedingungen - je genauer, um so besser.

Viele Grüße,

Bombastix

Autor: None (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Temperatur mit einem NTC messen und aufgrund einer Tabelle den 
OSCCAL korrigieren geht nicht ?

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du eh schon einen externen Takt hast, und nur bei dessen Wegfall 
genauer bleiben willst:

Kontinuierlich OSCCAL anhand des externen Taktes nachkalibrieren, und 
bei Wegfall den letzten wert beibehalten...

Klappt dann sogar, wenn eines der Module grad bei -10° im Tiefkühler 
ist, wärend das andere grad in der Sauna schwitzt...

Blos sollte sich nach dem Wegfall des Taktes die Temperatur nichtmehr 
stark ändern

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Automatische Kalibrierung ist beispielsweise auf Basis eines externen 
Referenztaktes möglich. Ein Beispiel dazu findet sich im Code vom 
Butterfly, der den internen Oszillator über den 32KHz Uhrenquarz 
einstellt.

Ist bei dem 2313 aber etwas schwieriger (besser: Mega8, Mega48), weil 
der keinen separaten 32KHz Oszillator hat. Der Referenztakt müsste also 
extern erzeugt werden. Ein Oszillator-Fallback bei Ausfall eines 
Oszillators gibt es bei manchen Controller-Familien, aber nicht bei 
AVRs.

Autor: bombastix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ernst,

eine gute Idee....wenn ich noch Platz im Flash hätte....

Rene schrieb da was von 60 Zeilen ASM - grob geschätzt mal 2 - 
mindestens 120 Byte, so viel Platz habe ich auf keinen Fall (was in C 
wohl daraus wird?).

Aber elegant wäre das schon...

Ich will sozusagen am fertigen Objekt durch minimale Änderungen noch 
etwas "tunen".

Trotzdem vielen Dank, schöne Idee - merke ich mir.

Bombastix

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.