Part Number: LAUNCHXL-CC26X2R1
Hi TI,
Below I have attached the CODE for enabling 5 LED's based on the value received in the function "SpeedIndicator_PresentStateIndication" But I see it is not working , maximum input to the function is 100.
I have enabled pins LED_ 1 - DIO25, LED_ 2 - DIO26, LED_ 3 - DIO27, LED_ 4 - DIO28, LED_ 5 - DIO29 using syscfg and enabled as dynamic mode.
Is there anything to add in the code please mention it .
#include "SpeedIndicator.h"
#include <unistd.h>
#include <ti/drivers/PIN.h>
#include "ti_drivers_config.h"
#include "stdint.h"
#include <ti/drivers/GPIO.h>
static void SpeedIndicator_ClearAllIndication(void);
static void SpeedIndicator_SetHigh(uint16_t bitSet);
static uint16_t SpeedIndicator_Level(uint16_t Div,uint16_t d);
//Initializing all the 5 pins
PIN_Config ledPinTable[] = {
CONFIG_LED_1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
CONFIG_LED_2 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
CONFIG_LED_3 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
CONFIG_LED_4 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
CONFIG_LED_5 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
PIN_TERMINATE
};
/*********************************************************************
* @fn SpeedIndicator_ClearAllIndication
*
* @brief Setting all the LED's to LOW
*
* @param none
*
* @return none
*
*/
static void SpeedIndicator_ClearAllIndication(void)
{
GPIO_init();
GPIO_write(CONFIG_LED_1, CONFIG_GPIO_LED_OFF);
GPIO_write(CONFIG_LED_2, CONFIG_GPIO_LED_OFF);
GPIO_write(CONFIG_LED_3, CONFIG_GPIO_LED_OFF);
GPIO_write(CONFIG_LED_4, CONFIG_GPIO_LED_OFF);
GPIO_write(CONFIG_LED_5, CONFIG_GPIO_LED_OFF);
}
/*********************************************************************
* @fn SpeedIndicator_PresentState
*
* @brief Indicating the Present State interms of LED's
*
* @param PerBatSoc
*
* @return none
*
*/
void SpeedIndicator_PresentStateIndication(uint8_t PerBatSoc)
{
uint16_t bitSet = SpeedIndicator_Level(PerBatSoc,20);
SpeedIndicator_ClearAllIndication();
SpeedIndicator_SetHigh(bitSet);
}
/*********************************************************************
* @fn SpeedIndicator_PresentState
*
* @brief Indicating the Present State interms of LED's
*
* @param PerBatSoc
*
* @return none
*
*/
static void SpeedIndicator_SetHigh(uint16_t bitSet)
{
switch (bitSet)
{
case 5:
GPIO_write(CONFIG_LED_1, CONFIG_GPIO_LED_ON);
GPIO_write(CONFIG_LED_2, CONFIG_GPIO_LED_ON);
GPIO_write(CONFIG_LED_3, CONFIG_GPIO_LED_ON);
GPIO_write(CONFIG_LED_4, CONFIG_GPIO_LED_ON);
GPIO_write(CONFIG_LED_5, CONFIG_GPIO_LED_ON);
break;
case 4:
GPIO_write(CONFIG_LED_2, CONFIG_GPIO_LED_ON);
GPIO_write(CONFIG_LED_3, CONFIG_GPIO_LED_ON);
GPIO_write(CONFIG_LED_4, CONFIG_GPIO_LED_ON);
GPIO_write(CONFIG_LED_5, CONFIG_GPIO_LED_ON);
break;
case 3:
GPIO_write(CONFIG_LED_3, CONFIG_GPIO_LED_ON);
GPIO_write(CONFIG_LED_4, CONFIG_GPIO_LED_ON);
GPIO_write(CONFIG_LED_5, CONFIG_GPIO_LED_ON);
break;
case 2:
GPIO_write(CONFIG_LED_4, CONFIG_GPIO_LED_ON);
GPIO_write(CONFIG_LED_5, CONFIG_GPIO_LED_ON);
break;
case 1:
GPIO_write(CONFIG_LED_5, CONFIG_GPIO_LED_ON);
break;
default:
break;
}
}
static uint16_t SpeedIndicator_Level(uint16_t Div,uint16_t d)
{
uint16_t quotient = 0;
while (Div >= d) {
Div = Div - d;
++quotient;
}
return quotient;
}