comparison Small_CPU/Src/scheduler.c @ 942:06aaccaf2e02 Evo_2_23

Power down gnss module during dive: The gnss modul will now be send to powerdown at the start of the dive. After end of dive the module returns to normal operation. For development / test purpose a new simulated dive profile has been added.
author Ideenmodellierer
date Mon, 16 Dec 2024 19:09:00 +0100
parents 4a406e873a95
children
comparison
equal deleted inserted replaced
941:6d8ae8fbccf5 942:06aaccaf2e02
167 global.dataSendToMaster.footer.checkCode[2] = 0xE3; 167 global.dataSendToMaster.footer.checkCode[2] = 0xE3;
168 global.dataSendToMaster.footer.checkCode[1] = 0xE2; 168 global.dataSendToMaster.footer.checkCode[1] = 0xE2;
169 global.dataSendToMaster.footer.checkCode[0] = 0xE1; 169 global.dataSendToMaster.footer.checkCode[0] = 0xE1;
170 global.dataSendToMaster.sensorErrors = 0; 170 global.dataSendToMaster.sensorErrors = 0;
171 171
172 global.dataSendToMaster.data[0].gnssInfo.coord.fLat = 0.0;
173 global.dataSendToMaster.data[0].gnssInfo.coord.fLon = 0.0;
174 global.dataSendToMaster.data[0].gnssInfo.fixType = 0;
175 global.dataSendToMaster.data[0].gnssInfo.numSat = 0;
176
172 global.sync_error_count = 0; 177 global.sync_error_count = 0;
173 global.check_sync_not_running = 0; 178 global.check_sync_not_running = 0;
174 179
175 global.deviceDataSendToMaster.RTE_VERSION_high = firmwareVersionHigh();//RTE_VERSION_HIGH; 180 global.deviceDataSendToMaster.RTE_VERSION_high = firmwareVersionHigh();//RTE_VERSION_HIGH;
176 global.deviceDataSendToMaster.RTE_VERSION_low = firmwareVersionLow();//RTE_VERSION_LOW; 181 global.deviceDataSendToMaster.RTE_VERSION_low = firmwareVersionLow();//RTE_VERSION_LOW;
523 { 528 {
524 lasttick = HAL_GetTick(); 529 lasttick = HAL_GetTick();
525 ticksdiff = time_elapsed_ms(Scheduler.tickstart,lasttick); 530 ticksdiff = time_elapsed_ms(Scheduler.tickstart,lasttick);
526 531
527 externalInterface_HandleUART(); 532 externalInterface_HandleUART();
533 #ifdef ENABLE_GPIO_V2
534 UART6_HandleUART();
535 #endif
528 if(ticksdiff >= Scheduler.counterSPIdata100msec * 100 + 10) 536 if(ticksdiff >= Scheduler.counterSPIdata100msec * 100 + 10)
529 { 537 {
530 if(SPI_Evaluate_RX_Data()!=0) /* did we receive something ? */ 538 if(SPI_Evaluate_RX_Data()!=0) /* did we receive something ? */
531 { 539 {
532 Scheduler.counterSPIdata100msec++; 540 Scheduler.counterSPIdata100msec++;
1117 HAL_Delay(2000); 1125 HAL_Delay(2000);
1118 #else 1126 #else
1119 RTC_StopMode_2seconds(); 1127 RTC_StopMode_2seconds();
1120 #endif 1128 #endif
1121 1129
1122
1123
1124 if(global.mode == MODE_SLEEP) 1130 if(global.mode == MODE_SLEEP)
1125 secondsCount += 2; 1131 secondsCount += 2;
1126 1132
1127 externalInterface_InitPower33(); 1133 externalInterface_InitPower33();
1128 MX_I2C1_Init(); 1134 MX_I2C1_Init();
1189 { 1195 {
1190 GPIO_GPS_OFF(); 1196 GPIO_GPS_OFF();
1191 GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; 1197 GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
1192 GPIO_InitStruct.Speed = GPIO_SPEED_LOW; 1198 GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
1193 GPIO_InitStruct.Pull = GPIO_NOPULL; 1199 GPIO_InitStruct.Pull = GPIO_NOPULL;
1194 GPIO_InitStruct.Pin = GPIO_PIN_All ^ (GPS_POWER_CONTROL_PIN | GPS_BCKP_CONTROL_PIN); 1200 GPIO_InitStruct.Pin = GPIO_PIN_All ^ (GPS_POWER_CONTROL_PIN);
1201 HAL_GPIO_Init( GPIOB, &GPIO_InitStruct);
1202
1203 uartGnss_SetState(UART_GNSS_INIT);
1204 }
1205 }
1206 else
1207 {
1208 if(global.lifeData.battery_voltage < 3.5) /* switch off backup voltage if battery gets low */
1209 {
1210 GPIO_GPS_BCKP_OFF();
1211 GPIO_InitStruct.Pin = GPIO_PIN_All ^ (GPS_BCKP_CONTROL_PIN);
1195 HAL_GPIO_Init( GPIOB, &GPIO_InitStruct); 1212 HAL_GPIO_Init( GPIOB, &GPIO_InitStruct);
1196 __HAL_RCC_GPIOB_CLK_DISABLE(); 1213 __HAL_RCC_GPIOB_CLK_DISABLE();
1197 uartGnss_SetState(UART_GNSS_INIT);
1198 } 1214 }
1199 } 1215 }
1200 #endif 1216 #endif
1201 } 1217 }
1202 while(global.mode == MODE_SLEEP); 1218 while(global.mode == MODE_SLEEP);
1204 scheduleUpdateLifeData(-1); 1220 scheduleUpdateLifeData(-1);
1205 clearDecoNow = 0; 1221 clearDecoNow = 0;
1206 setButtonsNow = 0; 1222 setButtonsNow = 0;
1207 reinitGlobals(); 1223 reinitGlobals();
1208 ReInit_battery_charger_status_pins(); 1224 ReInit_battery_charger_status_pins();
1209 1225 #ifdef ENABLE_GPIO_V2
1210 if(deepSleepCntDwn == 0) 1226 if(deepSleepCntDwn == 0)
1211 { 1227 {
1212 GPIO_GNSS_Init(); 1228 GPIO_GNSS_Init();
1213 } 1229 }
1230 #endif
1214 } 1231 }
1215 1232
1216 1233
1217 1234
1218 /* Private functions ---------------------------------------------------------*/ 1235 /* Private functions ---------------------------------------------------------*/
1770 global.dataSendToMaster.boolADCO2Data |= boolCO2Buffer; 1787 global.dataSendToMaster.boolADCO2Data |= boolCO2Buffer;
1771 } 1788 }
1772 1789
1773 void copyGNSSdata(void) 1790 void copyGNSSdata(void)
1774 { 1791 {
1775 global.dataSendToMaster.data[0].gnssInfo.fLat = GNSS_Handle.fLat; 1792 global.dataSendToMaster.data[0].gnssInfo.coord.fLat = GNSS_Handle.fLat;
1776 global.dataSendToMaster.data[0].gnssInfo.fLon = GNSS_Handle.fLon; 1793 global.dataSendToMaster.data[0].gnssInfo.coord.fLon = GNSS_Handle.fLon;
1777 global.dataSendToMaster.data[0].gnssInfo.fixType = GNSS_Handle.fixType; 1794 global.dataSendToMaster.data[0].gnssInfo.fixType = GNSS_Handle.fixType;
1778 global.dataSendToMaster.data[0].gnssInfo.numSat = GNSS_Handle.numSat; 1795 global.dataSendToMaster.data[0].gnssInfo.numSat = GNSS_Handle.numSat;
1779 global.dataSendToMaster.data[0].gnssInfo.alive = GNSS_Handle.alive; 1796 global.dataSendToMaster.data[0].gnssInfo.alive = GNSS_Handle.alive;
1780 1797
1781 memcpy(&global.dataSendToMaster.data[0].gnssInfo.signalQual,&GNSS_Handle.statSat, sizeof(GNSS_Handle.statSat)); 1798 memcpy(&global.dataSendToMaster.data[0].gnssInfo.signalQual,&GNSS_Handle.statSat, sizeof(GNSS_Handle.statSat));