Forum: Mikrocontroller und Digitale Elektronik Pegeländerung vieler DI's erkennen


von Xaver (Gast)


Lesenswert?

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!

von Michael (Gast)


Lesenswert?

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.

von Michael (Gast)


Lesenswert?

Alle über Dioden auf einen Interrupt-Eingang zusammenlegen und gut is

von chris (Gast)


Lesenswert?

Dann ersetzte sie durch 5 Stück MCP23S17

von Falk B. (falk)


Lesenswert?

@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.

von Xaver (Gast)


Lesenswert?

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.

von Xaver (Gast)


Lesenswert?

@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.. ;-)

von M. N. (Gast)


Lesenswert?

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.

von Xaver (Gast)


Lesenswert?

@chris:

Dein Post wäre beinahe Untergegangen - ist aber anscheinend DIE Lösung! 
:-D

Danke! :-)

von Xaver (Gast)


Lesenswert?

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. :-)

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

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!

von Wolfgang (Gast)


Lesenswert?

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.

von c-hater (Gast)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.