a failed attempt at hot-plugging

This commit is contained in:
Erez Zukerman 2018-05-24 09:18:36 -04:00
parent 682555faac
commit c0095710a7
2 changed files with 12 additions and 7 deletions

View file

@ -112,11 +112,14 @@ uint8_t init_mcp23018(void) {
// uint8_t sreg_prev; // uint8_t sreg_prev;
// sreg_prev=SREG; // sreg_prev=SREG;
// cli(); // cli();
if (i2c_initialized == 0) {
i2c_init(); // on pins D(1,0) // if (i2c_initialized == 0) {
i2c_initialized = true; // i2c_init(); // on pins D(1,0)
_delay_ms(1000); // i2c_initialized = true;
} // _delay_ms(1000);
// }
i2c_init(); // on pins D(1,0)
_delay_ms(1000);
// set pin direction // set pin direction
// - unused : input : 1 // - unused : input : 1

View file

@ -68,7 +68,8 @@ static void init_cols(void);
static void unselect_rows(void); static void unselect_rows(void);
static void select_row(uint8_t row); static void select_row(uint8_t row);
static uint8_t mcp23018_reset_loop; // static uint8_t mcp23018_reset_loop;
static uint16_t mcp23018_reset_loop;
#ifdef DEBUG_MATRIX_SCAN_RATE #ifdef DEBUG_MATRIX_SCAN_RATE
uint32_t matrix_timer; uint32_t matrix_timer;
@ -175,7 +176,8 @@ void debounce_report(matrix_row_t change, uint8_t row) {
uint8_t matrix_scan(void) uint8_t matrix_scan(void)
{ {
if (mcp23018_status) { // if there was an error if (mcp23018_status) { // if there was an error
if (++mcp23018_reset_loop == 0) { // 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 // 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 // this will be approx bit more frequent than once per second
print("trying to reset mcp23018\n"); print("trying to reset mcp23018\n");