Hi Leute, ich sitz hier schon seit ein paar Stunden herum und wälze Datenblätter um die praktische Anwendung von Interrupts zu kapieren. Meine Aufgabenstellung: Ich hab hier einen Temperaturfühler,der auf einem interruptfähigen I/O Pin des 80C552 angeschlossen wird. Wenn der Temperaturfühler eine negative Flanke liefert,dann soll ein Interrupt ausgelöst werden. Beim Interrupt springe ich dann auf die Interrupt Vektoradresse und dort soll dann eine Messung durchgeführt werden(also wie lange die Portleitung auf Null ist). Aus dieser Zeit kann ich dann auf den jeweiligen Temperaturwert zurückrechnen. Desweiteren soll aber auch über einen Timer eine Uhr programmiert werden,die immer im Hintergrund läuft. Mein Problem: Wenn ich zum Beispiel für die Realisierung der Uhr den Timer 1 im 16 Bit Modus betreibe,dann zählt ja der von 0 - 65536 und dann wird ein Interrupt ausgeführt,oder? Desweiteren hab ich auch noch einen Temperaturfühler,mit dem ich die aktuelle Umgebungstemperatur messen möchte. Je nach Temperatur dauert die Messung zwischen 50ms und 380ms. Das heißt jedes Mal wenn ich mit der Messung der Temperatur anfange,dann wird durch den höherwertigen Interrupt der Uhr(die Uhr sollte ja auch nicht falsch gehen) die aktuelle Messung unterbrochen und ich bekäme nie einen Messwert... Sehe ich das richtig,oder bin ich da auf einem Holzweg? Mir raucht mittlerweile schon der Kopf. Danke!
>Sehe ich das richtig,oder bin ich da auf einem Holzweg?
Nach der Unterbrechung durch die Uhr wird die Messung weitergeführt,
wo ist das Problem?
Bernhard wrote: > Das heißt jedes Mal wenn ich mit der Messung der Temperatur anfange,dann > wird durch den höherwertigen Interrupt der Uhr(die Uhr sollte ja auch > nicht falsch gehen) die aktuelle Messung unterbrochen und ich bekäme nie > einen Messwert... Unterbrechen und Abbrechen sind 2 völlig verschiedene Dinge. Ein Interrupt unterbricht, macht sein Ding und dann gehts weiter. Ist der Meßinterrupt wichtiger, gibst Du ihm eben die höhere Priorität, dann kann er den Uhreninterrupt unterbrechen. Und dem Uhreninterrupt ists wurscht, wenn er mal 100µs später behandelt wird, der Timer läuft ja weiter. Peter
Hi, eine Frage noch: Wenn der Interrupt abgehandelt ist,wird dann automatisch wieder dort hin gesprungen wo die Unterbrechung durch den Interrupt war? Bernhard
Natürlich, die Rücksprungadresse wurde auf dem Stack abgelegt.
Hi, also wenn da so ist,dann sollte die Aufgabenstellung eigentlich mit ein bisschen Denkarbeit mehr oder weniger zu lösen sein. Ich danke euch! Endlich kann ich mit dem Projekt anfangen :) Bernhard
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.