From ef5c4b9f30da2f4b9a0edd4231e95b3ef8a88d43 Mon Sep 17 00:00:00 2001 From: Barry Carter Date: Mon, 3 Sep 2012 17:45:58 +0100 Subject: - 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 --- CREDITS | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'CREDITS') diff --git a/CREDITS b/CREDITS index 2b803b1..5918e01 100644 --- a/CREDITS +++ b/CREDITS @@ -81,3 +81,9 @@ W: http://sarup.dk/index.html N: Andy Scott ("xttocs") E: andy.g.scott@gmail.com D: LiquidCrystal library + +N: Barry Carter ("ginge") +E: barry.carter@gmail.com +D: Added i2C slave support +W: headfuzz.co.uk + \ No newline at end of file -- cgit v1.2.3