Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Probleme beim DS2482-800 <-> DS18B20 Kategorie: I²C-Bus (von Dirk - 15.06.2009 16:21)
Als Antwort auf Re: Probleme beim DS2482-800 <-> DS18B20 von Jörg Hansen - 12.06.2009 19:51

> > > Hallo Jörg,
> > >
> > > das Auslesen der 10 Sensoren funktioniert jetzt soweit, allerdings dauert das Auslesen
> > > ("Read" anschlieÃ?end "Convert") um die 2800ms
> > > => also fast 3 Sekunden
> > > Soweit kein Problem, wer braucht schon jede ms alle 10 aktualisierten Temp.-Werte ;-)
> > > Auch das zunächst komplette Auslesen aller DS18B20 (readTemp) und das anschlie�ende Konvertieren
> > > aller DS18B20 (convertTemp) mit anschlieÃ?endem Warten von >750ms hilft hier nicht weiter.
> > > Bereits bei einem einzigen angeschlossenen Sensor werden im Durchschnitt 151ms für das Auslesen und
> > > anschlie�end zusätzlich 250ms für das Konvertieren benötigt.Lediglich ein Sensor ist dabei der die
> > > Statistik zeitlich nach unten drückt. Warum der eine aus der Reihe springt, keine Ahnung.
> > > Sonst sind alle Messungen ca. im gleichen Bereich.
> > >
> > > Da ich allerdings dummerweise auch, in einem anderen Thread, die Auswertung von Tastern (zur Licht- bzw.
> > > Rollladensteuerung) durchführe reagiert hier die C-Control, sprich der I2C-Bus in diesen ca. 3sek.
> > > merklich schlechter als in der Zeit, wo sich der Thread für das Auslesen der Temp.-Sensoren gerade
> > > im "standby-Modus" (hier über einen "sleep 10000;"-Befehl) befindet. Auch Runtersetzen der Prio für diesen
> > > Thread auf "run=2" hilft nicht weiter.
> > > Somit muss dann der Mensch den Licht-Taster zwei bzw. auch drei mal drücken, bis das
> > > "Licht angeht". Bewegungsmelder als Eingänge haben dann auch ihre Probleme.
> > > Das geht so gar nicht.
> > >
> > > Wie lange dauert bei Dir das Auslesen der besagten 15x DS18B20-Sensoren?
> > > Laufen bei Dir auch noch andere Geschichten in dieser Zeit auf dem I2C?
> > > Gibt es dabei Timing-Probleme?
> > > Könntest Du das alte Datenblatt (2004) als Link einfügen oder anderweitig zusenden?
> > > Ich kann die Geschichte mit dem 100Ohm-Widerstand noch nicht ganz nachvollziehen.
> > >
> > > Vielen Dank für Deine/Eure Hilfe.
> >
> > Hallo miteinander,
> >
> > ich habe mich mal hingesetzt und die verschiedenen Zeiten[ms] ermittelt, für welchen Schritt (Befehlszeile)
> > welche Zeit verstreicht. Sicherlich kann man nicht jeden Wert auf die "Goldwaage" legen, so kann man
> > doch eine gewissen Trend erkennen, wo die Zeit liegen bleibt.
>
> > Was ist zu erkennen?
> > Der "writeByte"-Befehl benötigt richtig viel (I2C)-Zeit.
> > Die Zeiten sind übrigens alle unabhängig von der eingestellten Prio über den run-Befehl.
> > Was noch auffällt ist der Zeitunterschied beim Port-0 den anderen gegenüber, was das Schreiben betrifft.
> > Allerdings ist beim Schreiben von "convertTEMP" und "readSCRATCHPAD" widerum kein Unterschied
> > festzustellen. mmmhhhhhh.
> > Insgesamt, über alle 10 Sensoren, dauert es 1248...1262ms zu konvertieren bzw. 2763...2772ms um die
> > beiden Temp.-Bytes auszulesen und anschlieÃ?end zu konvertieren.
> >
> > Wie kann die Abfrage der 10 (später auch 15) Sensoren effektiver gestalten werden, so dass
> > eine sichere Erkennung eines I2C-Eingang (Licht-Taster bzw. Roll.-Taster) realisiert werden kann ?

> >
> > Grü�e Dirk.
>
> Hallo Dirk,
>
> läuft das Lesen der Taster und das Lesen der Sensoren in 2 Threads?
> Wie sind die Prio's der Threads ? (Prio 2 macht gar keinen Sinn, weil dann immer nur
> 2 Maschinenbefehle hintereinander ausgeführt werden).
> Das Konvertieren (Messen und in EEprom des DS18B20 schreiben) sollte vor dem ReadScratchpad
> erfolgen.
> Habe Dir die Datenblätter mal auf meine HP gelegt:
> http://www.hansen-leinesser.de/DS18B20.pdf
> http://www.hansen-leinesser.de/DS2482-800.pdf
>
> GruÃ?
> Jörg

Danke für die Datenblätter.
Nun ist auch mir klar, wo die 100Ohm-Widerstände hin gehören ;-)
Was die gestarteten Threads in meiner SW betrifft:
 1.)  main-Thraed (Initialisierung => Setzen von globalen Variablen und Starten der weiteren Threads
 2.) "Taster-Thread" wartet ausschlieÃ?lich auf INT-Signal => Auswertung wer hat welchen Port ausgelöst
 3.) Thread Dauer-Tastendruck (JA, notwendig für Mehrfachnutzung eines Tasters)
 4.) Menu-Thread (Start einer Menu-Abarbeitung an der Station)
 5.) Timer-Thread (Timer-Bearbeitung für Rollläden(Laufzeiten) bzw. Bewegungsmelder)
 6.) Thread für Zeitschalter bzw. Zeitschaltuhren

Hier gro�artig an der Prio "zu drehen", hat sich aus meiner Erfahrung, wenn überhaupt, eher als
kontraproduktiv herausgestellt. => alle Threads laufen ohne run-Befehl => Standard-Prio => 32

Mein Problem ist wohl derzeitig die "Blockierung" des I2C-Busses beim Auslesen der 1W-Temp.-Sensoren,
genau dann, wenn ein INT-Signal zur Auswertung der max7311-Module kommt.
=> merkliche Verzögerung bei der Auswertung des Tastendruck => keine Reaktion beim BM.

Ich probiere hier mal die eine oder auch andere Geschichte (i2c.start & i2c.stop beim read/write auf
dem 1W-Bus), um hier ggf. eine Verbesserung zu bekommen.

Sobald ich da etwas positives erreichen sollte, werde ich das hier natürlich auch einstellen.

Grü�e Dirk.


    Antwort schreiben


Antworten: