Loading src/arch/msp430fr5969lp/driver/i2c.cc +11 −2 Original line number Diff line number Diff line Loading @@ -8,16 +8,25 @@ volatile unsigned short old_ifg = 0; #if (F_CPU / F_I2C) < 45 inline void await_i2c_int(unsigned int ie_flags, unsigned int ifg_flags) { while (!(UCB0IFG & ifg_flags)) ; if (UCB0IFG & (UCNACKIFG | UCCLTOIFG)) { UCB0IFG &= ~(UCNACKIFG | UCCLTOIFG); } } #else inline void await_i2c_int(unsigned int ie_flags, unsigned int ifg_flags) { UCB0IFG = 0; old_ifg = 0; UCB0IE = ie_flags; while (!(old_ifg & ifg_flags)) { do { arch.idle(); } } while (!(old_ifg & ifg_flags)); UCB0IE = 0; } #endif signed char I2C::setup() { Loading src/driver/soft_i2c.cc +4 −4 Original line number Diff line number Diff line Loading @@ -20,10 +20,10 @@ volatile unsigned char timer_done = 0; #define SCL_HIGH gpio.input(scl, 1) #define SCL_LOW gpio.output(scl, 0) #elif SOFTI2C_PULLUP_EXTERNAL #define SDA_HIGH do { gpio.input(sda); gpio.write(sda_pull, 1); } while (0) #define SDA_LOW do { gpio.write(sda_pull, 0); gpio.output(sda); } while (0) #define SCL_HIGH do { gpio.input(scl); gpio.write(scl_pull, 1); } while (0) #define SCL_LOW do { gpio.write(scl_pull, 0); gpio.output(scl); } while (0) #define SDA_HIGH { gpio.input(sda); gpio.write(sda_pull, 1); } #define SDA_LOW { gpio.write(sda_pull, 0); gpio.output(sda); } #define SCL_HIGH { gpio.input(scl); gpio.write(scl_pull, 1); } #define SCL_LOW { gpio.write(scl_pull, 0); gpio.output(scl); } #else /* !SOFTI2C_PULLUP_{INTERNAL,EXTERNAL} */ #define SDA_HIGH gpio.input(sda) #define SDA_LOW gpio.output(sda) Loading Loading
src/arch/msp430fr5969lp/driver/i2c.cc +11 −2 Original line number Diff line number Diff line Loading @@ -8,16 +8,25 @@ volatile unsigned short old_ifg = 0; #if (F_CPU / F_I2C) < 45 inline void await_i2c_int(unsigned int ie_flags, unsigned int ifg_flags) { while (!(UCB0IFG & ifg_flags)) ; if (UCB0IFG & (UCNACKIFG | UCCLTOIFG)) { UCB0IFG &= ~(UCNACKIFG | UCCLTOIFG); } } #else inline void await_i2c_int(unsigned int ie_flags, unsigned int ifg_flags) { UCB0IFG = 0; old_ifg = 0; UCB0IE = ie_flags; while (!(old_ifg & ifg_flags)) { do { arch.idle(); } } while (!(old_ifg & ifg_flags)); UCB0IE = 0; } #endif signed char I2C::setup() { Loading
src/driver/soft_i2c.cc +4 −4 Original line number Diff line number Diff line Loading @@ -20,10 +20,10 @@ volatile unsigned char timer_done = 0; #define SCL_HIGH gpio.input(scl, 1) #define SCL_LOW gpio.output(scl, 0) #elif SOFTI2C_PULLUP_EXTERNAL #define SDA_HIGH do { gpio.input(sda); gpio.write(sda_pull, 1); } while (0) #define SDA_LOW do { gpio.write(sda_pull, 0); gpio.output(sda); } while (0) #define SCL_HIGH do { gpio.input(scl); gpio.write(scl_pull, 1); } while (0) #define SCL_LOW do { gpio.write(scl_pull, 0); gpio.output(scl); } while (0) #define SDA_HIGH { gpio.input(sda); gpio.write(sda_pull, 1); } #define SDA_LOW { gpio.write(sda_pull, 0); gpio.output(sda); } #define SCL_HIGH { gpio.input(scl); gpio.write(scl_pull, 1); } #define SCL_LOW { gpio.write(scl_pull, 0); gpio.output(scl); } #else /* !SOFTI2C_PULLUP_{INTERNAL,EXTERNAL} */ #define SDA_HIGH gpio.input(sda) #define SDA_LOW gpio.output(sda) Loading