13#define I2C_RX_TX_TIMEOUT (5)
14#define I2C_START_TIMEOUT (20)
16#define NUM_I2C_MODULES (6)
50 volatile i2cstruct *i2cRegs;
53 inline bool busBusy() {
return (0x20 & i2cRegs->i2sr) == 0x20; };
54 inline bool slaveMode() {
return (0x20 & i2cRegs->i2cr) == 0x00; };
55 inline bool arbLost() {
return (0x10 & i2cRegs->i2sr) == 0x10; };
56 inline bool addressedAsSlave() {
return (0x40 & i2cRegs->i2sr) == 0x40; };
57 inline bool addressedSlaveTX() {
return (0x04 & i2cRegs->i2sr) == 0x04; };
58 inline bool transmitting() {
return (0x10 & i2cRegs->i2cr) == 0x10; };
59 inline bool receivedRXAck() {
return (0x01 & i2cRegs->i2sr) == 0x00; };
60 inline bool sentRXAck() {
return (0x08 & i2cRegs->i2cr) == 0x00; };
61 inline void setAck() { i2cRegs->i2cr &= 0xF7; };
62 inline void setRX() { i2cRegs->i2cr &= 0xEF; };
63 inline void setRepeatStart() { i2cRegs->i2cr |= 0x04; };
64 inline void clrArbLost() { i2cRegs->i2sr &= 0xEF; };
65 inline void clrIntFlag() { i2cRegs->i2sr &= 0xFD; };
66 inline void sendStop() { i2cRegs->i2cr &= 0xDF; }
68 inline void sendData(uint8_t data) { i2cRegs->i2dr = data; };
69 inline void setFreq(uint8_t freq) { i2cRegs->i2fdr = freq; }
72 inline void setTX() { i2cRegs->i2cr |= 0x10; };
73 inline void setNoAck() { i2cRegs->i2cr |= 0x08; };
74 inline uint8_t readData() {
return i2cRegs->i2dr; };
77 volatile e_i2cstatus status;
79 void init(uint8_t moduleNum, uint8_t freqdiv);
80 void stop(uint32_t ticks_to_wait);
83 void read8(uint8_t *val, uint32_t ticks_to_wait);
84 void write8(uint8_t, uint32_t);
85 void start(uint8_t,
bool, uint32_t);
86 void restart(uint8_t,
bool, uint32_t);
87 volatile bool bLastTX;
89 volatile bool bRestarted;
92extern i2c_master
I2C[NUM_I2C_MODULES];
I2C Peripheral Class.
Definition i2c.h:213
void init()
System initialization. Ideally called at the beginning of all applications, since the easiest Recover...
NetBurner Real-Time Operating System (NBRTOS) API.
Semaphores are used to control access to shared resources or or to communicate between tasks in a mul...
Definition nbrtos.h:411