Re: Absturz bei langer Leitung? Kategorie: I²C-Bus (von André H. - 20.02.2005 14:17) | ||
Als Antwort auf Absturz bei langer Leitung? von hpercel - 13.02.2005 7:28 | ||
| ||
Hallo hpercel, > Hallo Leute > Kann es sein, dass sich bei einem zu langen I2C Bus die Station nach ca.20h aufhängt? Nein, das passiert eigentlich nicht. > Habe ich da ein �berlastungproblem? Wenn Du alles mit dem 5V-Ausgang der Unit versorgst, dann ja. (Zumindest hast Du dann eine 45m Lange Antenne auf der 5V-Leitung) > Ohne den 20m Strang habe ich keine Probleme. > > Folgende Situation ist bei mir "entstanden" > > Situation mit Absürzen: > +---- 10K ---- 5V > +------------------------------------+---------------------------+ > | | | > | | | > ca.20m ca.5m ca.15m > | | | > | +---- 10K ---- 5V +---- 10K ---- 5V > | +---- 330 ---- DS1631 +---- 330 ---- DS1631 > +---- 10K ---- 5V > | > 330 > | > ca.5m > | > | > +---- DS1631 > > So soll es einmal ausschauen: > > +---- 10K ---- 5V > +------------------------------------+---------------------------+ > | | | > | | | > ca.20m ca.5m ca.15m > | | | > | +---- 10K ---- 5V +---- 10K ---- 5V > | +---- 330 ---- DS1631 +---- 330 ---- DS1631 > +---- 10K ---- 5V > +---- 330 ---- DS1621 > +---- 330 ---- DS1621 > | > 330 > | > ca.5m > | > | > +---- DS1631 > Da� es hier zu Problemen kommt, ist kein Wunder. Beim I²C-Bus gilt immer eine Streng busfäörmige Verkabelung. Längere Stichleitungen sind daher problematisch. Auch solltest Du auf jeden Fall I²C-Bus-Puffer oder I²C-Bus-Extender bei solchen Längen verwenden. Auch die ganzen Pull-Ups bei Dir sind mehr als problematisch. Denn die I/Os der CC2 dürfen mit max. 5mA belastet werden. Das gilt auch für die Ports P3.8 (SCL) und P3.9(SDA) Die CC2 hat intern bereits 4,7k Pull-Ups am Bus. (Die ganz alten CC2 noch 10k) Dann hast Du noch 4x10k verteilt. Das macht einen Gesamt-Pull-Up von überschlagen ca. 1,6k. Hier flie�en allein schon 3,1mA. Dazu kommen noch die Ladungen(Leitungen & ICs), die abgebaut werden müssen. Die 5mA werden hier leicht gesprengt. Auch die 5m zwischen den 330Ohm-Widerständen und dem Sensor sind nicht optimal. die 330Ohm-Widerstände sollten sich unmittelbar vor den I²C-Bus-Slaves befinden. Damit Dein Vorhaben reibungslos funzt, würde ich hier I²C-Bus-Puffer einsetzen. An der Station zwei Stück. An den ersten kommen die beiden Stränge mit 5m und 15m. Vor den beiden DS1631 sind nicht unbedingt I²C-Bus-Puffer notwendig. Die Pull-Ups von 10k an jedem dieser Enden würde ich auf 6,8k herabsetzen. Wenn es nicht geht, dann werden an den Slaves nochmals I²C-Bus-Puffer benötigt. An den zweiten Puffer kommen die 20m. Nach den 20m mu� nochmals ein I²C-Bus-Puffer gesetzt werden. Die 20m werden gepuffertert benutzt. D.h. Der gesamt Pull-Up auf diesen 20m sollte ca. 1k sein. Hinter diesen Puffer kannst Du Deine 3 geplanten Slaves hinsetzen. Die 5m zum letzten Sensor sollten dann auch kein Problem sein. Jedoch mu�t Du unbedingt die 330Ohm zum Sensor setzen und nicht mitten in der Leitung. Und zum "Absturz" selbst: Ich glaube nicht, da� sich die CC2 hier aufhängt. Höchstens das Program selbst, wenn mit undefinierte Werten auf Grund von Störungen am Bus weitergearbeitet wird. Um das zu testen, mu�t Du einfach einen seperaten Thread laufen lassen, der z.B. einen I/O-Port ständig umschaltet. 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: |