There is a problem with i2c_stop_condition() in i2c.h in libmaple.
After setting CR1, it waits for the stop condition to occur after the last byte is received. Since this routine is called by _i2c_irq_handler() it has the effect of putting this polling loop inside the ISR, causing *all* interrupts to be blocked for the entire last byte of the transfer (about 30us in fast mode). This can have serious effects on other ISRs.
I2C ISR problem
(1 post) (1 voice)-
Posted 2 years ago #
Reply
You must log in to post.