Hallo,
in den Datenblättern der ATMEL AVR Reihe findet sich eine
Beispielschaltung zur Kopplung mehrerer "devices" (was ich für diese
Betrachtung als mindestens zwei Microcontroller verstehen möchte)
mittels TWI (bzw. der bei Drucklegung gerade aktuellen Abkürzung für
diesen 2-Draht-Bus). Dort werden die Module direkt miteinander verbunden
und die Verbindungsleitungen mit Pullup-Widerständen versehen. Soweit,
so gut. Funktioniert auch.
Aber: Selbst wenn man davon ausgeht, durch umfangreiche Tests der
Software sichergestellt zu haben, dass niemals zwei Ausgänge zur
gleichen Zeit auf einander treffen, gibt es dafür 1. im Regelfall keinen
Beweis und 2. immer noch Murphy. Daraus ergibt sich die Frage, ob die
AVR solche Belastungen (also ein Ausgang liefert HIGH, sein
Gegenüber-Ausgang gleichzeitig LOW) im Ernstfall auch ohne
Serienwiderstände klaglos wegstecken können? Oder ist das AVR-Datenblatt
hier einfach nur etwas lässig geschrieben? Die elektrischen
Spezifikationen sind da eigentlich eindeutig (max. 40 mA pro Pin, bevor
es qualmt) und widersprechen IMHO der Beispielschaltung.
Wie handhabt Ihr das? TWI mit Schutzwiderständen in den Leitungen oder
ohne? Ab welcher Datenrate können ca. 1kOhm Serienwiderstände überhaupt
zu Problemen führen?
Grüsse
Olaf
@ Olaf (Gast)
>mittels TWI (bzw. der bei Drucklegung gerade aktuellen Abkürzung für
diesen 2-Draht-Bus). Dort werden die Module direkt miteinander verbunden
>AVR solche Belastungen (also ein Ausgang liefert HIGH, sein>Gegenüber-Ausgang gleichzeitig LOW) im Ernstfall auch ohne
Kann nicht passieren, da TWI mit Open Collector Ausgängen arbeitet
Ausgangsstufen Logik-ICs.
>Wie handhabt Ihr das? TWI mit Schutzwiderständen in den Leitungen oder>ohne?
Ohne.
> Ab welcher Datenrate können ca. 1kOhm Serienwiderstände überhaupt>zu Problemen führen?
tau = R*C
MFg
Falk
Wie Falk Brunner schon schrieb sind die TWI-Anschlüsse Open Collector.
Aus diesem Grund sind auch die Pull-Up Widerstände drin da nur diese die
Leitung auf High ziehen. Die Ausgänge ziehen den Pegel dann auf Low
runter wodurch es zu keinen Problemen elektrischer Art kommen kann (nur
logistisch).
Hi Falk,
danke, dass Du mich in die richtige Richtung geschubst hast! Daraufhin
habe ich im Datenblatt auch die passende Stelle gefunden:
"When the TWEN bit in TWCR is set (one) to enable the 2-wire Serial
Interface, pin PD0 is disconnected from the port and becomes the Serial
Clock I/O pin for the 2-wire Serial Interface. In this mode, there is a
spike filter on the pin to suppress spikes shorter than 50 ns on the
input signal, and the pin is driven by an open drain driver with
slew-rate limitation."
Sorry, hatte ich glatt überlesen. Also sind Serienwiderstände generell
Pflicht, nur bei TWI geht es - wegen der dann umgeschalteten Hardware -
ohne.
Womit ein gewisses Restrisiko bleibt, falls die Software irrtümlich die
TWI-Pins als normale Ausgänge schaltet oder sich die Chips durch äußere
Einflüsse ins Nirwana verabschieden (z.B. Einstrahlprobleme).
Danke für die Formel. Wie leicht sich manche "Probleme" doch in Luft
auflösen. ;-)
Grüsse
Olaf
@ Olaf (Gast)
>Also sind Serienwiderstände generell Pflicht
Nein, keineswegs. Warum?
>Womit ein gewisses Restrisiko bleibt, falls die Software irrtümlich die>TWI-Pins als normale Ausgänge schaltet oder sich die Chips durch äußere>Einflüsse ins Nirwana verabschieden (z.B. Einstrahlprobleme).
Naja, und morgen fällt der Mond vom Himmel.
MfG
Falk
Hi Falk,
>Nein, keineswegs. Warum?
Nun, wenn zwei AVR direkt über andere (non-TWI) Portpins kommunizieren,
kann doch recht leicht der Fall eintreten, dass ein Pin VCC und der
andere GND liefert. Oder blicke ich hier noch etwas nicht?
>Naja, und morgen fällt der Mond vom Himmel.
Nun, wie wahrscheinlich das Einstrahlproblem ist, kann ich nicht
einschätzen; das ist wohl stark von der Einsatzumgebung abhängig. Aber
ein Register ist schnell mal falsch gesetzt.
Grüsse
Olaf
@ Olaf (Gast)
>Nun, wenn zwei AVR direkt über andere (non-TWI) Portpins kommunizieren,>kann doch recht leicht der Fall eintreten, dass ein Pin VCC und der>andere GND liefert. Oder blicke ich hier noch etwas nicht?
Ja, und zwar dass im Normalfall ein Programm ordentlich getestet wird.
Damit sind solche Hardwarefehler durch Programmierfehler sehr selten,
bzw. sie sollten beim sorgfältigen Testen auffallen. Schau dir die
diversen Schaltungen an, sind dort überall solche Panikwidertände drin?
Nein.
>einschätzen; das ist wohl stark von der Einsatzumgebung abhängig. Aber>ein Register ist schnell mal falsch gesetzt.
Das ist ein Programmierfehler, der meistens beim Debuggen entdeckt wird.
MFG
Falk
Hi Falk,
okay, jetzt reden wir nur noch über Wahrscheinlichkeiten,
Risikobereitschaft und Entwicklungsprozesse, wobei wir unterschiedliche
Meinungen vertreten. Fakt ist, ohne Serienwiderstand könnte etwas
kaputt gehen, was im idealen Entwicklungsprozess aber nicht vorkommen
sollte. Danke für Deine Antworten!
Grüsse
Olaf
>morgen fällt der Mond vom Himmel.
Wohl eher nicht, der Mond entfernt sich permanent von der Erde, pro Jahr
etwa um einen Zentimeter! Deshalb wird ja unser Tag (Sterntag) auch
immer länger...
;-/
Olaf wrote:
> okay, jetzt reden wir nur noch über Wahrscheinlichkeiten,> Risikobereitschaft und Entwicklungsprozesse, wobei wir unterschiedliche> Meinungen vertreten. Fakt ist, ohne Serienwiderstand könnte etwas> kaputt gehen,...
Jetzt bin ich aber auf Deine Stromversorgungsschaltung gespannt - was da
alles passieren könnte....