diff --git a/i2c.c b/i2c.c new file mode 100644 index 0000000..30cc81a --- /dev/null +++ b/i2c.c @@ -0,0 +1,60 @@ +#include +#include "i2c.h" + +void i2c_init(uint32_t bitrate) +{ + uint8_t prescaler_options[] = {1, 4, 16, 64}; + uint8_t prescaler_value = prescaler_options[TWSR & 0x03]; // 0x03 (hex) = 0b00000011 (bin) + TWBR = (uint8_t)((F_CPU / bitrate - 16) / (2 * prescaler_value)); +} + +void i2c_start(void) +{ + TWCR = (1< #include +#include "i2c.h" #include "led.h" +#define I2C_BITRATE 100000UL // 100kHz + int main() { + i2c_init(I2C_BITRATE); led_init(); sei();