Hallo Zusammen,
ich wollte einfach mal einen Interrupt am mega 169 ausprobieren;
Wechsel von High nach Low an PINB.0 (PCINT8) soll einen Interrupt
auslösen und am PORTD.0 den Ausgang low setzen. Leider habe ich
Probleme bei der Maskierung des Interrupts, so dass mein Programm nicht
läuft.
Kann vielleicht jemand mal einen Blick auf das Programm werfen.
Vielen Dank im Vorraus
Charly
;Reset and Interrupt vector
begin: rjmp main ;1 POWER ON RESET
rjmp PCINT ;2 PCINT8-Interrupt
reti ;3 Int1-Interrupt
reti ;4 TC2 Compare Match
reti ;5 TC2 Overflow
reti ;6 TC1 Capture
reti ;7 TC1 Compare Match A
reti ;8 TC1 Compare Match B
reti ;9 TC1 Overflow
reti ;10 TC0 Overflow
reti ;12 UART Rx Complete
reti ;13 UART Data Register Empty
reti ;14 UART Tx Complete
reti ;15 ADC Conversion Complete
reti ;16 EEPROM Ready
reti ;17 Analog Comparator
reti ;18 TWI (I²C) Serial Interface
reti ;19 Store Program Memory Ready
;-----------------------------------------------------------------------
-
;Start, Power ON, Reset
main: ldi r16, low(RAMEND)
out SPL, r16
ldi r16, high(RAMEND)
out SPH, r16
ldi r16,0b00000000 ;PORTB Eingang
out DDRB,r16
ldi r16,0b11111111 ;PORTD Ausgang
out DDRD,r16
ldi r16,0b11111111 ;PORTD abschalten
out PORTD,r16
ldi r16,0b10000000
sts EIMSK,r16
ldi r16,0b00000001
sts PCMSK1,r16
;ldi r16,0b00000001
;sts EIFR,r16
sei
;Hier Init-Code eintragen.
;-----------------------------------------------------------------------
-
mainloop: wdr
;Hier den Quellcode eintragen.
rjmp mainloop
;-----------------------------------------------------------------------
-
PCINT: cli
cbi PORTD,0
sei
reti
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.