1/100 sekunde Interrupt?

Gast #52339
Lesenswert?

Hallo, habe mal eine Stopuhr programmiert und dabei den Timer1(Atmega
8), Compare Match verwendet(kaononen uns spatzen) um einen 1/100
Sekunden Interrupt zu erhalten. meine Idee war bei 4Mhz einen vorteiler
von 64 zu verwenden, und dann den Timer 1 bis 625 laufen zu lassen (low
113, high 2).
Meine Rechnung bei 4Mhz / 64 = 62500 Timerschritte je Sekunde / 100 =
625 ,also alle 625 Timerschritte ein Interrupt. Soweit meine Theorie.
In Praxis läuft die Uhr viel viel schneller als gewünscht.Das der AVR
mit 4 Mhz läuft habe ich kontrolliert. Kann mir das nicht erklären.
Ihr?
Danke
Gast #52342
Lesenswert?

danke danke, erst high dann low sonst gehts in klo,
der simulator hat diesen fehler ignoriert,

 diese code funktioniert
;*********************************************************************

;Start des Timers 1 zum Generieren des 1/100 s taktes, Vorteiler 64 ,


Tim1_Start:

cli
clr temp1
out TCNT1H,temp1 ; löschen der Zählregister
out TCNT1L,temp1

ldi temp1,$02
out OCR1AH,temp1
ldi temp1,$71
out OCR1AL,temp1

ldi temp1,0b00010000
out TIMSK,temp1

ldi temp1,0b00001011     ; Start Vorteiler auf 64
out TCCR1B,temp1
sei

ret

;*********************************************************************

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