/* * expander.h * k4be 2022 * License: BSD * * PCA9539/TCA9539 GPIO expander driver */ #ifndef EXPANDER_H_ #define EXPANDER_H_ #define P00 0 #define P01 1 #define P02 2 #define P03 3 #define P04 4 #define P05 5 #define P06 6 #define P07 7 #define P10 0 #define P11 1 #define P12 2 #define P13 3 #define P14 4 #define P15 5 #define P16 6 #define P17 7 #define EXP_PORT0 (128|0) #define EXP_PORT1 (128|1) #define CMD_PORT0_INPUT 0 #define CMD_PORT1_INPUT 1 #define CMD_PORT0_OUTPUT 2 #define CMD_PORT1_OUTPUT 3 #define CMD_PORT0_INV 4 #define CMD_PORT1_INV 5 #define CMD_PORT0_CONFIG 6 #define CMD_PORT1_CONFIG 7 #define EXPANDER_ADDR 0b1110100 // first address #define EXPANDER_COUNT 1 // number of expanders (contiguous addresses) extern unsigned char exp_output[EXPANDER_COUNT*2]; void expander_init(unsigned char addr, unsigned char p1in, unsigned char p2in); void expander_set_dir(unsigned char addr, unsigned char p1in, unsigned char p2in); unsigned int expander_read(unsigned char addr); unsigned int expander_read_byte(unsigned char addr, unsigned char reg); void expander_write(unsigned char addr); void expander_write_all(void); void expander_set_bit(unsigned char port, unsigned char val, unsigned char on); void expander_set_bit_no_send(unsigned char port, unsigned char val, unsigned char on); #endif /* EXPANDER_H_ */