Re: PO0 Ports abfragen Kategorie: CC2-Unit & Appl.Board / CC2-Station (von André H. - 30.09.2007 18:19) | ||
Als Antwort auf Re: PO0 Ports abfragen von der andy - 20.09.2007 17:08 | ||
| ||
Hallo Andy, > Ich schalte über PO0-3 4 Relais. Letztendlich wollte ich nur ein mögliches Register wissen, aus > dem ich auch nach x Sekunden noch auslesen kann, welcher Ausgang/Relais jetzt geschaltet > ist und welches nicht. > > Aber scheinbar ist die Lösung, zu Beginn des Programms einen definitieren Zustand her zu stellen, > um dann selber zu "protokollieren", was ich geschaltet habe und was nicht. > > Oder wei�t Du ein Register wo ich das ablesen kann? Wenn es nur darum geht, den aktuellen Soll-Zustand zurückzulesen, kannst Du einfach die get-Funktionen in stports.c2 verwenden. Allerdings kann es sein, da� z.B. durch externe Störeinflüsse ein Ausgang einen falschen Zustand aufweist, da die Zusatzports über Schieberegister gebildet werden. Ein Zurückglesen ist bei Schieberegistern (mit par. Ausgang) leider nicht möglich. Um sicherzustellen, da� die Ausgänge immer den richtigen Zustand haben, hilft hier nur ein regelmä�iges Aktualisieren der Schieberegister. Dies geschieht bei über jede "schreibend" auf die Schieberegister zugreifende Funktion in stports.c2 . Direkte Register für die Portzustände gibt es nicht, da diese keine Funktion des µControllers selbst sind. Die Portzustände werden in dem Bytearray stports.states[] gespeichert. Alle Funktionen in stports.c2 greifen drauf zu. Jedoch, mit Ausnahme von getall(), nur auf ASM-Ebene. Das steht aber auch in der Hilfe-HTML zum Modul. Daher kaufe ich Dir nicht ab, da� Du nichts dazu gefunden hattest, wie Du im Anfangsposting geschrieben hattest. ;-) Denn, hättest Du gesucht, wärst Du über die get-Funktionen in stports.c2 gestolpert. ;-) Was nun das sichere Schalten mit echtem Zurücklesen der Portzustände angeht, so ist dieses natürlich leider, wie erwähnt, bei Schieberegistern nicht möglich. Dies wäre hier z.B. nur über I²C-Bus-ICs möglich. Dies hilft zwar auch nichts, wie bereits erwähnt wurde, wenn irgendetwas in der Kette bis zum Verbraucher (Transistorstufe, Relais, Sicherung ...) nicht so arbeitet, wie es soll, jedoch ist das dann eine generelle Frage bei Sicherheitsrelevanten Anwendungen, die nur durch ein direktes �berwachen des Verbrauchers gelöst werden kann. Aber für die, die lieber eine andere Lösung, als die Schieberegister für die Zusatzports der Station haben möchten (LCD-Bel., Relais, LEDs, Ports PO.0-.4 ), oder die jetzigen Ports PO.0-.4 auch gerne als I/Os, also wahlweise auch als Eingang nutzen möchten, hätte ich vielleicht folgende Prototypplatine anzubieten: Es ist eine alternative Platine für die Station. Statt den Schieberegistern befindet sich ein MAX7311 auf der Platine. Die Platine bietet noch eine Anzahl weiterer �nderungen, die ich jetzt nicht alle Aufzählen möchte. Ich habe noch knapp 45 Stck. von den Platinen. Diese Platine hat aber leider zwei kleine Flüchtigkeitsfehler: 1. Ich habe einen Widerstand für die Tastatur vergessen. 2. Es sind zwei Pull-Downs an den Ausgängen des MAX7311 für die Relais nötig, da die verwendeten Relais eifach zu wenig Strom brauchen. ;-) (Die Relais ziehen trotz 110k (100k-Pull-Up+10k Basiswiderst.) an.) Beides mu� beim Bestücken gepatcht werden. Der zweite Patch ist einfach und im Bild auch zu sehen. (Die beiden 10k-Widerst. direkt neben dem blauen Kondensator beim MAX7311.) Der Erste Patch mu� auf der Platinenunterseite durchgeführt werden, ist aber auch kein grö�eres Problem. Wenn also der eine oder andere Interesse an dieser Platine für seine Station hat, kann er sich melden. Der Rest der Station (Gehäuse, LCD, LEDs) bleibt hier unverändert. MfG André H. Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | ||
Antwort schreiben Antworten: |