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

1-Wire 18B20 Kategorie: I²C-Bus (von ChristianS - 25.09.2010 16:55)
Ich nutze:
C-Control II Station, OSOPT V3.1
Hallo,
da habe ich das 1.Problem noch nicht gelöst, da kommt schon das Nächste. Ich habe einen
18B20an einer Bridge 8 angeschlossen und diese an den I2C-Bus der CC2-Station. Die Adresse des
Busteins steht auf 0, also A0;A1;A2 gegen Masse. Der Sensor hängt am Port 1W0
Folgendes Progrämmchen habe ich geladen:


/******************************************************************/
/* Beispiel zum Auslesen des DS1822 1Wire-Temperatursensors       */
/* am DS2482-100                                                  */
/******************************************************************/

const DS1822ROM[]=34,135,56,17,0,0,0,247;

const convertTEMP    = 0x44;
const readSCRATCHPAD = 0xBE;


/***********************************/
/* Temperatur auslesen             */
/***********************************/
function getTempl(byte ds2482addr, byte ROM[]) returns long
{long temp;
 int x;

 ds2482.matchROM(0,ROM);
 ds2482.writeByte(ds2482addr,convertTEMP);

 sleep 750;

 ds2482.matchROM(0,ROM);
 ds2482.writeByte(ds2482addr,readSCRATCHPAD);
 x=ds2482.readByte(ds2482addr) or ds2482.readByte(ds2482addr) shl 8;

 if x and 0xF000
   temp= (x shr 4) or 0xF000;
  else
   temp= x shr 4;
 return temp*10000 + (x and 0xF)*625;
}

function lcdzahl7n4(long zahl)
{
 lcdext.zahl3(zahl/10000);
 lcdext.put(',');
 zahl=zahl%10000;
 lcdext.ziff(zahl/1000);
 lcdext.ziff(zahl/100);
 lcdext.ziff(zahl/10);
 lcdext.ziff(zahl);
}

thread main
{byte DS1822Addr[8],i;
 long temp;
 lcdext.init();
 ds2482.init(0);

 // ROM-Adresse des angeschlossenen DS1822 ermitteln.
 // Es darf nur ein 1W-Bus-Device angeschlossen sein,
 // wenn diese Funktion ausgefĂĽhrt wird!
 ds2482.getROM(0,DS1822Addr);
 
 // 64Bit Adresse ausgeben
 for i=0...3 lcdext.zahl4(DS1822Addr[i]);
 lcdext.line(2);
 for i=4...7 lcdext.zahl4(DS1822Addr[i]);
 sleep 2500;


 lcdext.clear();
 lcdext.print("Temperatur:");
 lcdext.goto(2,8);
 lcdext.put(223);
 lcdext.put('C');
 loop
 {
  lcdext.line(2);
  lcdzahl7n4(getTempl(0,DS1822Addr));
 }
}


Leider bekomme ich als Rom-Adresse nur Nullen angezeigt. Wo liegt das Problem?

Danke und GruĂ?,
ChristianS


    Antwort schreiben


Antworten:

Re: 1-Wire 18B20 (von BerndK - 25.09.2010 20:43)
    Re: 1-Wire 18B20 (von ChristianS - 26.09.2010 12:06)
        Re: 1-Wire 18B20 (von ChristianS - 26.09.2010 12:26)
            Re: 1-Wire 18B20 (von André H. - 28.09.2010 8:19)
                Re: 1-Wire 18B20 (von ChristianS - 28.09.2010 12:48)