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

Re: I2C Befehlsfolge Kategorie: Programmierung (von André H. - 27.01.2005 13:03)
Als Antwort auf Re: I2C Befehlsfolge von Tom - 26.01.2005 15:23
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0
Hallo Tom,
 
>
>  if not i2c.cstart(86) {i2c.stop();"Hier igendwas einbauen um zu sehen das der Baustein reagiert";}
>


Hier muÃ? ich Dich korregieren.
Eine korrekte Abfrage am I²C-Bus mit Erkennung des Bausteins sieht so aus:

 if i2c.cstart(0x56) // oder auch in Dezimal
  {
   // Baustein vorhanden
   i2c.stop();
   // Meldung, Baustein hat reagiert.
  }
  else
  {
   i2c.stop();
   // Meldung, Baustein hat ncht reagiert.
  }

Wichtig ist, daÃ? man nach einem I2c.start() bzw. i2c.cstart() immer
ein i2c.stop() (bzw. i2c.cstop(), wenn das Capture nicht aufgehoben werden soll) schreibt.
Das gilt natürlich nicht für ein Repeatet-Start.
Ansonsten meinen andere Bausteine, daÃ? der Bus noch nicht "freigegeben" ist, und warte
auf das Stop-Zeichen, bis sie selbst wieder auf eine Startbedingung reagieren.

Und bei einem vergessenen Stop beim Captured-Start (cstart), wird dann endlos
auf die Freigabe des Captures gewartet.

> zu testen ob Du überhaupt die richtige Adresse triffst.
> Ansonsten mal auf Adresse + 1 schreiben.

Hansi hat's zwar schon geschrieben, hjedoch nochmal:
Gerade Adressen sind Schreibadressen, ungerade sind Leseadressen.

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: