mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik mega16 interrupt


Autor: Martin #### (martin-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Warum funktionieren in diesen simplen Code die Interrupts nicht,
was habe ich hier vergesen:
.include "m16def.inc"
.def temp = r16


.org 0x000             
        jmp RESET
.org 0x002
  jmp int_EX1  
.org 0x004
  jmp int_EX2      

RESET:

;------------------------------------------------------ 
; PORTB auf Ausgang  -  PORTC auf Ausgang
;------------------------------------------------------ 
  ldi temp,0xff
  out DDRD,temp
  ldi temp,0x00
  out DDRC,temp 
;------------------------------------------------------ 
;Speicherpointer initialisieren
;------------------------------------------------------ 
  ldi ZL,0x0060
  ldi ZH,0x00
;------------------------------------------------------ 
;Stackpointer initialisieren
;------------------------------------------------------ 
        ldi temp, LOW(RAMEND)
        out SPL, temp
        ldi temp, HIGH(RAMEND)
        out SPH, temp
;------------------------------------------------------ 
;Hauptprogramm
;------------------------------------------------------ 
  sei

mainloop: rjmp mainloop


int_EX1:
  sbi PORTD,6
  reti 
int_EX2:
  cbi PORTD,6
  reti

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

Autor: Martin #### (martin-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
;------------------------------------------------------  
; PORTB auf Ausgang  -  PORTC auf Ausgang 
;------------------------------------------------------

Diese Zeile ist zu ignorieren.

Autor: Martin #### (martin-)
Datum:

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

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was hältst Du vom GICR?

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MCUCR verdient auch ein bisschen Beachtung :-)

Autor: Martin #### (martin-)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: crazy horse (Gast)
Datum:

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

Autor: Martin #### (martin-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die drei obersten Bits in GICR auf 1 zu setzen bringt leider auch nichts
nichts.

Trotzdem Danke für die Antworten.

Autor: A.K. (Gast)
Datum:

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

Autor: Martin #### (martin-)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.