ich starte mal diesen Thread wieder, da ich zu der Interrupttabelle auch eine Frage habe.
Sobald ich nach rjmp reset ein reti stehen habe, funktioniert kein Programm. Sobald da nur rjmp reset steht funktionierts. Warum ist es so, wo liegt der Fehler.
Selbst bei Programmen die keine Interrupts benutzen darf ich keinen reti stehen haben. Also Programme die den Eingang gleich an Ausgang schalten; sprich, das billigste vom billigsten.
Kann den Fehler einfach nicht finden. AVR Studio gibt keinen Fehler aus und ich möchte auch nicht nach jeder kleinen Änderung den uC neu programmieren. Soll ja angeblich auch nicht unbegrenzt oft funktionieren.
Code:.include "m8def.inc" .def temp = r16 rjmp reset ; Reset Handler ;rjmp interrupt0 ; IRQ0 Handler ;reti ; IRQ1 Handler ;reti ; Timer1 Capture Handler ;reti ; Timer1 compare Handler ;reti ; Timer1 Overflow Handler ;reti ; Timer0 Overflow Handler ;reti ; SPI Transfer Complete Handler ;reti ; UART RX Complete Handler : RXCIE ;reti ; UDR Empty Handler ;reti ; UART TX Complete Handler ;reti ; ADC Conversion Complete Interrupt Handler ;reti ; EEPROM Ready Handler ;reti ; Analog Comparator Handler ;reti ;reti ;reti ;reti ;reti reset: ldi temp, LOW(RAMEND) ;LOW-Byte der obersten RAM-Adresse out SPL, temp ldi temp, HIGH(RAMEND) ;HIGH-Byte der obersten RAM-Adresse out SPH, temp ldi r16, 0xFF out DDRC, r16 ; Port C output ldi r17, 0x00 out PORTC, r17 ; Port C LEDs an ;-----------externer Interrupt enablen-------------- ldi r16, 1<<int0 out GICR, r16 ldi r16, 1<<ISC01 out MCUCR, r16 sei ;global interrupt enable ;---------------------------------------------------- main: loop: rjmp loop ;----------Interruptprozedur-------------- interrupt0: com r17 out PORTC, r17 reti ;----------------------------------------





Zitieren

Lesezeichen