void max7301::postSetup(const uint8_t csPin,const uint8_t haenAdrs,uint32_t spispeed){ #if defined (SPI_HAS_TRANSACTION) if (spispeed > 0) setSPIspeed(spispeed); #endif _cs = csPin; if (haenAdrs > 0x19 && haenAdrs < 0x28){//HAEN works between 0x20...0x27 _adrs = haenAdrs; _useHaen = 1; } else { _adrs = 0; _useHaen = 0; } _readCmd = (_adrs << 1) | 1; _writeCmd = _adrs << 1; //setup register values for this chip IOCON = 0x0A; IODIR = 0x00; GPPU = 0x0C; GPIO = 0x12; GPINTEN = 0x04; IPOL = 0x02; DEFVAL = 0x06; INTF = 0x0E; INTCAP = 0x10; OLAT = 0x14; INTCON = 0x08; }
void mcp23s08::postSetup(const uint8_t csPin,const uint8_t haenAdrs,uint32_t spispeed){ #if defined (SPI_HAS_TRANSACTION) if (spispeed > 0) setSPIspeed(spispeed); #endif _cs = csPin; if (haenAdrs >= 0x20 && haenAdrs <= 0x23){//HAEN works between 0x20...0x23 _adrs = haenAdrs; _useHaen = 1; } else { _adrs = 0; _useHaen = 0; } _readCmd = (_adrs << 1) | 1; _writeCmd = _adrs << 1; //setup register values for this chip IOCON = 0x05; IODIR = 0x00; GPPU = 0x06; GPIO = 0x09; GPINTEN = 0x02; IPOL = 0x01; DEFVAL = 0x03; INTF = 0x07; INTCAP = 0x08; OLAT = 0x0A; INTCON = 0x04; }
mcp23s17::mcp23s17(const uint8_t csPin,const uint8_t haenAdrs,uint32_t spispeed){ setSPIspeed(spispeed); postSetup(csPin,haenAdrs); }