Forum: Mikrocontroller und Digitale Elektronik Interrupt-Probleme


von Pfi (Gast)


Lesenswert?

Hallo!

Hich habe vor in paar Tagen schon mal geschrieben, weil ich Probleme mit 
den Interrupts beim simulieren in AVR Studio 4 hatte. Mit eurer Hilfe 
konnte ich das ganze zwar ein bisschen verbessern, aber so richtig toll 
scheint es noch nicht zu sein. Nun meine Frage, kann mir jemand ein 
Programm in Assembler geben, das die externen Interrupts verwendet? Dann 
könnte ich dort mal ein bisschen abgucken...

von Florian Pfanner (Gast)


Angehängte Dateien:

Lesenswert?

Hier hast du ein Code-Fragment zum ausprobieren.

Gruß, Florian

von Pfi (Gast)


Lesenswert?

Ja mit diesem Prog funktionierts auch bei mir, aber da ich einen ATmega8 
verwende ist es ein bisschen anders, sehe ich das richtig, dass wenn ein 
externer Interrupt vorhanden ist, dann im GIFR eine 1 in das dafür 
vorgesehene Bit geschrieben wird? Ich nehme an, dass das beim ATmega8 
gleich ist, nur wird bei dieser Simulation auch ein Interrupt ausgelöst, 
wenn Bei GIFR alles auf Null ist!!??

von Pfi (Gast)


Lesenswert?

Könnte es auch am Simulator liegen, dass es nicht so klappt wie es soll? 
Leider kenne ich grad keinen anderen, als der in AVRStudio 4.0, bei der 
Version 3.65 kann man den ATmega8 nicht simulieren!
Weiss jemand einen anderen guten kostenlosen Simulator?? Oder hat mal 
jemand Lust mein Programmfragment bei sich zu simulieren und dann 
schauen ob das gleiche rauskommt oder sogar einen Fehler entdeckt??

von mikki merten (Gast)


Lesenswert?

Die aktuelle Version AVR Studio 3.56 ünterstützt sehr wohl den MEGA8 in 
der Simulation.

von Pfi (Gast)


Lesenswert?

Sorry, hab mich verguckt, wie kann ich da einen externen Interrupt 
simulieren?

von thkaiser (Gast)


Lesenswert?

Es kann in der Realität übrigens auch vorkommen, daß beim Initialisieren 
des externen Interrupts dieser sofort ausgelöst wird - obwohl kein 
Ereignis stattfand (das brachte mich bei der Fehlersuche schon mal zur 
Verzweiflung).
Gerade bei Flankengetriggerten Interrupts kommt das vor. Abhilfe: Den 
Interrupt initialisieren + freigeben, dann vor der Freigabe der 
Interrupts durch SEI das entsprechende Flag "von Hand" löschen (einfach 
GIFR lesen und zurückschreiben - ist ein Interrupt-Flag ="1" wird es 
durch beschreiben mit eben dieser "1" gelöscht).
Könnte sein, daß der Simulator entsprechend reagiert.

von mikki merten (Gast)


Lesenswert?

Nur im I/O Window mit den entsprechenden Bits "spielen"

von Pfi (Gast)


Angehängte Dateien:

Lesenswert?

@thkaiser:
An dem kann es glaube ich nicht liegen, denn 1. ist beim simulieren im 
GIFR immer alles auf 0 (also nie ein Interrupt vorhanden) und zweitens 
tritt dieser ungewollte Interrupt nicht nur einmal beim Initialisieren 
auf, sondern die ganze Zeit!

@alle die das lesen:
Falls jemand Lust und Zeit hat das ganze bei sich zu simulieren und 
seinen Kommentar dazu zugeben wäre ich froh, wie gesagt, es ist erst 
ganz der Anfang eines Programms, aber ich will nicht weiterfahren bevor 
dieses Problem nicht gelöst ist, denn sonst bin ich fertig damit und es 
funktioniert immer noch nicht wegen diesem Problem!

Danke und Gruss

von mikki merten (Gast)


Lesenswert?

Setz mal im Simulator PD2 & PD3 auf H-Pegel im IO-Window

von Pfi (Gast)


Lesenswert?

Wo sind die? Kann sie nicht finden!

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.