I2CRTOS Driver by Helmut Schmücker. Removed included mbed-rtos library to prevent multiple definition. Make sure to include mbed-rtos library in your program!
Fork of I2cRtosDriver by
Diff: I2CDriver.cpp
- Revision:
- 7:04824382eafb
- Parent:
- 6:5b98c902a659
- Child:
- 8:5be85bd4c5ba
--- a/I2CDriver.cpp Sat Apr 20 20:06:44 2013 +0000 +++ b/I2CDriver.cpp Sun Apr 28 15:08:04 2013 +0000 @@ -2,10 +2,13 @@ #include "i2c_api.h" #include "error.h" +#include "DigitalOut.h" + using namespace mbed; using namespace rtos; -//#define I2C_ISR_DRV_SIG (1<<7) +DigitalOut osci(p12); + #define DRV_USR_SIG (1<<6) const PinName I2CDriver::c_sdas[] = {p9,p28}; @@ -16,19 +19,23 @@ #if defined(TARGET_LPC1768) void I2CDriver::channel_0_ISR() { + osci.write(1); osSignalSet( s_channels[0]->driver, I2C_ISR_DRV_SIG); NVIC_DisableIRQ(I2C1_IRQn); + osci.write(0); } #endif void I2CDriver::channel_1_ISR() { + osci.write(1); osSignalSet( s_channels[1]->driver, I2C_ISR_DRV_SIG); #if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) NVIC_DisableIRQ(I2C2_IRQn); #elif defined(TARGET_LPC11U24) NVIC_DisableIRQ(I2C_IRQn); #endif + osci.write(0); } @@ -105,6 +112,7 @@ tr.ret = i2c_read(&i2c, tr.adr, tr.dta, tr.len, (tr.rep?0:1)); break; case READ_MST_REG: + //printf("Disco\n"); tr.ret = i2c_write(&i2c, tr.adr,(const char*)&(tr.reg), 1, 0); if(tr.ret)break; // error => bail out tr.ret = i2c_read(&i2c, tr.adr, tr.dta, tr.len, (tr.rep?0:1));