In deinem Programm kenn ich mich irgendwie gar nicht aus. Wo empfängst du das Byte? gibts da nich solche Befehle Receive?
Edit: Könntest du mir noch zeigen wie ich vom Slave auch senden kann? Die Hilfe in Bascom kann man da ja vergessen.
Ich hab jetzt dieses Programm hergenommen:
Code:
$regfile = "M32def.dat" ' the used chip
$crystal = 16000000 ' frequency used
$baud = 9600 ' 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
'On the Mega8, On the PCF8574A
'scl=PC5 , pin 28 pin 14
'sda=PC4 , pin 27 pin 15
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 B As Byte , X As Byte
Print "TWI master"
Do
Input B ' increase value
I2csend &H40 , B ' send the value
Print "Error : " ; Err ' show error status
I2creceive &H41 , X ' get a byte
Print X ' show error
Print "Error" ; Err
Waitms 500 'wait a bit
Loop
End
Doch wenn ich X empfangen will empfängt er nur 65 doch Err ist 0. Das bedeutet doch dass kein fehler aufgetreten ist?
Das Byte B finde ich im Slave ja gar nicht. Wie empfängt der denn das?
Wie kommst du denn aus der Hauptschleife wieder heraus?
Ich habe das Programm mal Simuliert. Der hüpft ja kreuz und quer durchs Programm. Was soll denn dann das Do Loop in der Hauptschleife?
Twcr = &B00000100
Twcr = &B01000100
das ist wohl auch doppelt oder?
Welche Adresse hat denn der Master?
So das waren jetzt etwas viel Fragen aber sonst blick ich da nie durch.
Lesezeichen