$baud = 9600
versuch es mal ...am pc auch
Hallo
wie kann ich mit dem DS1621 eine Temperatur auslesen? ich habe schon einige Beispielprogramme versucht. Der liefert mir aber nur komische zahlen. wie muss ich denn diese zahl abspeichern?
Ich habe mir dieses Programm mal geschrieben. Ist das schon annähernd richtig?
Code:$regfile = "M32def.dat" ' chip $crystal = 16000000 ' frequenz $baud = 19200 ' baud rate $lib "i2c_twi.lbx" ' we do not use software emulated I2C but the TWI Config Scl = Portc.0 ' we need to provide the SCL pin name Config Sda = Portc.1 ' we need to provide the SDA pin name I2cinit ' we need to set the pins in the proper state Config Twi = 100000 ' wanted clock frequency 'will set TWBR and TWSR 'Twbr = 12 'bit rate register 'Twsr = 0 'pre scaler bits Dim T As Word Do I2creceive &H90 , T Print "T= " ; T Print "receive" ; Err Waitms 500 Loop End
$baud = 9600
versuch es mal ...am pc auch
ne baud 19200 passt schon die hab ich am pc auch. das funktioniert alles. die hab ich mal höher gestellt weil es da schon mal probleme gegeben hatt. aber ich glaube dass ich die temperatur vom Sensor nicht richtig einlesen kann.
Hallo,
mit Baud hat das ja nu auch nix zu tun.
Ähmm.. soll das Deine gesamte DS1621 Ausleseroutine sein? Ist Dir nicht aufgefallen, daß die Beispielprogramme (die Du ja probiert hast) deutlich umfangreicher sind?Code:Do I2creceive &H90 , T Print "T= " ; T Print "receive" ; Err Waitms 500 Loop
Wenn Du mir die Frage beantwortest, bekommst Du von mir noch'n Beispielprogramm .
Grüße
Henrik
Hallo,
vom DS1621 kommen 2 Byte, Suche mal das Datenblat dazu, da steht genau drin wie das ausschaut.
Es wird in 0.5 Grad gemessen.
http://www.alldatasheet.com/datashee...AS/DS1621.html
Yepp, oder auch in 0,06°C Auflösung wenn man Slope und Counter auswertet.Zitat von linux_80
Etwas Initialisierung gehort aber so oder so dazu .
Grüße
Henrik
So genau hab ich das DB nicht angeschut, aber mir ist nur gleich die Tabelle mit den Beispielwerten aufgefallen.
@hrei
doch das ist mir schon aufgefallen. Ich habe aber die erfahrung gemacht dass die meisten Beispielprogramme sehr umständlich geschrieben sind. (z.B. einen Atmega32 als Slave zu programmieren.) dieses habe ich auch viel kürzer geschrieben.
Na, man kann ja bisweilen manches kürzer schreiben, aber dann sollte man schon wissen was man tut.Zitat von Zeroeightfifteen
Eine einfache Sub sieht zum Beispiel so aus - ACHTUNG-das ist die nackte Subroutine: (Übergeben wird die Deviceadresse des DS1621, das Ergebnis steht in der Variable Value):
Grundlagen und nochmal Grundlagen lernen, Datenblätter lesen, verstehen und dann variieren .Code:'------------------------------------------------------------------------------- Sub Readtemp(byval Device As Byte) Local Deviceread As Byte Local Lowtemp As Byte Local Hightemp As Byte Deviceread = Device + 1 'I2csend , Device , &HEE 'kürzere Source, längerer Code I2cstart I2cwbyte Device I2cwbyte &HEE 'Temperaturmessung anstoßen I2cstop 'I2csend , Device , &HAA 'kürzere Source, längerer Code I2cstart I2cwbyte Device I2cwbyte &HAA 'Temperaturmessung Lesekommando I2cstop I2cstart I2cwbyte Deviceread I2crbyte Lowtemp , Ack 'LSByte holen I2crbyte Hightemp , Nack 'MSByte holen I2cstop Value = Lowtemp * 10 If Hightemp = 128 Then Value = Value + 5 End If End Sub '-------------------------------------------------------------------------------
Grüße
Henrik
was bedeutet, das ist nur die nackte sub? muss ich da noch viel dazu schreiben? bzw wann muss ich in die sub springen?
Lesezeichen