---vl6180dr

This commit is contained in:
Mysteo91
2023-08-01 14:38:32 +03:00
parent d1bcf7e360
commit 58fbffd0cf
6 changed files with 75 additions and 81 deletions

View File

@@ -72,12 +72,14 @@ void AppInit(void)
** \return none.
**
****************************************************************************************/
uint8_t temp[2];
uint32_t controlPinMs = 0;
uint8_t controlPinFlag = 0;
uint32_t controlPinDetectedMs = 0;
uint8_t updateMode = 0;
void zummerOff (void)
{
HAL_TIM_Base_Stop(&htimZummer);
@@ -107,75 +109,67 @@ void proximityMessureCompleted (void)
VL6180_RangeData_t VL6180_Range;
uint32_t waitAnsweredMs = 0;
uint32_t waitAnswerFromReaderMs = 0;
#define MAX_WAIT_ANSWER_FROM_GM60 10000
#define DATA_TIMEOUT 500
uint32_t lightStartMs = 0;
uint8_t uartTask (void) // return 0 if data received , otherwise return 1
{
if (waitAnsweredMs != 0)
if (waitAnswerFromReaderMs != 0)
{
if (HAL_GetTick() - waitAnsweredMs >= MAX_WAIT_ANSWER_FROM_GM60 )
if (HAL_GetTick() - waitAnswerFromReaderMs >= MAX_WAIT_ANSWER_FROM_GM60 )
{
HAL_GPIO_WritePin(READER_EN_GPIO_Port, READER_EN_Pin, GPIO_PIN_SET );
HAL_Delay(500);
HAL_GPIO_WritePin(READER_EN_GPIO_Port, READER_EN_Pin, GPIO_PIN_RESET );
waitAnsweredMs = 0;
waitAnswerFromReaderMs = 0;
}
}
if (!bridge.uart1Buf->is_empty() && (__HAL_UART_GET_FLAG(bridge.getHuart2(), UART_FLAG_TC))) {
waitAnsweredMs = HAL_GetTick();
temp[1] = bridge.uart1Buf->dequeue();
HAL_UART_Transmit_IT(bridge.getHuart2(), &temp[1], 1);
waitAnswerFromReaderMs = HAL_GetTick();
std::string_view stringView{bridge.uart1Buf->dequeue()};
if (stringView.find("FIRMWARE_UPDATE") != std::string::npos)
{
HAL_UART_DeInit(&huart1);
BootComInit();
zummerOff();
lightingOff();
}
else if (stringView.find("ZOOMER_ON") != std::string::npos)
{
zummerOn();
}
else if (stringView.find("ZOOMER_OFF") != std::string::npos)
{
zummerOff();
}
else
HAL_UART_Transmit_IT(bridge.getHuart2(), (const uint8_t*) std::string(stringView).c_str(), stringView.size());
return 0;
}
if (!bridge.uart2Buf->is_empty() && (__HAL_UART_GET_FLAG(bridge.getHuart1(), UART_FLAG_TC))) {
temp[2] = bridge.uart2Buf->dequeue();
HAL_UART_Transmit_IT(bridge.getHuart1(), &temp[2], 1);
waitAnswerFromReaderMs = 0;
std::string_view stringView{bridge.uart2Buf->dequeue()};
HAL_UART_Transmit_IT(bridge.getHuart1(), (const uint8_t*) std::string(stringView).c_str(), stringView.size());
return 0;
}
return 1;
}
void AppTask(void)
{
if (!updateMode) {
if (uartTask() == 0)
{
}
uartTask();
if (HAL_GetTick() - lightStartMs >= 10000 && lightStartMs > 0)
{
lightStartMs = 0;
lightingOff();
}
if (HAL_GPIO_ReadPin(CONTROL_PIN_GPIO_Port, CONTROL_PIN_Pin) == GPIO_PIN_RESET && controlPinFlag == 0) {
controlPinDetectedMs = HAL_GetTick();
controlPinFlag = 1;
} else if (controlPinFlag == 1 && HAL_GPIO_ReadPin(CONTROL_PIN_GPIO_Port, CONTROL_PIN_Pin) == GPIO_PIN_SET ) {
controlPinFlag = 0;
uint32_t ms = 0;
if (controlPinDetectedMs != 0)
ms = HAL_GetTick() - controlPinDetectedMs;
controlPinDetectedMs = 0;
if (ms >= 5000 && ms < 5200) {
////////Update mode
HAL_UART_DeInit(&huart1);
BootComInit();
zummerOff();
lightingOff();
} else if (ms >= 100 && ms < 150) {
zummerOn();
//////ZUMMER ON
} else if (ms >= 200 && ms < 250) {
zummerOff();
//////ZUMMER OFF
}
}
if (bridge.uart1Buf->is_empty() && bridge.uart2Buf->is_empty())
{
if (proximityCompleteMessure == 1)
@@ -201,7 +195,6 @@ void AppTask(void)
/*** end of AppTask ***/
/*********************************** end of app.c **************************************/
//////////// FINALLY NEED TO UNCOMMENT BootComCheckActivationRequest and BootComInit for success firmwaare update from HOST