Go to the source code of this file.
Defines | |
#define | TWGO (_BV(TWINT) | _BV(TWEN) | _BV(TWIE)) |
Functions | |
int | TwMasterTransact (uint8_t sla, CONST void *txdata, uint16_t txlen, void *rxdata, uint16_t rxsiz, uint32_t tmo) |
Transmit and/or receive data as a master. | |
int | TwMasterError (void) |
Get last master mode error. | |
int | TwSlaveListen (uint8_t *sla, void *rxdata, uint16_t rxsiz, uint32_t tmo) |
Listen for incoming data from a master. | |
int | TwSlaveRespond (void *txdata, uint16_t txlen, uint32_t tmo) |
Send response to a master. | |
int | TwSlaveError (void) |
Get last slave mode error. | |
int | TwIOCtl (int req, void *conf) |
Perform TWI control functions. | |
int | TwInit (uint8_t sla) |
Initialize TWI interface. | |
Variables | |
HANDLE | tw_mm_mutex |
HANDLE | tw_mm_que |
HANDLE | tw_sr_que |
HANDLE | tw_st_que |
#define TWGO (_BV(TWINT) | _BV(TWEN) | _BV(TWIE)) |
int TwMasterTransact | ( | uint8_t | sla, | |
CONST void * | txdata, | |||
uint16_t | txlen, | |||
void * | rxdata, | |||
uint16_t | rxsiz, | |||
uint32_t | tmo | |||
) |
Transmit and/or receive data as a master.
The two-wire serial interface must have been initialized by calling TwInit() before this function can be used.
sla | Slave address of the destination. This slave address must be specified as a 7-bit address. For example, the PCF8574A may be configured to slave addresses from 0x38 to 0x3F. | |
txdata | Points to the data to transmit. Ignored, if the number of data bytes to transmit is zero. | |
txlen | Number of data bytes to transmit. If zero, then the interface will not send any data to the slave device and will directly enter the master receive mode. | |
rxdata | Points to a buffer, where the received data will be stored. Ignored, if the maximum number of bytes to receive is zero. | |
rxsiz | Maximum number of bytes to receive. Set to zero, if no bytes are expected from the slave device. | |
tmo | Timeout in milliseconds. To disable timeout, set this parameter to NUT_WAIT_INFINITE. |
Definition at line 535 of file twif.c.
References _BV, inb, NutEnterCritical, NutEventPost(), NutEventWait(), NutExitCritical, NutSleep(), outb, SIGNALED, tw_mm_mutex, tw_mm_que, TWERR_IF_LOCKED, and TWERR_TIMEOUT.
int TwMasterError | ( | void | ) |
Get last master mode error.
You may call this function to determine the specific cause of an error after TwMasterTransact() failed.
Listen for incoming data from a master.
If this function returns without error, the bus is blocked. The caller must immediately process the request and return a response by calling TwSlaveRespond().
sla | Points to a byte variable, which receives the slave address sent by the master. This can be used by the caller to determine whether the the interface has been addressed by a general call or its individual address. | |
rxdata | Points to a data buffer where the received data bytes are stored. | |
rxsiz | Specifies the maximum number of data bytes to receive. | |
tmo | Timeout in milliseconds. To disable timeout, set this parameter to NUT_WAIT_INFINITE. |
Definition at line 653 of file twif.c.
References _BV, inb, NutEnterCritical, NutEventWait(), NutExitCritical, outb, SIGNALED, tw_sr_que, and TWERR_TIMEOUT.
Send response to a master.
This function must be called as soon as possible after TwSlaveListen() returned successfully, even if no data needs to be returned. Not doing so will completely block the bus.
txdata | Points to the data to transmit. Ignored, if the number of bytes to transmit is zero. | |
txlen | Number of data bytes to transmit. | |
tmo | Timeout in milliseconds. To disable timeout, set this parameter to NUT_WAIT_INFINITE. |
Definition at line 727 of file twif.c.
References _BV, inb, NutEnterCritical, NutEventWait(), NutExitCritical, outb, SIGNALED, tw_st_que, TWERR_TIMEOUT, and TWGO.
int TwSlaveError | ( | void | ) |
Get last slave mode error.
You may call this function to determine the specific cause of an error after TwSlaveListen() or TwSlaveRespond() failed.
int TwIOCtl | ( | int | req, | |
void * | conf | |||
) |
Perform TWI control functions.
This function is only available on ATmega128 systems.
req | Requested control function. May be set to one of the following constants:
| |
conf | Points to a buffer that contains any data required for the given control function or receives data from that function. |
Definition at line 830 of file twif.c.
References bit_is_set, cbi, inb, NutGetCpuClock(), outb, sbi, TWI_GETSLAVEADDRESS, TWI_GETSPEED, TWI_GETSTATUS, TWI_SETSLAVEADDRESS, TWI_SETSPEED, and TWI_SETSTATUS.
int TwInit | ( | uint8_t | sla | ) |
Initialize TWI interface.
The specified slave address is used only, if the local system is running as a slave. Anyway, care must be taken that it doesn't conflict with another connected device.
sla | Slave address, must be specified as a 7-bit address, always lower than 128. |
Definition at line 902 of file twif.c.
References _BV, NutEventPost(), NutRegisterIrqHandler(), outb, sig_2WIRE_SERIAL, tw_mm_mutex, TWI_SETSPEED, and TwIOCtl().
Definition at line 109 of file twif.c.
Referenced by TwInit(), TwMasterRegRead(), TwMasterRegWrite(), and TwMasterTransact().
Definition at line 110 of file twif.c.
Referenced by TwMasterRegRead(), TwMasterRegWrite(), and TwMasterTransact().