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
;----------------------------------------
Lesezeichen