Hallo MAT,
in deinem Programm sehe ich im Moment noch nicht die eigentliche Übertragung, nur die Vorbereitungen dafür.
Die Variable Twi_mt_data scheint auf die erste Adresse der zu übertragenden Daten verweisen zu müssen, daher das VARPTR.
Die Variable Twi_mt_cntr scheint die Anzahl der zu übertragenden Bytes zu halten.
Dann musst du die Sache etwa so angehen
Code:
Declare Sub Master_transmit(byref Slave_adress As Byte , Byref Komando1 As Byte )
...
Call Master_transmit(slave_adress , temperaturbyte(1))
...
Sub Master_transmit(byref Slave_adress As Word , byref Komando1 As Byte )
...
Twi_mt_data = Varptr(Komando1)
...
End Sub
In dem Call wird dann die Speicheradresse von temperaturbyte(1) übergeben, die du in der Sub unter dem Name Komando1 benutzen kannst. Mit Varptr() holst du dann die Speicherstelle von Komando1 (also tatsächlich die von Temperaturbyte(1)) und übergibst sie an Twi_mt_data.
Deine ganze Überlegung muss dahin gehen, dass du am Ende keine Werte sondern eine Speicherstelle übergeben willst. Entsprechend darfst du auch keine dieser Variablen auf den "Wert" einer anderen setzen, sondern immer nur auf die Speicherstellen. Dies wird mit Byref und mit Varptr() gemacht.
Um zu prüfen, ob die Übergaben funktionieren, kannst du auch die Speicherstellen ausgeben oder Printen lassen (also Varptr() der Variable) und dann mit dem Variablen-Layout in Program -> Show_Result vergleichen. Dort muss dann die gleiche Speicherstelle stehen.
Jetzt klarer?
Gruß
Rolf
Lesezeichen