mikrokontrollersystemer-pro.../prosjekt.X/i2c.c
Sebastian H. Gabrielli ac78f33c98 Create basic i2c skeleton with interrupts
I2C init function has been created.
Interrupts have been made for each I2C interrupt. Which interrupt does
what is currently unknown.

See #1
2024-03-06 14:58:49 +01:00

32 lines
843 B
C

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