Forum: Mikrocontroller und Digitale Elektronik Interrupt-Flag reagiert nicht


von Thomas (Gast)


Lesenswert?

Hallo,

ich Versuch grad ein Hardwareinterrupt auszulösen aber das GIFR-Register 
reagiert nicht auf den Flankenwechsel am Taster.Ich nutz den ATmega8 und 
den E-Lab Compiler und als Sprache Pascal.Das Programm soll erstmal nur 
im Interrupt eine Led zum Leuchten bringen damit ich das es auch 
funtzt.Ich hab schon in anderen Foren nach gefragt aber nur antworten 
bekommen hoffe hier hilft mir endlich ma jemand.

Hier ist mein bisheriges Programm:

procedure InitPorts;
begin
  DDRD := %0010000;  //PortD.5 als Ausgang
  GICR := %10000000; //INT1 aktiviert
  MCUCR:= %00001100; //steigende Flanke an INT1 Löst ein Interrupt aus

end InitPorts;

Interrupt Int1;
begin
  PortD.5:=1;
end;
{--------------------------------------------------------------}
{ Main Program }
{$IDATA}

begin

  InitPorts;
  EnableInts;        //Globale Interrupt eingeschaltet


  loop

  endloop;
end Interrupts.

MFG Thomas

von H.Joachim S. (crazyhorse)


Lesenswert?

das ist zwar kaum lesbar, aber da stimmt schon mal was nicht
DDRD := %0010000;  //PortD.5 als Ausgang

du setzt D4 als Ausgang

und da sieht man auch gleich schön die Fehleranfälligkeit der "magic 
numbers" :-)

von Thomas (Gast)


Lesenswert?

Sonst noch irgendwas?Das hab ich schon geändert.

von H.Joachim S. (crazyhorse)


Lesenswert?

der Rest ist Kaffeesatzleserei.
-wie den Int-Eingang verschaltet
-wie die LED (falsch herum?, Gegen + oder Gnd?)

Ansonsten wird sich hier mit Pascal kaum einer auskennen.
Das zumindest kommt mir komisch vor:

end Interrupts.

sollte das nicht eher an das Ende der ISR?

von L. T. (tilo)


Lesenswert?

Das ist für den Programmabschluss das Programm heißt nämlich auch 
Interrupts.

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.