diff options
| author | Barry Carter <barry.carter@robotfuzz.com> | 2012-09-03 17:45:58 +0100 | 
|---|---|---|
| committer | Barry Carter <barry.carter@robotfuzz.com> | 2012-09-03 17:45:58 +0100 | 
| commit | ef5c4b9f30da2f4b9a0edd4231e95b3ef8a88d43 (patch) | |
| tree | d47d10d04fb3edf45c0b3972c56afb297c956294 /libraries/Servo | |
| parent | 359117bc2009a9302884f61b0b359bb1723ee0bd (diff) | |
| download | librambutan-ef5c4b9f30da2f4b9a0edd4231e95b3ef8a88d43.tar.gz librambutan-ef5c4b9f30da2f4b9a0edd4231e95b3ef8a88d43.zip | |
- tx and rx callbacks for each module
 - Callbacks can be called after each read/write cycle or per byte
 - Each I2C module can have different callbacks
 - General call support also working
 - Supports master and slave at same time. Also works with multimaster
Usage:
i2c_msg msg;
char buffer[255];
main()
{
    i2c_slave_enable(I2C1, I2C_FAST_MODE | I2C_SLAVE_DUAL_ADDRESS | I2C_SLAVE_GENERAL_CALL | I2C_SLAVE_USE_RX_BUFFER); // init slave mode. Enables master too
    i2c_slave_attach_recv_handler(I2C1, pmsg, funcrx); // attach  receive handler
    i2c_slave_attach_transmit_handler(I2C1, pmsg, functx);   // attach transmit handler
    i2c_slave_set_own_address(I2C1, 0x10);    // set addresss 1
    i2c_slave_set_own_address2(I2C1, 0x20);   // set addresss 2
}
void funcrx(i2c_msg *msg)
{
    printf("length is %d.\n", msg->length);
    char return_data = msg0>data[0];
}
void functx(i2c_msg *dev)
{
    msg->data[0] = 0x01;
    msg->data[1] = 0x02;
    msg->data[2] = 0x03;
    msg->data[3] = 0x04;
    msg->data[4] = 0x05;
    msg->length = 5;
}
All code derived from datasheets and libmaple.
Signed-off-by:- Barry Carter <barry.carter@gmail.com>
Diffstat (limited to 'libraries/Servo')
0 files changed, 0 insertions, 0 deletions
