uint8_t i2c_start(uint8_t address)
{
// reset TWI control register
- //TWCR = 0;
+ TWCR = 0;
// transmit START condition
TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
// wait for end of transmission
/* fix space cadet rollover issue */
#define DISABLE_SPACE_CADET_ROLLOVER
-// #define RGB_MIDI
-#define RGBW_BB_TWI
+// #define RGBW_BB_TWI
-#define RGBW 1
+// #define RGBW 1
/* "debounce" is measured in keyboard scans. Some users reported
* needing values as high as 15, which was at the time around 50ms.
// sreg_prev=SREG;
// cli();
- // if (i2c_initialized == 0) {
- // i2c_init(); // on pins D(1,0)
- // i2c_initialized = true;
- // _delay_ms(1000);
- // }
- i2c_init(); // on pins D(1,0)
- _delay_ms(1000);
+ if (i2c_initialized == 0) {
+ i2c_init(); // on pins D(1,0)
+ i2c_initialized = true;
+ _delay_ms(1000);
+ }
+ // i2c_init(); // on pins D(1,0)
+ // _delay_ms(1000);
// set pin direction
// - unused : input : 1
static void unselect_rows(void);
static void select_row(uint8_t row);
-// static uint8_t mcp23018_reset_loop;
-static uint16_t mcp23018_reset_loop;
+static uint8_t mcp23018_reset_loop;
+// static uint16_t mcp23018_reset_loop;
#ifdef DEBUG_MATRIX_SCAN_RATE
uint32_t matrix_timer;
uint8_t matrix_scan(void)
{
if (mcp23018_status) { // if there was an error
- // if (++mcp23018_reset_loop == 0) {
- if (++mcp23018_reset_loop >= 1300) {
+ if (++mcp23018_reset_loop == 0) {
+ // if (++mcp23018_reset_loop >= 1300) {
// since mcp23018_reset_loop is 8 bit - we'll try to reset once in 255 matrix scans
// this will be approx bit more frequent than once per second
print("trying to reset mcp23018\n");