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)) |
Definition at line 143 of file twif.c.
Referenced by TwSlaveRespond().
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().
Definition at line 111 of file twif.c.
Referenced by TwSlaveListen().
Definition at line 112 of file twif.c.
Referenced by TwSlaveRespond().