Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > Hallo, > > ich komme beim Programmieren nicht weiter... > Dieses Programm läuft: > > 'Benötigte Libs´s: IntFunc_lib.cc > 'Funktion: Auslesen EINES Temperatursensors DS18B20 (pro Port) > 'ohne I2C to 1-Wire Converter > > '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > ' Mögliche Ports (RAM besser über JP7 ausschalten): > ' PortA.0 = Portbit 0 ... PortA.7 = Portbit 7 > ' PortB.0 = Portbit 8 ... PortB.7 = Portbit 15 > ' PortC.0 = Portbit 16 ... PortC.7 = Portbit 23 > ' PortD.0 = Portbit 24 ... PortA.7 = Portbit 31 > ' PortE.0 = PortBit 32 ... PortE.6 = PortBit 38 (39 geht nicht) > ' PortF.0 = PortBit 40 ... PortF.7 = PortBit 47 > ' PortG.0 = PortBit 48 ... PortG.4 = PortBit 52 > '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > Dim Port As Integer ' das PortBit > Dim TextaufAnzeige(5) As Char ' AusgabeTextaufAnzeige auf LCD > Dim i As Integer ' Zählervariable > Dim temp As Integer ' Temperaturwert LCD > Dim scratch_pad(1) As Byte ' Temperaturwert DS18B20 > > Sub main() > > LCD_Init() > LCD_ClearLCD() > LCD_CursorOff() > Port = 7 > TextaufAnzeige = "A7:" ' + temp > > Do While True > OneWire_Reset(Port) > OneWire_Write(0xcc) ' ROM überspringen Kommando > OneWire_Write(0x44) ' starte Temperatur Messung Kommando > AbsDelay(50) ' Wert ausprobieren... > OneWire_Reset(Port) > OneWire_Write(0xcc) ' ROM überspringen Kommando > OneWire_Write(0xbe) ' scratchpad lesen (bis i=9 nicht notwendig) > For i = 0 To 1 > scratch_pad(i)= OneWire_Read() > Next > temp= scratch_pad(1) * 256 + scratch_pad(0) > LCD_Locate(1,1) ' Zeile 1, Spalte 1 > LCD_WriteText(TextaufAnzeige) > LCD_WriteFloat(temp*0.06255,1)'Faktor 0.06255 für DS18B20 > End While > > End Sub > > Nun wollte ich die Sache mit einer Funktion lösen: > > Sub DS18B20(PortBit As Integer)As Integer > > Dim i As Integer ' Zählervariable > Dim temp As Integer ' Temperaturwert für LCD-Anzeige > Dim scratch_pad(1) As Byte ' Temperaturwert DS18B20 > > OneWire_Reset(PortBit) > OneWire_Write(0xcc) ' ROM überspringen Kommando > OneWire_Write(0x44) ' starte Temperatur Messung Kommando > AbsDelay(50) ' Wert ausprobieren... > OneWire_Reset(PortBit) > OneWire_Write(0xcc) ' ROM überspringen Kommando > OneWire_Write(0xbe) ' scratchpad lesen (bis i=9 nicht notwendig) > For i = 0 To 1 > scratch_pad(i)= OneWire_Read() > Next > temp= scratch_pad(1) * 256 + scratch_pad(0) > Return temp * 0.06255 'Faktor 0.06255 für DS18B20 > > End Sub > > > Sub main() > > Dim temp As Integer ' Temperaturwert für LCD-Anzeige > > LCD_Init() > LCD_ClearLCD() > LCD_CursorOff() > > > Do While True > DS18B20(7) > LCD_Locate(1,1) ' Zeile 1, Spalte 1 > LCD_WriteFloat(temp,1) > End While > > End Sub > > Nun ist der Anzeigewert unsinn. > Wo steckt der Fehler ? > > Grüße aus Kiel > > Andreas Kunze >