sx60.c (808B)
1 #include "sx60.h" 2 #include "i2c_master.h" 3 4 5 bool i2c_initialized = 0; 6 uint8_t mcp23018_status = 0x20; 7 8 uint8_t init_mcp23018(void) { 9 mcp23018_status = 0x20; 10 11 /* I2C subsystem */ 12 13 if (i2c_initialized == 0) { 14 i2c_init(); // on pins D(1,0) 15 i2c_initialized = true; 16 _delay_ms(1000); 17 } 18 19 /* B Pins are Row, A pins are Columns 20 Set them to output */ 21 static uint8_t direction[2] = { 22 0b11111111, 23 0b00000000, 24 }; 25 static uint8_t pullup[2] = { 26 0b11111111, 27 0b00000000, 28 }; 29 30 mcp23018_status = i2c_write_register(I2C_ADDR, IODIRA, direction, 2, I2C_TIMEOUT); 31 if (mcp23018_status) return mcp23018_status; 32 33 mcp23018_status = i2c_write_register(I2C_ADDR, GPPUA, pullup, 2, I2C_TIMEOUT); 34 return mcp23018_status; 35 }