mikrokontrollersystemer-pro.../prosjekt.X/i2c.c

32 lines
843 B
C
Raw Normal View History

#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');
}