qmk

Unnamed repository; edit this file 'description' to name the repository.
git clone git://git.z3bra.org/qmk.git
Log | Files | Refs | Submodules | LICENSE

commit 410984486b0a5c61174c6e4e5a3570f1b09f97dc
parent 2ffa4798a43682a73598c0b43d46abcca7cd6e83
Author: MechMerlin <30334081+mechmerlin@users.noreply.github.com>
Date:   Sat,  6 Apr 2019 17:30:48 -0700

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

Diffstat:
drivers/avr/i2c_master.c | 12++++++++++++
1 file changed, 12 insertions(+), 0 deletions(-)

diff --git a/drivers/avr/i2c_master.c b/drivers/avr/i2c_master.c @@ -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) {