Forum: Mikrocontroller und Digitale Elektronik wieder mal OSCCAL


von bombastix (Gast)


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 !!

von Rene (Gast)


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.

von Rene (Gast)


Lesenswert?

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

von bombastix (Gast)


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

von bombastix (Gast)


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

von Michael U. (Gast)


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

von Rene (Gast)


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.

von bombastix (Gast)


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

von None (Gast)


Lesenswert?

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

von Εrnst B. (ernst)


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

von Andreas K. (a-k)


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.

von bombastix (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.