void Emutex_MAX9657::testLedOutputs(bool y) {
    if (!initialised)
        return;

    if (mode != MAX9657_MODE_CCLED)
        return;

    writeConfigReg(ADDR_DISP_TEST, y ? DISPLAY_TEST_ON : DISPLAY_TEST_OFF);
}
void Emutex_MAX9657::setLedIntensity(byte intensity) {
    if (!initialised)
        return;

    if (mode != MAX9657_MODE_CCLED)
        return;

    if (intensity >= 0 || intensity < 16)	
        writeConfigReg(ADDR_G_CURRENT, intensity);
}
Esempio n. 3
0
void Thermal_init(){
    I2C_init(THERMAL_I2C_ID,I2C_CLOCK_FREQ);
    count = 0;

    readEeprom();
    writeTrimmingValue();
    writeConfigReg();
    readConfigReg();
    configCalculationData();

    Timer_new(TIMER_THERMAL,READ_DELAY);
}
void Emutex_MAX9657::end() {
    writeConfigReg(ADDR_CONFIG, CONFIG_SHUTDOWN_ON);
}
void Emutex_MAX9657::begin() {
    if (!initialised) {
        // Configure the SPI bus
        pinMode(cs, OUTPUT);
        digitalWrite(cs, HIGH);
        SPI.begin();
        SPI.setDataMode(SPI_MODE0);
        SPI.setBitOrder(MSBFIRST);
        SPI.setClockDivider(SPI_CLOCK_DIV4); // Using 4MHz default, but MAX9657 can support up to 26MHz

        if (mode == MAX9657_MODE_CCLED) {
            // Configure all outputs as full-strength (24mA) constant-current LED drivers
            // NOTE 1: In this mode, the pins are open-drain current sink, for connection to LED cathodes
            // NOTE 2: If using a 5V supply, the datasheet recommends using an 82ohm resistor in series
            //         with each LED and limiting the current drive strength to 20mA. So we set default
            //         drive strength here at 19.5mA.  Use ::setIntensity(15) to change if needed.
            //         If using a 3.3V supply, 24mA drive strength can be used with no series resistors
            writeConfigReg(ADDR_G_CURRENT,  CURRENT_DRIVE_DFLT);
            writeConfigReg(ADDR_CFG_P7_4,   PORT_CFG_LED_DRIVER);
            writeConfigReg(ADDR_CFG_P11_8,  PORT_CFG_LED_DRIVER);
            writeConfigReg(ADDR_CFG_P15_12, PORT_CFG_LED_DRIVER);
            writeConfigReg(ADDR_CFG_P19_16, PORT_CFG_LED_DRIVER);
            writeConfigReg(ADDR_CFG_P23_20, PORT_CFG_LED_DRIVER);
            writeConfigReg(ADDR_CFG_P27_24, PORT_CFG_LED_DRIVER);
            writeConfigReg(ADDR_CFG_P31_28, PORT_CFG_LED_DRIVER);
        } else if (mode == MAX9657_MODE_OUTPUT) {
            writeConfigReg(ADDR_CFG_P7_4,   PORT_CFG_GPIO_OUT);
            writeConfigReg(ADDR_CFG_P11_8,  PORT_CFG_GPIO_OUT);
            writeConfigReg(ADDR_CFG_P15_12, PORT_CFG_GPIO_OUT);
            writeConfigReg(ADDR_CFG_P19_16, PORT_CFG_GPIO_OUT);
            writeConfigReg(ADDR_CFG_P23_20, PORT_CFG_GPIO_OUT);
            writeConfigReg(ADDR_CFG_P27_24, PORT_CFG_GPIO_OUT);
            writeConfigReg(ADDR_CFG_P31_28, PORT_CFG_GPIO_OUT);
        } else {
            /* MAX9657 Input Modes unsupported in current version */
            return;
        }

        initialised = true;
    }
    
    // Write default configuration (shutdown, global current control, no transition detect) 
    writeConfigReg(ADDR_CONFIG, CONFIG_SHUTDOWN_OFF);
}