I2C - Bascom AVR -------------------------------------------------------------------------------- I2CINIT ------- Action : Initialise les pins SDA et SCL Syntaxe : I2CINIT Remarques Par défaut, les pins SDA et SCL sont mise dans l'état Ad-hoc lors d'un reset de l'Avr, Les registres PORT et DDR étant mis à zéro. Si vous avez besoin de changer les registres DDR et PORT en cours de programme il faudra ré-utiliser la commande I2CINIT pour repositionner les pins SDA et SCL dans l'état voulu. Example : Config Sda = Portb.5 Config Scl = Portb.7 I2cinit Dim X As Byte , Esclave As Byte X = 0 ' Reset de la variable X Slave = &H40 ' Adresse d'un PCF 8574 (Circuit Multi I/O) I2creceive Esclave , X ' Réception de la valeur dans la variable X Print X ' Et impression de celle-ci -------------------------------------------------------------------------------- I2CRECEIVE ---------- Action : Réception de données d'un circuit I2C esclave. Syntaxe : I2CRECEIVE esclave, var Remarques esclave : Variable Byte, Word ou Integer ou une constante qui reprend l'adresse de l'esclave. Le protocole I2C utilise des adresse sur 7 bits (les 7 bits de poids fort), le bit 0 étant utilisé pour indiquer une lecture (1) ou une écriture (0) est géré par Bascom. Voir les datasheets des circuits pour connaître l'adresse à utiliser. Donc, en Bascom, l'adresse sera toujours paire, et ce sera l'adresse 7 bit multipliée par 2. Var : Variable Byte, Word ou Integer qui reçoit l'octet du circuit I2C. Si une erreur survient pendant la communication, la variable interne ERR est mise à 1, sinon, sa valeur est 0. La commande I2CRECEIVE combine les commandes i2cstart,i2cwbyte,i2crbyte et i2cstop. -------------------------------------------------------------------------------- I2CSEND ------- Action : Envoie des données à un esclave I2C. Syntaxe : I2CSEND esclave, var Remarques esclave : Variable Byte, Word ou Integer ou une constante qui reprend l'adresse de l'esclave. Le protocole I2C utilise des adresse sur 7 bits (les 7 bits de poids fort), le bit 0 étant utilisé pour indiquer une lecture (1) ou une écriture (0) est géré par Bascom. Voir les datasheets des circuits pour connaître l'adresse à utiliser. Donc, en Bascom, l'adresse sera toujours paire, et ce sera l'adresse 7 bit multipliée par 2. Var : Variable Byte, Word ou Integer qui contient la valeur à envoyer. Si une erreur survient pendant la communication, la variable interne ERR est mise à 1, sinon, sa valeur est 0. La commande I2CSEND combine les commandes i2cstart,i2cwbyte et i2cstop. Example : Config Sda = Portb.5 Config Scl = Portb.7 Const Esclave = &H40 ' Adresse d'un PCF 8574 (Circuit Multi I/O) Dim X As Byte X = 5 ' Donne la valeur 5 à la variable I2csend Esclave , X ' Envoire la valeur sur le bus -------------------------------------------------------------------------------- I2START,I2CSTOP, I2CRBYTE, I2CWBYTE, I2CREPSTART ------------------------------------------------ Action : I2CSTART génère une condition START sur le bus. I2CREPSTART re-génère une condition START sur le bus. I2CSTOP génère une condition STOP sur le bus. I2CRBYTE reçoit un octet du bus I2C. I2CWBYTE envoie un octet sur le bus I2C. Syntaxe : I2CSTART I2CREPSTART I2CSTOP I2CRBYTE var, ack/nack I2CWBYTE val Remarques Var : Une variable qui reçoit la valeur envoyée par le circuit esclave. ack/nack : Envoie un ACK ou un NACK. Val : La valeur a envoyer au circuit I2C. Ces commandes sont a utiliser lorsque les commandes I2CSEND et I2CRECEIVE ne peuvent-être utilisée à cause d'un protocole particulier définit dans le datashett du composant utilisé.