Hi,
möglicherweise steht der Interruptvektor für TIMER0 OVF nicht an der richtigen Stelle. An .org 0x000, Programmadresse $000 steht der rjmp zu main. Es folgen viele RETI, die aber jeweils auch nur 2 Byte belegen. Also nur einer Erhöhung des Programmcounters um eins bedürften. Nach der Interruptvectortabelle im Datenblatt zum Mega32 sollte der TIMER0 OVF auf Program Address $016 stehen. Nach deiner Tabelle im Programm komme ich nur auf Program Address $00A.
Jetzt kenne ich den AVR Studio/Assembler nicht und folgende Syntax könnte nicht stimmen
. Um den Vector sicher auf die richtige Speicheradresse zu bringen könntest Du die Tabelle eventuell so aufbauen:
Code:
.org 0x000
begin:
;--------------------------------------------------
rjmp main ; RESET External Pin, Power-on Reset, Brown-out Reset, Watchdog Reset, and JTAG AVR Reset
.org 0x002
reti ; INT0 External Interrupt Request 0
.org 0x004
reti ; INT1 External Interrupt Request 1
.org 0x006
reti ; INT2 External Interrupt Request 2
.org 0x008
reti ; TIMER2 COMP Timer/Counter2 Compare Match
.org 0x00A
reti ; TIMER2 OVF Timer/Counter2 Overflow
.org 0x00C
reti ; TIMER1 CAPT Timer/Counter1 Capture Event
.org 0x00E
reti ; TIMER1 COMPA Timer/Counter1 Compare Match A
.org 0x010
reti ; TIMER1 COMPB Timer/Counter1 Compare Match B
.org 0x012
reti ; TIMER1 OVF Timer/Counter1 Overflow
.org 0x014
reti ; TIMER0 COMP Timer/Counter0 Compare Match
.org 0x016
rjmp timer_int ; TIMER0 OVF Timer/Counter0 Overflow
Gruß
Searcher
Lesezeichen