#include "i2c.h" void init_i2c(void) { // Initialize the control A register TWI0.CTRLA = TWI_INPUTLVL_I2C_gc // I2C voltage transition level | TWI_SDASETUP_4CYC_gc // Four clock cycles setup time | TWI_SDAHOLD_50NS_gc // 50ns SDA hold time | TWI_FMPEN_OFF_gc // Standard SPI timing ; // The device's slave address TWI0.SADDR = 0x42; // Enable acting as a slave TWI0.SCTRLA = TWI_DIEN_bm // Enable data interrupt | TWI_PIEN_bm // Enable stop flag interrupt | TWI_SMEN_bm // Enable smart mode | TWI_ENABLE_bm // Enable acting as a slave ; } // TODO: Figure out which interrupt does what // Interrupt vector ISR(TWI0_TWIS_vect) { asm('nop'); } // Interrupt vector ISR(TWI0_TWIM_vect) { asm('nop'); }