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:
Gruß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
Searcher







. Um den Vector sicher auf die richtige Speicheradresse zu bringen könntest Du die Tabelle eventuell so aufbauen:
Hoffentlich liegt das Ziel auch am Weg
Zitieren

Lesezeichen