Zitat 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