i2c_init update to work with atmega32a boards (#5562)
* On i2c_init, enable two wire interface, twi interrupt, and slave address ACK along with pull up resistors. * thanks to some testing by drashna, we know that setting TWI doesn't work for all boards. Putting the new code into an ifdef block
This commit is contained in:
		
							parent
							
								
									2ffa4798a4
								
							
						
					
					
						commit
						410984486b
					
				
					 1 changed files with 12 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -18,6 +18,18 @@
 | 
			
		|||
void i2c_init(void) {
 | 
			
		||||
  TWSR = 0; /* no prescaler */
 | 
			
		||||
  TWBR = (uint8_t)TWBR_val;
 | 
			
		||||
 | 
			
		||||
  #ifdef __AVR_ATmega32A__
 | 
			
		||||
  // set pull-up resistors on I2C bus pins
 | 
			
		||||
  PORTC |= 0b11;
 | 
			
		||||
 | 
			
		||||
  // enable TWI (two-wire interface)
 | 
			
		||||
  TWCR |= (1 << TWEN);
 | 
			
		||||
 | 
			
		||||
  // enable TWI interrupt and slave address ACK
 | 
			
		||||
  TWCR |= (1 << TWIE);
 | 
			
		||||
  TWCR |= (1 << TWEA);
 | 
			
		||||
  #endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
i2c_status_t i2c_start(uint8_t address, uint16_t timeout) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue