Unregistriert
25.08.2014, 14:38
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:
.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.
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:
.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.