Ich möchte den OSCCAL meines AVRs für eine ordnungsgemäße RS-232-Kommunikation einstellen, indem ich die Übertragung des anderen Endes als Kalibrierungsuhr verwende, ohne den RX-Pin an einen Timer-Pin löten zu müssen. Gibt es dafür eine Firmware?
Bearbeiten
Ich endete damit, meine eigene Synchronisationsroutine zu schreiben und den RX-Pin an die ICP-Einheit (Input Capture) zu löten. Wenn sich der ICP-Pin ändert, wird der Wert von TIMER1 in ein Register kopiert und ein Interrupt ausgelöst.
Der Code verwendet eine ADCPM-inspirierte Suchtechnik. OSCCAL wird anfänglich um 1 inkrementiert oder dekrementiert. Jedes Mal, wenn sich OSCCAL wieder in die gleiche Richtung bewegen muss, bewegt es sich doppelt so weit, wenn es die Richtung ändert, beginnt es wieder bei 1. http://code.google.com/p/pwmsign/source/browse/synch.c
All diese Probleme, und ich entdeckte, dass der perfekte OSCCAL nur 1 von der Werkseinstellung abweicht.
Offensichtlich suche ich nach dem von Atmel bereitgestellten Datenblatt AVR054: Laufzeitkalibrierung des internen RC-Oszillators. Ich denke, es könnte ohne allzu große Probleme an die PC-zu-AVR-Kommunikation angepasst werden ...
Kortuk
Markieren
joeforker