Hallo Ihr zwei,
war schon länger nicht mehr hier... 
Mir ist irgendwie der HW TWI auch lieber nur schnalle ich das nicht mit der Long/array geschichte.
Hier der Code. Mit dem einzelnen Byte gehts wunderbar, mit dem Array nicht.
Master
Code:
$regfile = "M8def.dat"
$crystal = 3686000
$baud = 9600
$lib "i2c_twi.lbx"
Config Timer1 = Timer, Prescale = 8
Const Timervorgabe = 19456
Config Lcd = 20 * 4
Config Lcdpin = Pin , E = Portd.3 , Rs = Portd.2 , Db7 = Portd.7 , Db6 = Portd.6 , Db5 = Portd.5 , Db4 = Portd.4
Config Scl = Portc.5
Config Sda = Portc.4
I2cinit
Config Twi = 100000
Declare Sub Datenholen
Declare Sub Zeittakttimer1
Dim B As Byte
Dim C As Byte
Dim D As Long
Dim Buf(4) as Byte
'***** geht nicht************
Dim Buf(4)as Byte at D overlay
'**************************
Dim Ttakt As Byte
Ttakt = 0
B = 0
Cls
Cursor Off
Enable Timer1
Enable Interrupts
On Timer1 Zeittakttimer1
Locate 1 , 1
Lcd "TWI master"
Do
If Ttakt = 5 Then Gosub Datenholen
Locate 2 , 1
Lcd "Startzeichen: " ; Chr(32) ; Chr(32) ; B ; Chr(32) ; Chr(32)
Locate 3 , 1
Lcd "Wert: " ; Chr(32) ; Chr(32) ; C ; Chr(32) ; Chr(32)
Locate 4 , 1
Lcd "Error : " ; Err
Incr B
Loop
Datenholen:
I2creceive &H40 , Buf(1) , 0 , 1
C = Buf(1)
B = 0
Ttakt = 0
'***das geht nicht***********
I2creceive &H40, Buf(4), 0, 4
C = Buf(1), 4
B=0
Ttakt =0
'*************************
Return
Zeittakttimer1:
Incr Ttakt
Timer1 = Timervorgabe
Return
End
Slave
Code:
$regfile = "m8def.dat"
$crystal = 7372800
' $baud = 9600
$lib "i2c_twi-slave.lbx"
Config Pinc.0 = Output 'LED1
Config Pinc.1 = Output 'LED2
Config Twislave = &H40, Btr = 2, Bitrate = 100000
Config Scl = Portc.5 ' Ports fuer IIC-Bus
Config Sda = Portc.4
Enable Interrupts
Dim C As Byte
'******geht nicht*******
Dim C as Long
Dim D(4) as Byte at C overlay
'*************************
C = 0
D=0
Do
Portc.1 = 1
Incr C
Incr D
Waitms 25
Portc.1 = 0
Waitms 25
Loop
'i2c Twi Sub
'--------------------------------
Twi_stop_rstart_received:
Return
'--------------------------------
Twi_addressed_goread:
Return
'--------------------------------
Twi_addressed_gowrite:
Portc.0 = 1
Twi = C
'*****geht nicht*****
Twi = D(1) , 4
'******************
Portc.0 = 0
Return
'--------------------------------
Twi_gotdata:
Return
'--------------------------------
Twi_master_needs_byte:
Return
'--------------------------------
Twi_master_need_nomore_byte:
Return
End
Habt Ihr zwei ne Idee?? Arbeite mit der neuesten Bascom Version und dr TWI-Slave lib.
Merci
Gruß
Lesezeichen