so, habe kleine Änderungen vorgenommen. Vielleicht kann mir einer sagen, warum der sch*** Timer nicht anfängt zu zählen. TCNT0 bleibt ständig unverändert und ich habe glaube ich alle notwendigen Bits gesetzt. So langsam macht mich das richtig wütend. Naja zumindest habe ich es geschafft mit dem IN Befehl TIFR in ein anderes Register zu kopieren, so das ich es abfragen kann.
Code:
.NOLIST
.INCLUDE "m8def.inc"
.LIST
rjmp main
reti ; IRQ0
reti ; IRQ1
reti ; Timer1 Capture
reti ; Timer1 Compare
reti ; Timer1 Overflow
;rjmp TIM0_OVF ; Timer0 Overflow
reti ; SPI Complete
reti ; UART Rx
reti ; UART Data empty
reti ; UART Tx
reti ; ADC Conversion Complete
reti ; EEPROM ready
reti ; Analog Comparator
main:
ldi R16,LOW(RAMEND) ;Initiallisiert Stackpointer
out SPL,R16
ldi R16,HIGH(RAMEND)
out SPH,R16
sei ;Global Interrupt Enable
;TIM0_OVF:
timer:
ldi R16,0x00; Aufwärtszähler auf 0 setzen TCNT0
out TCNT0,R16; Timer/Counter Register
ldi R16,0x01 ;Timer/Counter0 Overflow Interrupt Enable
out TIMSK,R16 ;Timer/Counter Interrupt MaskRegister
ldi R16,0x05; 00000101 in TCCR0 (prescaler 1024)
out TCCR0,R16 ;Timer/Counter Control Register
;(FUCKING TIMER GESTARTET ODER NICHT?)
uebertrag: ;Übertragsabfrage
in R16, TIFR ;Timer/Counter0 Overflow Flag
sbrs R16,0 ;Skip if Bit in Register is Set
rjmp uebertrag
;reti ;Interrupt Return
; in R16, TIFR ;Timer/Counter0 Overflow Flag
; sbrs R16,0 ;Skip if Bit in Register is Set
;rjmp uebertrag
; cbr R16,0 ;Timer/Counter Interrupt Flag Register
;Skip if Bit in Register is Set
; rjmp uebertrag
;weiter:
;rjmp weiter ....
rjmp main
NACHTRAG:
habe herausgefunden, dass wenn ich TCCR0 auf 001 (no prescaling) setze, er zählt. Sobald jedoch ein prescaling drin ist, macht er es nicht mehr.
Lesezeichen