Hallo,
ich arbeite mich gerade in die Mikrocontrollerprogrammierung ein. Aktuell kämpfe ich mit den Interrupts.
Das Board ist wie folgt verkabelt: Taster 1 an Port D.2, Taster 2 an D.3, grüne LED an B.1, gelbe LED an B.2, rote LED an B.3.
Das ist mein Programmcode:
Code:
.include "AVR.H"
begin: rjmp main ; RESET External Pin, Power-on Reset, Brown-out Reset and Watchdog Reset
rjmp interrupt0 ; INT0 External Interrupt Request 0
rjmp interrupt1 ; INT1 External Interrupt Request 1
reti ; TIMER2 COMP Timer/Counter2 Compare Match
reti ; TIMER2 OVF Timer/Counter2 Overflow
reti ; TIMER1 CAPT Timer/Counter1 Capture Event
reti ; TIMER1 COMPA Timer/Counter1 Compare Match A
reti ; TIMER1 COMPB Timer/Counter1 Compare Match B
reti ; TIMER1 OVF Timer/Counter1 Overflow
reti ; TIMER0 OVF Timer/Counter0 Overflow
reti ; SPI, STC Serial Transfer Complete
reti ; USART, RXC USART, Rx Complete
reti ; USART, UDRE USART Data Register Empty
reti ; USART, TXC USART, Tx Complete
reti ; ADC ADC Conversion Complete
reti ; EE_RDY EEPROM Ready
reti ; ANA_COMP Analog Comparator
reti ; TWI 2-wire Serial Interface
reti ; SPM_RDY Store Program Memory Ready
;------------------------------------------------------------------------------
main: ldi r16, hi8(RAMEND)
out SPH, r16
ldi r16, lo8(RAMEND)
out SPL,r16
cbi DDRD, 2 ; D.2: Eingang, Taster
sbi PORTD, 2 ; Pull-Up
cbi DDRD, 3 ; D.3: Eingang, Taster
sbi PORTD, 3 ; Pull-Up
sbi DDRB, 1 ; B.1: grüne LED
sbi DDRB, 2 ; B.2: gelbe LED
sbi DDRB, 3 ; B.3: rote LED
sbi PORTB, 1 ; B.1: grüne LED ein
sbi PORTB, 2 ; B.2: gelbe LED ein
sbi PORTB, 3 ; B.3: rote LED ein
ldi r16, 0b00000011
out EIMSK, r16
ldi r16, 0b00001010
sts EICRA, r16
sei
;-----------------------------------------------------------------------------
mainloop: wdr
rjmp mainloop
interrupt0: cbi PORTB, 1 ; grüne LED aus
reti
interrupt1: cbi PORTB, 3 ; rote LED aus
reti
Was passieren soll: Die drei LEDs leuchten mit Programmbeginn. Bei Betätigung von Taster 1 wird die grüne LED per Interrupt abgeschaltet. Bei Betätigung von Taster 2 wird die grüne LED abgeschaltet.
Was passiert: Die LED leuchten. Taster 1 schaltet die rote LED aus, Taster 2 bewirkt gar nichts.
Ich kapier leider nicht, was da schief läuft, und bin für jede Hilfe dankbar.
Lesezeichen