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.

48 lines
1.0 KiB

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