Automatische Kalibrierung des internen RC-Oszillators
von Michael Gaus
Der interne RC-Oszillator des ATtiny13 kann laut Datenblatt trotz des Kalibrierbytes,
das beim Reset automatisch in das OSCCAL-Register geladen wird, eine Toleranz von bis
zu +-10% haben. Durch Nachjustieren des OSCCAL-Werts kann meist eine bessere Genauigkeit
erreicht werden. Mit dieser Sparrow-App ist eine automatische Kalibrierung mithilfe der
Audio-Verbindung zum Sparrow möglich. Der ermittelte OSCCAL-Wert wird im EEPROM an der
letzten Adresse 0x3F gespeichert und steht somit in anderen Sparrow-Apps zur Verfügung.
Wichtig ist, dass in den Fusebytes die Fuse EESAVE aktiv ist, da ansonsten beim Aufspielen
einer anderen Sparrow-App der im EEPROM gespeicherte OSCCAL-Wert während des
Programmiervorgangs gelöscht werden würde.
Beim Programmstart leuchten zunächst beide LEDs. Nun muss zuerst gewährleistet sein,
dass keine Audio-Ausgabe Richtung Sparrow stattfindet. Durch Drücken von Taste S1
wird die Messung gestartet. Nun kann über den SoundUart
ein passender Datenstrom gesendet werden, der für einen automatischen Abgleich von
OSCCAL geeignet ist.
Dazu sind folgende Einstellungen erforderlich:
Baudrate 1000, Byte 0x55, invertierte Ausgabe. Nun muss auf den Button "CheepIt" geklickt werden,
damit der SoundUart das Byte sendet. Falls anschließend die grüne LED nicht blinkt,
muss noch ein zweites mal auf den Button geklickt werden. Ob der Abgleich funktioniert hat, wird
folgendermaßen über die beiden LEDs angezeigt:
Abgleich erfolgreich:
Rote LED aus, grüne LED blinkt langsam mit 1 Hz, wobei die LED in der Einschaltphase
mit einer Frequenz von 1 KHz bei einem Duty Cycle von 80% moduliert wird. Dadurch kann
mit einem Oszilloskop oder Logicanalyzer geprüft werden, wie genau der Abgleich war.
Abgleich fehlgeschlagen:
Rote LED an, grüne LED blinkt. Bei schnellem Blinken (4 Hz) gab es einen Timerüberlauf
während der Messung. Dies deutet darauf hin, dass die Einstellungen im SoundUart
(Baudrate und Byte) nicht korrekt sind. Bei langsamem Blinken (2 Hz) liegt der ermittelte
OSCCAL-Wert nicht in der erwünschten Toleranz von ca. +/-4%. In diesem Fall einfach einen
Reset am Sparrow ausführen und nochmal einen neuen Abgleich starten.
Quelle: