21 #include <avrio/defs.h> 22 #include <avrio/queue.h> 23 #include <avrio/twi_addr.h> 127 #define TWI_DEVICE_ADDR_SIZEOF 1 134 #define TWI_LENGTH_SIZEOF 1 180 #define TWI_ID_SIZEOF 1 384 #define TWI_GENCALL 0x01 424 #if defined(__DOXYGEN__) 438 #define TWIFRAME_DECLARE(xVarName, xBufferSize) 447 #define TWIFRAME_STATIC_DECLARE(xVarName, xBufferSize) 489 #include "avrio-config.h" 491 #ifdef AVRIO_TWI_ENABLE 492 #include "avrio-board-twi.h" 496 #define TWIFRAME_DECLARE(__name,__size) \ 497 uint8_t __name ##Buffer[__size]; \ 498 xTwiFrame __name = { .pxData = __name ##Buffer, \ 502 #define TWIFRAME_STATIC_DECLARE(__name,__size) \ 503 static uint8_t __name ##Buffer[__size]; \ 504 static xTwiFrame __name = { .pxData = __name ##Buffer } 515 TWSR &= ~(
_BV (TWPS0) |
_BV (TWPS1));
518 usRatio = ((AVRIO_CPU_FREQ / 1000UL) / usSpeed);
519 if ((usRatio < 16) || (usRatio > (255 * 2 + 16))) {
523 TWBR = (uint8_t) (usRatio - 16) / 2;
530 __STATIC_ALWAYS_INLINE (
void 533 TWAR = xMyDeviceAddr;
534 TWCR =
_BV (TWINT) |
_BV (TWEN) |
_BV (TWIE) |
_BV (TWEA);
eTwiStatus eTwiWrite(xTwiDeviceAddr xDeviceAddr, uint8_t ucByte)
Envoi d'un octet en mode maître.
eTwiStatus eTwiSlaveRxCB(xQueue *pxRxPayload, eTwiStatus eStatus)
Gestionnaire de réception esclave.
void vTwiSetDeviceAddress(xTwiDeviceAddr xMyDeviceAddr)
Modifie l'adresse de notre circuit en mode esclave.
uint8_t xTwiLength
Longueur d'une trame.
void vTwiInit(void)
Initialise le module.
xTwiId xTwiTrySend(const xTwiFrame *pxFrame)
Emission non bloquante d'un message en mode maître.
bool bTwiIsBusy(void)
Indique si le module est occupé
eTwiStatus eTwiSetSpeed(uint16_t usSpeed)
Modifie la vitesse d'horloge du bus en mode maître.
eTwiStatus eTwiMem8Write(uint8_t ucFisrtByte, xTwiFrame *pxFrame)
Ecriture dans une mémoire I2C (Adresse mémoire 8 bits)
eTwiStatus
Codes d'erreur et d'état.
eTwiStatus eTwiRead(xTwiDeviceAddr xDeviceAddr, uint8_t *pucByte)
Réception d'un octet en mode maître.
eTwiStatus eTwiMem8Read(uint8_t ucFisrtByte, xTwiFrame *pxFrame)
Lecture dans une mémoire I2C (Adresse mémoire 8 bits)
eTwiStatus eTwiReceive(xTwiFrame *pxFrame)
Réception d'un message en mode maître.
eTwiStatus eTwiGetRxFrame(xTwiFrame *pxFrame)
Lecture d'une trame reçue.
xTwiId xTwiTryReceive(xTwiFrame *pxFrame)
Réception non bloquante d'un message en mode maître.
eTwiStatus eTwiSlaveTxCB(xQueue *pxTxPayload, eTwiStatus eStatus)
Gestionnaire de transmission esclave.
eTwiStatus eTwiMem16Read(uint16_t usMemAddr, xTwiFrame *pxFrame)
Lecture dans une mémoire I2C (Adresse mémoire 16 bits)
eTwiStatus eTwiGetStatus(xTwiId xFrameId, xTwiLength *pxLength)
Lecture de l'état du module maître.
#define _BV(n)
Renvoie un masque avec le bit de rang n à 1.
eTwiStatus eTwiSend(xTwiFrame *pxFrame)
Emission d'un message en mode maître.
int8_t xTwiId
Identifiant d'une trame.
eTwiStatus eTwiMem16Write(uint16_t usMemAddr, xTwiFrame *pxFrame)
Ecriture dans une mémoire I2C (Adresse mémoire 16 bits)
uint8_t xTwiDeviceAddr
Adresse d'un circuit sur le bus I2C.