You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
808 B

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