Skip to content
Snippets Groups Projects
Commit 7343085d authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

Blinkenrocket: Configurable I2C speed

parent 720d72a7
No related branches found
No related tags found
No related merge requests found
...@@ -27,6 +27,10 @@ else ifneq ($(findstring i2c,${arch_drivers}), ) ...@@ -27,6 +27,10 @@ else ifneq ($(findstring i2c,${arch_drivers}), )
TARGETS += src/arch/blinkenrocket/driver/i2c.cc TARGETS += src/arch/blinkenrocket/driver/i2c.cc
endif endif
ifneq (${i2c_freq}, )
COMMON_FLAGS += -DF_I2C=${i2c_freq}
endif
OBJECTS = ${TARGETS:.cc=.o} OBJECTS = ${TARGETS:.cc=.o}
.cc.o: .cc.o:
......
...@@ -3,6 +3,10 @@ ...@@ -3,6 +3,10 @@
#include <avr/io.h> #include <avr/io.h>
#include <avr/interrupt.h> #include <avr/interrupt.h>
#ifndef F_I2C
#define F_I2C 100000UL
#endif
inline void await_twint(unsigned char twcr_values) inline void await_twint(unsigned char twcr_values)
{ {
#if 1 #if 1
...@@ -27,7 +31,7 @@ static signed char i2c_start_read(unsigned char addr) ...@@ -27,7 +31,7 @@ static signed char i2c_start_read(unsigned char addr)
if (!(TWSR & 0x18)) // 0x08 == START ok, 0x10 == RESTART ok if (!(TWSR & 0x18)) // 0x08 == START ok, 0x10 == RESTART ok
return -1; return -1;
// Note: An adress with read bit set ("... | 1") causes the TWI momodule // Note: An adress with read bit set ("... | 1") causes the TWI module
// to switch to Master Receive mode // to switch to Master Receive mode
TWDR = (addr << 1) | 1; TWDR = (addr << 1) | 1;
await_twint(_BV(TWEN)); await_twint(_BV(TWEN));
...@@ -106,7 +110,7 @@ static signed char i2c_receive(uint8_t len, uint8_t *data) ...@@ -106,7 +110,7 @@ static signed char i2c_receive(uint8_t len, uint8_t *data)
signed char I2C::setup() signed char I2C::setup()
{ {
TWSR = 0; TWSR = 0;
TWBR = ((F_CPU / 100000UL) - 16) / 2; TWBR = ((F_CPU / F_I2C) - 16) / 2;
return 0; return 0;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment