Hallo Welt, ich würde gerne eine Powersave-Funktion in einem Gerät nachrüsten und ein Relais schalten, wenn Daten über die serielle Schnittstelle erkannt werden. Da ich in die bestehende Firmware nicht eingreifen kann, muss ich das irgendwie andocken. Meine Idee war nun, den RX-Pin des Controllers "anzuzapfen" und zu einem Pin am atmega328p, mit dem ich dann auch das Relais schalte, zu führen. Die Erkennung würde ich dann einfach per PinChange Interrupt machen. Nun frage ich mich aber gerade, wie ich den Eingangspin konfigurieren sollte. UART ist HIGH wenn im Idle Modus. Kann ich also bedenkenlos den Pin am atmega als Eingang mit aktiviertem Pull-Up konfigurieren? Oder lässt man ihn im Tri-State? Hat sowas schonmal jemand gemacht? LG, Max
Maximilian schrieb: > [...] > > UART ist HIGH wenn im Idle Modus. > Kann ich also bedenkenlos den Pin am atmega als Eingang mit aktiviertem > Pull-Up konfigurieren? Oder lässt man ihn im Tri-State? > > [...] Nein auf die erste Frage. Nein, auf die zweite. Der Sender (welcher ist es denn?) treibt in der Regel ja schon den RX-Pin. Es würde zwar unter Umständen nicht schaden, den zusätzlichen RX-Pin mit Pull-Up zu konfigurieren, aber es ist erstens unnötig (da eben schon getrieben) und zweitens von den "Umständen" abhängig ob das wirklich kein Problem verursacht. Zu den Umständen zählt vor allem der Unterschied zwischen den Versorgungsspannungen; die Folge wäre im zweit-günstigsten Fall ein unnötiger Stromfluss. Ausserdem, selbst wenn die Versorgungsspannungen nicht unterschiedlich wären, fliesst dennoch unnötig Strom durch den Pull-Up; er bringt nichts für die Funktion. "Tri-State" ist ein Eigenschaft eines Ausganges. Ist hier also gar nicht anwendbar. Ein weiteres potentielles Problem, dass Du nicht angesprochen hast, sind evtl. Ströme über die Begrenzerdioden des Gerätes resp. des uCs, dessen Versorgungsspannung Du scheinbar abschalten möchtest. An sich, d.h. nach Daumenregel, sollte man grundsätzlich vermeiden, dass an einem abgeschalteten IC irgendwelche Spannungen liegen. Es kann z.B. sein, dass der Chip einfach weiterläuft und sich aus der Datenleitung versorgt (oder das führt zu Fehlfunktionen, weil die Datenleitungen den Chip nur so halb versorgen kann). Im besten Fall schaltest Du die Datenleitung selbst ab. Noch ein potentielles Problem ist, dass die abzuschaltende Schaltung vermutlich darauf ausgelegt ist, eingeschaltet zu sein und jede evtl. auftretende Datensendung vollständig zu erhalten. Falls Du sie abschaltest, braucht sie in der Regel einige Zeit um bereit für den Datenempfang zu sein. Folge wäre evtl. dass sie nur einen Teil der Daten empfängt und sich verschluckt (sprich: offenbar nicht sinnvoll reagiert) oder die Daten garnicht empfängt (und auch nicht sinnvoll reagiert). Müsstest Du mal ausprobieren.
Theor schrieb: > Ein weiteres potentielles Problem, dass Du nicht angesprochen hast, sind > evtl. Ströme über die Begrenzerdioden des Gerätes resp. des uCs, dessen > Versorgungsspannung Du scheinbar abschalten möchtest. An sich, d.h. nach > Daumenregel, sollte man grundsätzlich vermeiden, dass an einem > abgeschalteten IC irgendwelche Spannungen liegen. Es kann z.B. sein, > dass der Chip einfach weiterläuft und sich aus der Datenleitung versorgt > (oder das führt zu Fehlfunktionen, weil die Datenleitungen den Chip nur > so halb versorgen kann). Im besten Fall schaltest Du die Datenleitung > selbst ab. > > Noch ein potentielles Problem ist, dass die abzuschaltende Schaltung > vermutlich darauf ausgelegt ist, eingeschaltet zu sein und jede evtl. > auftretende Datensendung vollständig zu erhalten. Falls Du sie > abschaltest, braucht sie in der Regel einige Zeit um bereit für den > Datenempfang zu sein. Folge wäre evtl. dass sie nur einen Teil der Daten > empfängt und sich verschluckt (sprich: offenbar nicht sinnvoll reagiert) > oder die Daten garnicht empfängt (und auch nicht sinnvoll reagiert). > Müsstest Du mal ausprobieren. Hi Theor, vielen Dank für Deine Hilfe. Zu den beiden Punkten, die Du angemerkt hast: Sowohl die "Hauptplatine", die ich anzapfen möchte, als auch mein kleines atmega328-Board wären immer an und teilen sich auch die gleiche Versorgungsspannung. Strom soll an anderer Stelle gespart werden. Per Relais abgeschaltet werden soll dann eine 12V Schiene, an der unter anderem zwei Displays und ein Lüfter hängen. Werden Daten am UART der Hauptplatine erkannt, sollen die eingeschaltet werden. Und wenn dann 5 Minuten lang nix mehr gekommen ist, wieder aus. Im Moment mache ich das mit einem Kippschalter, würde mir das in Zukunft aber gern ersparen. Bzgl. der Detektion: Wenn ich Dich richtig verstehe, ist der (interne) Pullup des atmega unnötig, weil der Empfängerbaustein (MAX232) den RX der Hauptplatine und den damit verbundenen RX meines atmegas treibt. Also den Detektor-Pin lediglich als Eingang konfigurieren und einen PCINT draufschalten um den Flankenwechsel zu erkennen? Theor schrieb: > "Tri-State" ist ein Eigenschaft eines Ausganges. Ist hier also gar nicht > anwendbar. Achso, ich dachte, dass auch ein Eingangspin ohne konfigurierten Pull-Up/Down, im Tristate (hochohmig) wäre. Da werde ich wohl mal ein bisschen Auffrischung machen müssen ;) Vielen Dank, Max
Maximilian schrieb: > Achso, ich dachte, dass auch ein Eingangspin ohne konfigurierten > Pull-Up/Down, im Tristate (hochohmig) wäre. Da werde ich wohl mal ein > bisschen Auffrischung machen müssen ;) Der Eingang eines µC ist immer hochohmig (oftmals ein Schmitt-Trigger) man kann nur zusätzlich noch Pull-Up oder Pull-Down Widerstände dazu schalten. Tristate ist eine Eigenschaft des Ausgangstreibers die besagt, dass er die Push-Pull Stufe abschalten kann und somit hochohmig (High-Z) wird. Im Anhang ist ein Bild wie so ein IO bei einem STM aufgebaut ist. Die sind aber nicht allzu verschieden bei anderen µC
Maximilian schrieb: > Theor schrieb: >> [...] > > Hi Theor, > > vielen Dank für Deine Hilfe. > > Zu den beiden Punkten, die Du angemerkt hast: > Sowohl die "Hauptplatine", die ich anzapfen möchte, als auch mein > kleines atmega328-Board wären immer an und teilen sich auch die gleiche > Versorgungsspannung. Aha. > Strom soll an anderer Stelle gespart werden. > Per Relais abgeschaltet werden soll dann eine 12V Schiene, an der unter > anderem zwei Displays und ein Lüfter hängen. Werden Daten am UART der > Hauptplatine erkannt, sollen die eingeschaltet werden. Und wenn dann 5 > Minuten lang nix mehr gekommen ist, wieder aus. > Im Moment mache ich das mit einem Kippschalter, würde mir das in Zukunft > aber gern ersparen. Hm. OK. Was darauf indeutet, aber auch nur darauf, dass es bei manueller Betätigung geht. Musst Du ausprobieren, ob das bei einem unmittelbar auf eine Änderung auf der RS-232-Verbindung folgendes Einschalten auch noch geht. Ich will jetzt hier nicht die Kassandra spielen. Merkst Du ja dann. > Bzgl. der Detektion: > Wenn ich Dich richtig verstehe, ist der (interne) Pullup des atmega > unnötig, weil der Empfängerbaustein (MAX232) den RX der Hauptplatine und > den damit verbundenen RX meines atmegas treibt. > > Also den Detektor-Pin lediglich als Eingang konfigurieren und einen > PCINT draufschalten um den Flankenwechsel zu erkennen? > Richtig. > > Theor schrieb: >> "Tri-State" ist ein Eigenschaft eines Ausganges. Ist hier also gar nicht >> anwendbar. > > Achso, ich dachte, dass auch ein Eingangspin ohne konfigurierten > Pull-Up/Down, im Tristate (hochohmig) wäre. Da werde ich wohl mal ein > bisschen Auffrischung machen müssen ;) Ja. Ein "Tri-State-Ausgang sein" ist eine strukturelle Eigenschaft; es ist kein konkreter Schaltzustand dieses Ausgangs. Man kann nichts Sinnvolles damit ausdrücken, wenn man sagt: "Etwas sei im Tri-State". Welcher von den drei Zuständen sollte das sein? Welcher läge am nächsten? Es gibt darauf keine sinnvolle Antwort. Es ist richtig, und hier auch schon bemerkt worden, dass Eingänge grundsätzlich relativ hochohmig sind; einfach um Strom zu sparen. Den Nutzen von Pull-Up- bzw. Pull-Down-Widerständen muss man immer in Verbindung mit einem Ausgang sehen, Desen Strukur ist "Open-Kollektor" bzw. mit FETs eben "Open-Drain" oder "Open-Source". Das bedeutet, sie können in einem ihrer Zustände nichts treiben; nur zwischen einem definierten Potential oder eben dem hochohmigen Zustand, der ein (im wesenlichen) unbestimmtes Potential versursacht, umschalten. Ergo, ist ein Pull-Irgendwas-Widerstand auch nur mit so einem Ausgang sinnvoll. Ein anderer Fall sind Taster bzw. Schalter mit nur einem Schliesser, der/die also auch nur in einem Zustand ein definiertes Potential ergibt (und das aber dann auch, je nach Schaltung, treiben kann). Nun werden Open-Kollektor-Ausgänge aber ohnehin nur für solche Fälle angeboten, bei denen 1. die Last eine bestimmte obere Grenze (d.h. eine Grenze des niedrigen Lastwiderstandes hat), also etwa LEDs oder 2. bei denen ein Wired-Logikverknüpfung angewendet wird oder 3. bei denen Unterschiedliche Logikpegel aneinander angepasst werden sollen. Keiner dieser Fälle trifft auf eine RS-232-Leitung zu. (Man könnte das technisch auch da anwenden, aber das ist eben einfach unüblich). Anders herum, wollen Eingänge immer ein definiertes Potential. Oder sie haben eben spezielle Eingangsschaltungen um das bei einer Auswahl von bestimmten externen Schaltungen zu erreichen. Im uC-Bereich, gibt es Fälle, wie den schon erwähnten Taster und auch manche Sensoren, die nicht immer in jedem Zustand ein definiertes Potential erzeugen. Sozusagen als Gimmick für den Entwickler, wird denen dann ein interner Pull-Irgendwas-Widerstand spendiert. Mehr hat das nicht zu bedeuten.
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.