Hallo, Gegeben sind mehrere Platinen, die alle an demselben Pin an einer Schnittstelle erkennen können sollen, ob eine neue Platine hinzugekommen ist, oder auch entfernt wurde, bzw. genauer gesagt würde es reichen, wenn die Hauptplatine weiß, welche Peripheriemodule angeschlossen werden und welche wieder entfernt werden. Ist das möglich? An der Hauptplatine hätte ich einen Eingang. Dort wird überwacht, ob der Pegel auf Low liegt. Nun wird eine Platine auf das Bus-System aufgesteckt. Die neue Platine zieht den Pin auf high-Pegel, daran erkennt die Hauptplatine, dass eine neue Platine angeschlossen wurde. Nachdem über die Kommunikation geklärt ist, um welche neue Platine es sich handelt, setzt diese ihren Pin wieder auf 0 zurück. Dann herrscht erstmal wieder Ruhe auf der Leitung, aber wie erkenne ich aus dieser Situation nun, wann die Platine wieder getrennt wird, also quasi eine Plug-Off-Erkennung, bei der aber mehrere Teilnehmer sich denselben Pin teilen? Danke!
Plug schrieb: > Dann herrscht erstmal wieder Ruhe auf der Leitung, aber wie erkenne ich > aus dieser Situation nun, wann die Platine wieder getrennt wird, also > quasi eine Plug-Off-Erkennung, bei der aber mehrere Teilnehmer sich > denselben Pin teilen? über Bus regelmäßig ein Heartbeat senden, wenn er ausbleibt ist das Modul weg.
ok danke, das ist natürlich eine Möglichkeit, setzt aber wohl voraus, dass sich jedes Modul um einen anderen Heartbeat kümmert. sollen ja alle an der gleichen Leitung hängen. Weitere Möglichkeiten?
Plug schrieb: > das ist natürlich eine Möglichkeit, setzt aber wohl voraus, dass sich > jedes Modul um einen anderen Heartbeat kümmert. sollen ja alle an der > gleichen Leitung hängen. ich dachte du hast ein Bus? Da hat doch wohl jeder Teilnehmer eine Adresse.
Peter II meint bestimmt eine Kommunikation über denn BUS und nicht über den Pin. Also z.B. ein pollen vom BUS Master aus. Oder doch bei Verwendung deinen einen Pins: Bei der Initialisierung nach dem Aufstecken einer Baugruppe bekommt diese eine fortlaufende Nummer. Der Busmaster sendet ein bestimmtes Signal auf den PIN. Baugruppe 1 antwortet mit einen kürzen Puls auf dem PIN. Jede Baugruppe zählt die Pulse mit und sendet dann in Abhängigkeit ihrer Nummer einen weiten Puls. Fehlt eine Baugruppe fehlt auch der Puls und es gibt ein Timeout. Die Baugruppen nach der Fehlenden Baugruppe müssen dann jedoch neu initialisiert werden damit es wieder eine Reihe fortlaufender Nummern gibt.
Nun, das Problem ist, dass die Module eigentlich möglichst wenig auf dem Bus senden sollen ich aber gerne frühzeitig erkennen können möchte, wenn ein Modul fehlt.
Plug schrieb: > Nun, das Problem ist, dass die Module eigentlich möglichst wenig auf dem > Bus senden sollen ich aber gerne frühzeitig erkennen können möchte, wenn > ein Modul fehlt. warum? sind die Fahrscheine zu teuer? Oder ist der Bus schon zu 100% ausgelastet?
Plug schrieb: > Nun, das Problem ist, dass die Module eigentlich möglichst wenig > auf dem > Bus senden sollen ich aber gerne frühzeitig erkennen können möchte, wenn > ein Modul fehlt. Mit einem einzelnen Pin ohne OneWire o.ä. wird das so nicht gehen. Verpasse also allen Modlen eine ID die via OneWire übertragen wird und Du kannst sicher erkennen ob ein Modul fehlt. Gab es nicht auch eine Möglichkeit über die Stromversorgung zu erkennen welches Modul wo steckt ?
Wenn es nicht allzu viele Module sind und auf der Hauptplatine noch ein ADC-Eingang frei ist, geht's analog: Die Hauptplatine bekommt einen Pull-Up, jedes Modul bekommt einen Widerstand nach Masse. Je mehr Module eingesteckt sind, umso niedriger wird die Spannung auf dieser Leitung. Man weiß dann jederzeit, wie viele Module eingesteckt sind. Auch wenn zwei gleichzeitig gesteckt werden, bekommt man das eindeutig mit. Die Module müssen dazu nichts weiter tun, es reicht ein Widerstand und ein Pin. In der Luxusversion schaltet der Rechner auf dem Modul den Widerstand erst nach seiner Initialisierung ein. Dann merkt man auch sowas wie einen Watchdog-Reset.
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.