Forum: Mikrocontroller und Digitale Elektronik mega16 interrupt


von Martin #. (martin-)


Lesenswert?

Hallo
Warum funktionieren in diesen simplen Code die Interrupts nicht,
was habe ich hier vergesen:
1
.include "m16def.inc"
2
.def temp = r16
3
4
5
.org 0x000             
6
        jmp RESET
7
.org 0x002
8
  jmp int_EX1  
9
.org 0x004
10
  jmp int_EX2      
11
12
RESET:
13
14
;------------------------------------------------------ 
15
; PORTB auf Ausgang  -  PORTC auf Ausgang
16
;------------------------------------------------------ 
17
  ldi temp,0xff
18
  out DDRD,temp
19
  ldi temp,0x00
20
  out DDRC,temp 
21
;------------------------------------------------------ 
22
;Speicherpointer initialisieren
23
;------------------------------------------------------ 
24
  ldi ZL,0x0060
25
  ldi ZH,0x00
26
;------------------------------------------------------ 
27
;Stackpointer initialisieren
28
;------------------------------------------------------ 
29
        ldi temp, LOW(RAMEND)
30
        out SPL, temp
31
        ldi temp, HIGH(RAMEND)
32
        out SPH, temp
33
;------------------------------------------------------ 
34
;Hauptprogramm
35
;------------------------------------------------------ 
36
  sei
37
38
mainloop: rjmp mainloop
39
40
41
int_EX1:
42
  sbi PORTD,6
43
  reti 
44
int_EX2:
45
  cbi PORTD,6
46
  reti

Wäre dankbar für wenn mir jemand diese Frage beantworten könnte Hilfe.

von Martin #. (martin-)


Lesenswert?

1
;------------------------------------------------------  
2
; PORTB auf Ausgang  -  PORTC auf Ausgang 
3
;------------------------------------------------------

Diese Zeile ist zu ignorieren.

von Martin #. (martin-)


Lesenswert?

In diesem Forum kann man leider nichts nachträglich ändern.
Ich meinte diese Zeile:
;------------------------------------------------------
; PORTB auf Ausgang  -  PORTC auf Ausgang
;------------------------------------------------------

von A.K. (Gast)


Lesenswert?

Was hältst Du vom GICR?

von crazy horse (Gast)


Lesenswert?

MCUCR verdient auch ein bisschen Beachtung :-)

von Martin #. (martin-)


Lesenswert?

Muss ich irgendwelche Bits in GICR ändern?
Wenn sich die Interrupts-Vektors am anfang der Frasch-Speicher befinden
dann muss doch nichts an IVSEL oder IVCE geendert werden ?
Oder doch ?

von crazy horse (Gast)


Lesenswert?

nö, aber das Register hat noch ein paar mehr Bits.
Kleiner Tip: ganz oben :-)

von Martin #. (martin-)


Lesenswert?

Die drei obersten Bits in GICR auf 1 zu setzen bringt leider auch nichts
nichts.

Trotzdem Danke für die Antworten.

von A.K. (Gast)


Lesenswert?

Im Prog wird Port D auf Ausgang gesetzt. Rate mal, wo die
Interrupt-Eingänge sitzen.

von Martin #. (martin-)


Lesenswert?

Das habe ich auch schon gemerkt.
Ich denke ich habe dieses Mal zu schnell hier gepostet, aber zu anfang
habe ich überhaupt nicht kapiert warum es nicht lief.
Danke für die Hilfe.

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
Noch kein Account? Hier anmelden.