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
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" :-)
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.