Fix Early return when Address NAK is received (#750)
The i2cWrite() function was returning to the app before the i2c transaction had completed. This caused the next Wire() call to return a I2C_ERROR_BUSY.
This commit is contained in:
		
							parent
							
								
									81f225a4c5
								
							
						
					
					
						commit
						7eff707ba6
					
				| @ -229,7 +229,7 @@ i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, bool addr_10bit, uint8_t * dat | |||||||
|             //Transmission did not finish and ACK_ERR is set
 |             //Transmission did not finish and ACK_ERR is set
 | ||||||
|             if(i2c->dev->int_raw.ack_err) { |             if(i2c->dev->int_raw.ack_err) { | ||||||
|                 log_w("Ack Error! Addr: %x", address >> 1); |                 log_w("Ack Error! Addr: %x", address >> 1); | ||||||
|                 while((i2c->dev->status_reg.bus_busy) && ((millis() - startAt)>50)); |                 while((i2c->dev->status_reg.bus_busy) && ((millis() - startAt)<50)); | ||||||
|                 I2C_MUTEX_UNLOCK(); |                 I2C_MUTEX_UNLOCK(); | ||||||
|                 return I2C_ERROR_ACK; |                 return I2C_ERROR_ACK; | ||||||
|             } |             } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user