void Check_Boot() { if(Bootloader_En_Read() == 0) { Bootloadable_Load(); } }
/******************************************************************************* * Function Name: void processButtons( void ) ******************************************************************************** * * Summary: * This function looks at the state of each mechanical button and sets the I2C * register bits appropriatly. * * It also looks for bootloader entry which required both buttons held down while * the POT is moved by more than 1V. *******************************************************************************/ void processButtons(void) { /* Set min at 3.3 and max at 0.0 to guarantee they are beyond the actual range */ static float32 potMin = 3.3; static float32 potMax = 0.0; /* Read and update mechanical button state */ if(MB1_Read() == PRESSED) { LocData.buttonVal |= (BVAL_MB1_MASK); } else { LocData.buttonVal &= (~BVAL_MB1_MASK); } if(MB2_Read() == PRESSED) { LocData.buttonVal |= (BVAL_MB2_MASK); } else { LocData.buttonVal &= (~BVAL_MB2_MASK); } /* Update CapSense buttons if set to base board control */ if(capLedBase == true) { CBLED0_Write(!(LocData.ledVal & BVAL_B0_MASK)); CBLED1_Write(!(LocData.ledVal & BVAL_B1_MASK)); CBLED2_Write(!(LocData.ledVal & BVAL_B2_MASK)); CBLED3_Write(!(LocData.ledVal & BVAL_B3_MASK)); } /* Look for bootloader entry - both mechanical buttons held down and POT rotated at least 1V */ if((MB1_Read() == PRESSED) && (MB2_Read() == PRESSED)) { /* Check pot reading compared to stored min/max */ if(LocData.potVal < potMin) { potMin = LocData.potVal; } if(LocData.potVal > potMax) { potMax = LocData.potVal; } if((potMax - potMin) > 1.0) /* Pot moved more than 1V, time to bootload */ { Bootloadable_Load(); } } else /* Buttons not both pressed - reset POT range values */ { potMin = 3.3; potMax = 0.0; } }