Forum: Mikrocontroller und Digitale Elektronik Initialisisung von Interrupt


von Patrick (Gast)


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

von Uwe (Gast)


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

von Patrick (Gast)


Lesenswert?

ein freund von mir hatte auch schon unerklärliche interrupt probleme mit 
dem AVR-Studio 4. vieleicht ist es das programm. kann denn jemand iein 
besseres empfehlen?

von Jonas Diemer (Gast)


Lesenswert?

avr studio 3

von Patrick (Gast)


Lesenswert?

es liegt am avr studio 4! studio 3 setzt beim beschreiben des MUCURs 
einen interrupt-flag.

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.