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

Re: 1Wire Bridge Kategorie: I²C-Bus (von Mexx - 25.09.2008 12:49)
Als Antwort auf 1Wire Bridge von Uwe Dmoch - 21.09.2008 15:38

Hallo Uwe,

Hast Du den I2C Bus vorher initialisiert ?

i2c.init ();

danach kannst Du dann die Bridge initialiseren

bei mir sieht das dann so aus:
 ds2482.init (var.I2C_1WIRE_A_ADDR);
 ds2482.init (var.I2C_1WIRE_B_ADDR);

Ich habe bei meiner Heizungssteuerung eine kleine Funktion welche alle angeschlossenen Sensoren
auf HWCOm ausgibt (2x 1-Wire Bridge) , vielleicht hilft das auch:
---------------------------------------------------------------------------------------------
const Sensoren=8; // max. Anzahl zu findender Sensoren

type sensoren
{
 byte addr[Sensoren];
}

sensoren OWSensoren[Sensoren]; // Zweidimensionales Array für 1W-Adressen

long val;

//*****************************************************************************
//                          function search
//*****************************************************************************
// Funktion :
//-----------------------------------------------------------------------------
// Parameter: -
//-----------------------------------------------------------------------------
// Return   : -
//*****************************************************************************
function search ()
{
  byte i, j, k, LastDis;
  int sec;

  wait (0 == var.b_gettemp);
  var.b_gettemp = var.TRUE;

  ds2482.init(0);    // 1W-Bridge initialisieren

  hwcom.setspeed(8); // 57.600 Baud
  hwcom.clr();       // Terminal-Fenster löschen
 
  for i=0...Sensoren-1
  {
    for k=0...7
    {
      OWSensoren[i].addr[k] = 0;
    }
  }

  for i=0...Sensoren-1
  {
    LastDis=ds2482.getDevice(0,       // I²C-Bus-Sub-Adresse DS2482
                             i==0,    // True = Start Suchsequenz
                             OWSensoren[i-1].addr, // Byte-Array mit zuvor gefundener ROM-Adresse
                             LastDis, // Letztes Bit mit Diskrepanz (letzter Rückgabewert der Funktion)
                             OWSensoren[i].addr);  // Ziel-Array für gefundene ROM-Adresse
    if LastDis==0 break;
  }
  hwcom.print("DS2482 Adresse 0");
  hwcom.ret();
  hwcom.print("Anzahl gefundene Sensoren: ");
  if LastDis hwcom.print("mindestens ");
  hwcom.num(i+1);

  // Ausgabe der Adressen:
  for j=0 ... i-(LastDis!=0 and 1)
  {
    hwcom.ret();
    for k=0...7
    {
      hwcom.num(OWSensoren[j].addr[k]);
      hwcom.tab();
    }
//  hwcom.tab();
    val = ds18b20.getTempl(0,OWSensoren[j].addr);
    hwcom.num(val);
  }

  hwcom.ret();
  hwcom.ret();

  ds2482.init(1);    // 1W-Bridge initialisieren
 
  for i=0...Sensoren-1
  {
    for k=0...7
    {
      OWSensoren[i].addr[k] = 0;
    }
  }

  for i=0...Sensoren-1
  {
    LastDis=ds2482.getDevice(1,       // I²C-Bus-Sub-Adresse DS2482
                             i==0,    // True = Start Suchsequenz
                             OWSensoren[i-1].addr, // Byte-Array mit zuvor gefundener ROM-Adresse
                             LastDis, // Letztes Bit mit Diskrepanz (letzter Rückgabewert der Funktion)
                             OWSensoren[i].addr);  // Ziel-Array für gefundene ROM-Adresse
    if LastDis==0 break;
  }
  hwcom.print("DS2482 Adresse 1");
  hwcom.ret();
  hwcom.print("Anzahl gefundene Sensoren: ");
  if LastDis hwcom.print("mindestens ");
  hwcom.num(i+1);

  // Ausgabe der Adressen:
  for j=0 ... i-(LastDis!=0 and 1)
  {
    hwcom.ret();
    for k=0...7
    {
      hwcom.num(OWSensoren[j].addr[k]);
      hwcom.tab();
    }
//  hwcom.tab();
    val = ds18b20.getTempl(1,OWSensoren[j].addr);
    hwcom.num(val);
  }

  var.b_gettemp = var.FALSE;
}
---------------------------------------------------------------------------------------------

Schöne Grü�e
  Mexx


    Antwort schreiben


Antworten:

Re: 1Wire Bridge (von Uwe Dmoch - 25.09.2008 22:13)
    Re: 1Wire Bridge (von Mexx - 26.09.2008 23:32)
        Re: 1Wire Bridge (von Uwe Dmoch - 27.09.2008 10:47)