Zitat von
Zeroeightfifteen
@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.
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):
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
'-------------------------------------------------------------------------------
Grundlagen und nochmal Grundlagen lernen, Datenblätter lesen, verstehen und dann variieren .
Grüße
Henrik
Lesezeichen