Hi! Ich habe hier 70 DI's mit sehr niedriger Datenrate ("<5Hz"), die ich via Schieberegister erfasse. Um nun nicht "in Echtzeit" ständig pollen zu müssen, würde ich gerne jede Änderung dedektieren, hierüber einen Sammel-IRQ auslösen und den aktuellen Status einlesen. Hat für diese Anwendung jemand einen Tipp für mich? Möglichst ohne aktive Komponenten. (bzw. zu programmierende Komponenten sind zu vermeiden) :-) Danke!
Xaver schrieb: > Ich habe hier 70 DI's mit sehr niedriger Datenrate ("<5Hz"), die ich via > Schieberegister erfasse. Um nun nicht "in Echtzeit" ständig pollen zu > müssen, würde ich gerne jede Änderung dedektieren, hierüber einen > Sammel-IRQ auslösen und den aktuellen Status einlesen. Was auch immer "DI" sind - schalte ein RS-FF dazwischen.
Alle über Dioden auf einen Interrupt-Eingang zusammenlegen und gut is
@Xaver (Gast) >Ich habe hier 70 DI's mit sehr niedriger Datenrate ("<5Hz"), die ich via >Schieberegister erfasse. Um nun nicht "in Echtzeit" ständig pollen zu >müssen, würde ich gerne jede Änderung dedektieren, hierüber einen >Sammel-IRQ auslösen und den aktuellen Status einlesen. Lohnt sich das? Lies sie mit 10 Hz per Timerinterrupt aus und erkenne das in Software. Kostes praktisch keine CPU-Leitung und keinerlei Hardware.
DI = Digital input Koppeln mit Dioden: Wenn dann ein Pegel nach low wechselt und noch min. ein weiterer high ist/bleibt, bekomme ich die Änderung nicht mit - also keine Lösung. Trotzdem Danke.
@Falk: Ja, so mache ich das jetzt. In der Praxis kann es jedoch sein, dass sich im schlimmsten fall die Eingänge mit ~5Hz ändern oder nur ein einziges Signal pro Tag. Das ganze sollte also nur eine Optimierung sein und zur Entlasung des Controllers dienen. Es hätte ja sein können, dass jemand eine geniale Idee hat.. ;-)
Xaver schrieb: > Hat für diese Anwendung jemand einen Tipp für mich? Eine entsprechende Anzahl xx4531 zusammenschalten. Das ist eine Ansammlung von XOR-Gattern, die eigentlich die Parität feststellen sollen. Kaskadiert ändert sich der Ausgang, sobald sich nur ein Eingang ändert.
@chris: Dein Post wäre beinahe Untergegangen - ist aber anscheinend DIE Lösung! :-D Danke! :-)
M. N. schrieb: > ..sobald sich nur ein Eingang ändert. Das ist das Problem. Ändern sich zwei Eingänge gleichzeitig, bekomme ich es wieder nicht mit - und diesen Fall kann ich nicht ausschließen. :-)
Ein Ripple-XOR oder I/O-Bausteine, die Interrupt bei Pegeländerung senden. Aber eigentlich nur sinnvoll bei Schlafmodus, denn nachschauen was sich geändert hat und zwischenzeitlich wohin, mußt du trotzdem!
Xaver schrieb: > Das ganze sollte also nur eine Optimierung sein und zur Entlasung des > Controllers dienen. Es gibt kein Geld zurück, wenn der Controller in der Endloswarteschleife hängt, weil er nichts zu tun hat.
Wolfgang schrieb: > Es gibt kein Geld zurück, wenn der Controller in der Endloswarteschleife > hängt, weil er nichts zu tun hat. Das ist nur bedingt richtig. Wenn er in einer leeren Endlosschleife steckt, kann man ihn getrost schlafen schicken und damit Energie sparen. Und wenn diese Energie aus Primärzellen kommt, dann zahlt sich das tatsächlich deutlich bemerkbar finanziell aus.
c-hater schrieb: > Wenn er in einer leeren Endlosschleife > steckt, kann man ihn getrost schlafen schicken und damit Energie sparen. Es hat doch keiner gesagt, dass er die 99,5 ms zwischen den DI-Scans nicht schlafen darf.
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.