Mercurial > public > ostc4
comparison Small_CPU/Src/baseCPU2.c @ 988:d9290c76b840 GasConsumption
OSTC4/5 joined code:
In the previous version code differences between OSTC4/5 were identified using the ENABLE_GPIO_V2 compiler switch. In the new version this is done using the display version as indicator which OSTC model is in used. Since this is detected by Firmware the information is forwarded from there to the RTE. This causes a little delay in the GPIO initialization but this applies only to the cold start of the RTE which should not happen very often.
author | ideenmodellierer |
---|---|
date | Sun, 06 Apr 2025 21:02:17 +0200 (5 weeks ago) |
parents | 81049905d829 |
children | d63584d6428d |
comparison
equal
deleted
inserted
replaced
984:41136649b90d | 988:d9290c76b840 |
---|---|
400 accelerator_init(); | 400 accelerator_init(); |
401 externalInterface_Init(); | 401 externalInterface_Init(); |
402 | 402 |
403 if (global.mode == MODE_BOOT) { | 403 if (global.mode == MODE_BOOT) { |
404 GPIO_Power_MainCPU_OFF(); | 404 GPIO_Power_MainCPU_OFF(); |
405 #ifdef ENABLE_GPIO_V2 | |
406 GPIO_LED_GREEN_ON(); | |
407 #endif | |
408 HAL_Delay(100); // for GPIO_Power_MainCPU_ON(); | 405 HAL_Delay(100); // for GPIO_Power_MainCPU_ON(); |
409 GPIO_Power_MainCPU_ON(); | 406 GPIO_Power_MainCPU_ON(); |
410 #ifdef ENABLE_GPIO_V2 | |
411 GPIO_LED_GREEN_OFF(); | |
412 | |
413 GPIO_LED_RED_ON(); | |
414 GPIO_VIBRATION_ON(); | |
415 #endif | |
416 HAL_Delay(100); | 407 HAL_Delay(100); |
417 #ifdef ENABLE_GPIO_V2 | |
418 GPIO_LED_RED_OFF(); | |
419 GPIO_VIBRATION_OFF(); | |
420 #endif | |
421 } | 408 } |
422 #ifdef ENABLE_GPIO_V2 | |
423 GPIO_LED_RED_OFF(); | |
424 GPIO_LED_GREEN_OFF(); | |
425 GPIO_VIBRATION_OFF(); | |
426 #endif | |
427 SPI_synchronize_with_Master(); | 409 SPI_synchronize_with_Master(); |
428 MX_DMA_Init(); | 410 MX_DMA_Init(); |
429 MX_SPI1_Init(); | 411 MX_SPI1_Init(); |
430 SPI_Start_single_TxRx_with_Master(); /* be prepared for the first data exchange */ | 412 SPI_Start_single_TxRx_with_Master(); /* be prepared for the first data exchange */ |
431 Scheduler_Request_sync_with_SPI(SPI_SYNC_METHOD_HARD); | 413 Scheduler_Request_sync_with_SPI(SPI_SYNC_METHOD_HARD); |
432 | 414 |
433 #ifdef ENABLE_GPIO_V2 | 415 #ifdef ENABLE_GNSS_EXTERN |
434 // GNSS tests | |
435 GNSS_IO_init(); | |
436 GPIO_GPS_ON(); | |
437 GPIO_GPS_BCKP_ON(); | |
438 MX_USART6_UART_Init(); | |
439 GNSS_Init(&GNSS_Handle, &huart6); | |
440 #else | |
441 #ifdef ENABLE_GNSS_SUPPORT | |
442 GNSS_Init(&GNSS_Handle, &huart1); | 416 GNSS_Init(&GNSS_Handle, &huart1); |
443 #endif | |
444 #endif | 417 #endif |
445 | 418 |
446 global.mode = MODE_SURFACE; | 419 global.mode = MODE_SURFACE; |
447 break; | 420 break; |
448 | 421 |
464 vpm_init( &global.vpm, global.conservatism, global.repetitive_dive, | 437 vpm_init( &global.vpm, global.conservatism, global.repetitive_dive, |
465 global.seconds_since_last_dive ); | 438 global.seconds_since_last_dive ); |
466 global.no_fly_time_minutes = 0; | 439 global.no_fly_time_minutes = 0; |
467 global.lifeData.dive_time_seconds = 0; | 440 global.lifeData.dive_time_seconds = 0; |
468 global.lifeData.dive_time_seconds_without_surface_time = 0; | 441 global.lifeData.dive_time_seconds_without_surface_time = 0; |
469 #if defined ENABLE_GNSS_SUPPORT || defined ENABLE_GPIO_V2 | 442 #if defined ENABLE_GNSS_INTERN |
470 uartGnss_ReqPowerDown(1); | 443 if(GPIO_GetVersion() > 0) |
444 { | |
445 uartGnss_ReqPowerDown(1); | |
446 } | |
471 #endif | 447 #endif |
472 scheduleDiveMode(); | 448 scheduleDiveMode(); |
473 // done now in scheduler prior to change mode: global.seconds_since_last_dive = 1; | 449 // done now in scheduler prior to change mode: global.seconds_since_last_dive = 1; |
474 | 450 |
475 if( global.lifeData.dive_time_seconds > 60 ) | 451 if( global.lifeData.dive_time_seconds > 60 ) |
492 global.lifeData.dive_time_seconds_without_surface_time = 0; | 468 global.lifeData.dive_time_seconds_without_surface_time = 0; |
493 global.lifeData.counterSecondsShallowDepth = 0; | 469 global.lifeData.counterSecondsShallowDepth = 0; |
494 | 470 |
495 backup.no_fly_time_minutes = 0; | 471 backup.no_fly_time_minutes = 0; |
496 backup.seconds_since_last_dive = 0; | 472 backup.seconds_since_last_dive = 0; |
497 #if defined ENABLE_GNSS_SUPPORT || defined ENABLE_GPIO_V2 | 473 #if defined ENABLE_GNSS_INTERN |
498 uartGnss_ReqPowerDown(0); | 474 if(GPIO_GetVersion() > 0) |
475 { | |
476 uartGnss_ReqPowerDown(0); | |
477 } | |
499 #endif | 478 #endif |
500 break; | 479 break; |
501 | 480 |
502 case MODE_SHUTDOWN: | 481 case MODE_SHUTDOWN: |
503 HAL_Delay(200); | 482 HAL_Delay(200); |
504 | 483 |
505 MX_SPI3_Init(); | 484 MX_SPI3_Init(); |
506 | 485 |
507 #if defined ENABLE_GNSS_SUPPORT || defined ENABLE_GPIO_V2 | 486 #if defined ENABLE_GNSS_INTERN || ENABLE_GNSS_EXTERN |
508 if(shutdownTick == 0) | 487 if(GPIO_GetVersion() > 0) |
509 { | 488 { |
510 shutdownTick = HAL_GetTick(); | 489 if(shutdownTick == 0) |
511 uartGnss_ReqPowerDown(1); | 490 { |
491 shutdownTick = HAL_GetTick(); | |
492 uartGnss_ReqPowerDown(1); | |
493 } | |
512 } | 494 } |
513 #ifdef ENABLE_GNSS_SUPPORT | 495 #endif |
496 #ifdef ENABLE_GNSS_EXTERN | |
514 externalInterface_HandleUART(); | 497 externalInterface_HandleUART(); |
515 #else | 498 #else |
516 UART6_HandleUART(); | 499 #ifdef ENABLE_GNSS_INTERN |
517 #endif | 500 if(GPIO_GetVersion() > 0) |
501 { | |
502 UART6_HandleUART(); | |
503 } | |
504 #endif | |
505 #endif | |
506 #if defined ENABLE_GNSS_INTERN || defined ENABLE_GNSS_EXTERN | |
518 if((uartGnss_GetState() == UART_GNSS_INACTIVE) || (time_elapsed_ms(shutdownTick,HAL_GetTick()) > 3000)) | 507 if((uartGnss_GetState() == UART_GNSS_INACTIVE) || (time_elapsed_ms(shutdownTick,HAL_GetTick()) > 3000)) |
519 { | 508 { |
520 global.mode = MODE_SLEEP; | 509 global.mode = MODE_SLEEP; |
521 uartGnss_ReqPowerDown(0); /* release power down request */ | 510 uartGnss_ReqPowerDown(0); /* release power down request */ |
522 } | 511 } |
932 | 921 |
933 GPIO_InitStruct.Pin = GPIO_PIN_All; | 922 GPIO_InitStruct.Pin = GPIO_PIN_All; |
934 HAL_GPIO_Init( GPIOH, &GPIO_InitStruct); | 923 HAL_GPIO_Init( GPIOH, &GPIO_InitStruct); |
935 | 924 |
936 GPIO_Power_MainCPU_OFF(); | 925 GPIO_Power_MainCPU_OFF(); |
937 #ifdef ENABLE_GPIO_V2 | 926 |
938 GPIO_LED_GREEN_OFF(); | 927 if(GPIO_GetVersion() > 0) |
939 GPIO_LED_RED_OFF(); | 928 { |
940 GPIO_VIBRATION_OFF(); | 929 GPIO_LED_GREEN_OFF(); |
941 GPIO_GPS_BCKP_ON(); // mH : costs 100µA in sleep - beware | 930 GPIO_LED_RED_OFF(); |
942 /* GPIO_GPS_OFF(); will be done in transition sleep => deep sleep */ | 931 GPIO_VIBRATION_OFF(); |
943 | 932 } |
944 MX_USART6_UART_DeInit(); | 933 #ifdef ENABLE_GNSS_INTERN |
934 if(GPIO_GetVersion() > 0) | |
935 { | |
936 GPIO_GPS_BCKP_ON(); // mH : costs 100µA in sleep - beware | |
937 /* GPIO_GPS_OFF(); will be done in transition sleep => deep sleep */ | |
938 MX_USART6_UART_DeInit(); | |
939 } | |
945 #endif | 940 #endif |
946 #ifndef ENABLE_SLEEP_DEBUG | 941 #ifndef ENABLE_SLEEP_DEBUG |
947 /* | 942 /* |
948 __HAL_RCC_GPIOB_CLK_DISABLE(); | 943 __HAL_RCC_GPIOB_CLK_DISABLE(); |
949 */ | 944 */ |