Ich hab ein Prgramm geschrieben, dass eigentlich, viel mehr als nur einen Interrupt auslösen soll. Jetzt hab ich es mal bis auf die Fehlerquelle beschränkt, und hab es noch mal mit Beispielprogrammen verglichen, und konnte keine Unterschiede mehr feststellen und trotzdem wird bei mir der externe Interrupt 0 nicht ausgelöst, weder im Simulator noch in echt.
Laut Simulator verweilt der Prozessor im idle und in der Realität schein er dass auch zu machen.Code:.include "m16def.inc" .def temp = r16 .org 0x000 rjmp RESET ;bei Reset .org 0x002 rjmp EXT_INT0 ;INT0 .org 0x004 reti ;INT1 .org 0x006 reti ;INT2 .org 0x008 reti ;Timer2 Vergleich korrekt .org 0x00A reti ;Timer2 Overflow .org 0x00C reti ;Timer1 Capture Event ??? .org 0x00E reti ;Timer1 Vergleich von A korrekt .org 0x010 reti ;Timer1 Vergleich von B korrekt .org 0x012 reti ;Timer1 Overflow .org 0x014 reti ;Timer0 Vergleich korrekt .org 0x016 reti ;Timer0 Overflow .org 0x018 reti ;Serialer Transfer fertig .org 0x01A reti ;USART Datenempfang (RX) fertig .org 0x01C reti ;USART Datenregister leer .org 0x01E reti ;USART Datensendung (TX) fertig .org 0x020 reti ;ADC Vergleich fertig .org 0x022 reti ;EEPROM fertig .org 0x024 reti ;Analog Comperator .org 0x026 reti ;Two-wire Serial Interface .org 0x028 reti ;Store Program Memory fertig RESET: ;----- Stack ldi temp, low(RAMEND) ;Stackpointer out SPL, temp ldi temp, high(RAMEND) out SPH, temp ;----- Kontrolllampen an Port A ldi temp, 0xFF out DDRA, temp ;----- Interrupts ldi temp, 0b01000000 out DDRD, temp ldi temp, 0b00000011 ;Interrupt Reaktionsimpuls einstellen out MCUCR, temp ldi temp, 0b01000000 ;Interrupts enablen out GICR, temp sei ;Interuppts aktivieren IDLE: rjmp idle ;----- Interrupts EXT_INT0: sbis PORTA, 0 sbi PORTA, 0 sbic PORTA, 0 cbi PORTA,0 reti
Fusebits sind kontrolliert, an A liegen Leds und der interupt wird von einem nicht entprellten Schalter mit Pulldown Widerstand ausgelöst.







Zitieren

Lesezeichen