Initialisisung von Interrupt

Gast #10616
Lesenswert?

hab da ein problem mit der initialisierung meines externen interrupts.

.org 0x000
  rjmp  Initial
  rjmp  Inter0

.org 0x00D
Initial:
  ldi tmp, High(RAMEND)  ; Stack initialisiert
  out $3E, tmp
  ldi tmp, Low(RAMEND)
  out $3D, tmp
        in tmp, $35
  ori tmp, 0b00000011  ;Int0 auf steigende Flanke setzen MCUCR
  out $35, tmp
  in tmp, $3B
  ori tmp, 0b01000000     ;Int0 freigeschaltet GIMSK
  out $3B, tmp
  sei

Main:
  nop
  rjmp Main

Inter0:
  nop
  reti

sobald der debugger die stelle abarbeitet, an der das globale 
interruptflag gestzt wird, wird noch ein weiterer befehl ausgeführt, bis 
er daraufhin in die Inter0-routine springt. wenn diese abgearbeitet ist 
springt er wieder zurück und arbeitet das programm ganz normal ab. habe 
auch schon erst das globale interruptflag gesetzt und dann das TIMSK 
maskiert oder den GIFR vorher gelöscht (alles ohne erfolg).
ich benutze das AVR-Studio 4 zum ausprobieren.
hat jemand einen tip? bin am verzweifeln!
mfg patrick
Gast #10617
Lesenswert?

Hi
Ich benutze  auch AVR-Studio 4 und wenn ich das so lese beschleicht mich 
das dumme Gefühl "mit INT0 ist was nicht ok" !  Bei  mir sollte INT0 auf 
beide Flanken reagieren, was aber per Pinumschaltung nicht möglich war. 
Ich musste INTF0 setzen um einen auszulösen.
Übrigens werden die Flags durch beschreiben mit 1 gelöscht, kannst du ja 
mal vor "sei" machen.
Gruss Uwe

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren