OSCCAL automatisieren

Gast #109150
Lesenswert?

Hi,
ich habe eine inline assembler routine geschrieben um das OSCCAL Byte
während der Programmausführung aus dem Flash in das OSCCAL register zu
schreiben.Nun zu meinem Problem: Wie kann ich testen ob die routine so
funktioniert. Das AVR Studio will irgendeine .s datei um den attiny15
zu simulieren. Jemand ne idee ?
Gruss
peter
Angehängte Dateien:
Gast #109152
Lesenswert?

Hi..

Mal von C ganz angesehen, sowas ist doch eigentlich normal. Nur teste
ich noch, ob ein gültiges Calibrationsbyte im Flash liegt, wobei ich
darauf spekuliere, dass $ff als Calibrationsbyte nicht vorkommt.

reset:            ;Initialisierung
 ldi zl,low(1022)  ;Pointer auf
 ldi zh,high(1022)  ;Calibrationsbyte
 lpm      ;nach r0 holen
 ldi zl,255    ;Referenz
 cpse zl,r0    ;Calibrationsbyte gültig (<>$ff)?
 out osccal,r0    ;ja, kalibrieren
 ...                    ;weitere Initialisierungen...

Gilt so für Tiny12 und Tiny15, kostet außer 6 Worten Flash keine
Ressourcen, da zu diesem Zeitpunkt noch kein Register für andere Zwecke
benutzt wird und die Inhalte der hierfür benutzten Register nicht mehr
gebraucht werden...

Übrigens vermisst AVR-Studio (4.08) bei mir keine .s Datei, ich
programmiere aber auch in Assembler.

Testen, ob die Calibration erfolgreich ist, kannst du durch ein
Programm. Aktiviere einen Timer, lass in seiner ISR einen Pin toggeln,
miss dessen Frequenz und errechne anhand der Timereinstellungen die
AVR-Taktfrequenz. Diese sollte der kalibrierten Oscillatorfrequenz
entsprechen (Tiny12: 1,2MHz, Tiny15: 1,6MHz).

Da mein ISP-Programm beim Löschen gleich das Calibrationsbyte ausliest
und ins Flash schreibt, komme ich mit dieser Automatisierung sehr gut
zurecht,zumindest solange ich die AVRs selbst update.

...HanneS...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren