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:
Doch wenn ich X empfangen will empfängt er nur 65 doch Err ist 0. Das bedeutet doch dass kein fehler aufgetreten ist?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
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.







Zitieren
Lesezeichen