diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2018-08-16 09:14:56 +0200 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2018-08-16 09:14:56 +0200 | 
| commit | 7343085df78d0fabedcdd69b207b2c04962cf98a (patch) | |
| tree | 33f7e530f45253826512195df82f721d30033c9e /src/arch/blinkenrocket | |
| parent | 720d72a7dc083835475f6cd3e82a1800d43a6671 (diff) | |
Blinkenrocket: Configurable I2C speed
Diffstat (limited to 'src/arch/blinkenrocket')
| -rw-r--r-- | src/arch/blinkenrocket/Makefile.inc | 4 | ||||
| -rw-r--r-- | src/arch/blinkenrocket/driver/i2c.cc | 8 | 
2 files changed, 10 insertions, 2 deletions
diff --git a/src/arch/blinkenrocket/Makefile.inc b/src/arch/blinkenrocket/Makefile.inc index 1d99d0b..5a4259f 100644 --- a/src/arch/blinkenrocket/Makefile.inc +++ b/src/arch/blinkenrocket/Makefile.inc @@ -27,6 +27,10 @@ else ifneq ($(findstring i2c,${arch_drivers}), )  	TARGETS += src/arch/blinkenrocket/driver/i2c.cc  endif +ifneq (${i2c_freq}, ) +	COMMON_FLAGS += -DF_I2C=${i2c_freq} +endif +  OBJECTS = ${TARGETS:.cc=.o}  .cc.o: diff --git a/src/arch/blinkenrocket/driver/i2c.cc b/src/arch/blinkenrocket/driver/i2c.cc index 487c60e..df275ff 100644 --- a/src/arch/blinkenrocket/driver/i2c.cc +++ b/src/arch/blinkenrocket/driver/i2c.cc @@ -3,6 +3,10 @@  #include <avr/io.h>  #include <avr/interrupt.h> +#ifndef F_I2C +#define F_I2C 100000UL +#endif +  inline void await_twint(unsigned char twcr_values)  {  #if 1 @@ -27,7 +31,7 @@ static signed char i2c_start_read(unsigned char addr)  	if (!(TWSR & 0x18)) // 0x08 == START ok, 0x10 == RESTART ok  		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  	TWDR = (addr << 1) | 1;  	await_twint(_BV(TWEN)); @@ -106,7 +110,7 @@ static signed char i2c_receive(uint8_t len, uint8_t *data)  signed char I2C::setup()  {  	TWSR = 0; -	TWBR = ((F_CPU / 100000UL) - 16) / 2; +	TWBR = ((F_CPU / F_I2C) - 16) / 2;  	return 0;  }  | 
