expander.h 1022 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #pragma once
  2. #include <stdint.h>
  3. #include "matrix.h"
  4. #define MCP23017
  5. #define MCP23017_A0 0
  6. #define MCP23017_A1 0
  7. #define MCP23017_A2 0
  8. #ifdef MCP23017
  9. #define EXPANDER_ADDR ((0x20|(MCP23017_A0<<0)|(MCP23017_A1<<1)|(MCP23017_A2<<2)) << 1)
  10. enum EXPANDER_REG_BANK0 {
  11. EXPANDER_REG_IODIRA = 0,
  12. EXPANDER_REG_IODIRB,
  13. EXPANDER_REG_IPOLA,
  14. EXPANDER_REG_IPOLB,
  15. EXPANDER_REG_GPINTENA,
  16. EXPANDER_REG_GPINTENB,
  17. EXPANDER_REG_DEFVALA,
  18. EXPANDER_REG_DEFVALB,
  19. EXPANDER_REG_INTCONA,
  20. EXPANDER_REG_INTCONB,
  21. EXPANDER_REG_IOCONA,
  22. EXPANDER_REG_IOCONB,
  23. EXPANDER_REG_GPPUA,
  24. EXPANDER_REG_GPPUB,
  25. EXPANDER_REG_INTFA,
  26. EXPANDER_REG_INTFB,
  27. EXPANDER_REG_INTCAPA,
  28. EXPANDER_REG_INTCAPB,
  29. EXPANDER_REG_GPIOA,
  30. EXPANDER_REG_GPIOB,
  31. EXPANDER_REG_OLATA,
  32. EXPANDER_REG_OLATB
  33. };
  34. #endif
  35. void expander_init(void);
  36. void expander_scan(void);
  37. void expander_read_cols(void);
  38. uint8_t expander_get_col(uint8_t col);
  39. matrix_row_t expander_read_row(void);
  40. void expander_unselect_rows(void);
  41. void expander_select_row(uint8_t row);