Interrupt für Eingänge
7.3 Interrupt für Eingänge
Der Atmega 8 besitzt 2 Interruptfähige Eingänge. Im normalfall benötigt man für die Eingänge keinen Interrupt, da die Zykluszeit im ms-Bereich liegt. Trotzdem gibt es Signale, die man nicht pollen kann. Pollen bedeutet, das einmal pro Zyklus die Eingänge gelesen werden. Angenommen, es gibt sehr kurze Signale, die man erfassen möchte, z.B. eine Lichtschranke, die ein durchfliegendes Objekt erkennen soll. Geschwindigkeit 120 KM/h und eine Länge von 3 cm
Da muß man schon ein wenig rechnen, um die Signalzeit zu erhalten.
120000m / 3600 sind 33,3 m/s. dies bedeutet, ein 3 cm langer Gegenstand ist in der Lichtschranke nur 0,9 ms.
Dieses Signal wird vermutlich nicht zuverlässig erfasst, es sei denn, die Zykluszeit ist immer unter 0,9 ms. Davon können wir aber nicht ausgehen, da Daten versendet, Tabellenwerte bearbeitet werden und div. Interrupts ( Timer/ USART) ebenfalls die Zykluszeit beeinflusst.
Sicher erfassen kann ich diesen Eingang also nur, wenn er einen Interrupt auslöst. Gibt es mehrere Signale, deren Signalzeit ebenfalls so gering ist, sind die 2 Interrupt -Eingänge schnell belegt. Daher lege ich über eine externe Verknüpfung die Eingänge auf den interrupt und zusätzlich auf einen normalen Eingang, den ich in der ISR erfasse.
unten die zugehörige Skizze.
7.3 Interrupt für Eingänge
Der Atmega 8 besitzt 2 Interruptfähige Eingänge. Im normalfall benötigt man für die Eingänge keinen Interrupt, da die Zykluszeit im ms-Bereich liegt. Trotzdem gibt es Signale, die man nicht pollen kann. Pollen bedeutet, das einmal pro Zyklus die Eingänge gelesen werden. Angenommen, es gibt sehr kurze Signale, die man erfassen möchte, z.B. eine Lichtschranke, die ein durchfliegendes Objekt erkennen soll. Geschwindigkeit 120 KM/h und eine Länge von 3 cm
Da muß man schon ein wenig rechnen, um die Signalzeit zu erhalten.
120000m / 3600 sind 33,3 m/s. dies bedeutet, ein 3 cm langer Gegenstand ist in der Lichtschranke nur 0,9 ms.
Dieses Signal wird vermutlich nicht zuverlässig erfasst, es sei denn, die Zykluszeit ist immer unter 0,9 ms. Davon können wir aber nicht ausgehen, da Daten versendet, Tabellenwerte bearbeitet werden und div. Interrupts ( Timer/ USART) ebenfalls die Zykluszeit beeinflusst.
Sicher erfassen kann ich diesen Eingang also nur, wenn er einen Interrupt auslöst. Gibt es mehrere Signale, deren Signalzeit ebenfalls so gering ist, sind die 2 Interrupt -Eingänge schnell belegt. Daher lege ich über eine externe Verknüpfung die Eingänge auf den interrupt und zusätzlich auf einen normalen Eingang, den ich in der ISR erfasse.
unten die zugehörige Skizze.