Beispiel #1
0
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;
    }
}