Ich ich den Code jetzt soweit das ich den Timer in der geschwindigkeit einstellen kann. Dann hab ich mir mit dem Programm rnVAR berechen lassen, welchen Prescaler (Teiler) und welchen Timervorgabewert ich nehmen soll. Das Programm hat mir als Teiler 256 und als Timervorgabewert 34286 Vorgeschalgen. Mit diesen Infos hab ich dann den Code gefüttert, aber mein timer reagiert nicht bei einer Sekunde sondern bei ca 7-8 Sekunden. Kann mir jemand sagen wo mein Fehler liegt?
Verwendete Hardware:
Code:
.include"m16def.inc"
.def isreg = r15
.def wr0 = r16
.def iwr0 = r17
.def prescaler = r18
.def second = r19
.list
rjmp init
.org OC1Aaddr
rjmp Timerinterrupt
Timerinterrupt:
inc second
reti
init:
ldi wr0, 0xFF
out ddrb, wr0
ldi wr0, high( ramend )
out sph, wr0
ldi wr0, low( ramend )
out spl, wr0
ldi wr0, 1<<WGM12^1<<CS12 ; Festlegen des Teilers 265
out TCCR1B, wr0
ldi wr0, high( 34286 ) ;Festlegen des Timervorgabewertes
out ocr1ah, wr0
ldi wr0, low( 34286 ) ;Festlegen des Timervorgabewertes
out ocr1al, wr0
out tcnt1l, wr0
ldi wr0, 1<<OCIE1A
out TIMSK, wr0
sei
main:
ldi second, 0
_mai1:
cpi second, 60
breq main
out PORTB, second
rjmp _mai1
Kann mir jemand sagen wo mein Rechen- oder Codefehler liegt?
Lesezeichen