kopia lustrzana https://github.com/sq2ips/m20-custom-firmware
Change ascent rate calculation based on SysTick
rodzic
85cf43cdcf
commit
9536ea2d4c
|
@ -52,6 +52,10 @@ extern "C" {
|
|||
/* USER CODE BEGIN Includes */
|
||||
#include "stm32l0xx_it.h"
|
||||
#include "fsk4.h"
|
||||
#include "config.h"
|
||||
#if GPS_TYPE == 1
|
||||
#include "nmea.h"
|
||||
#endif
|
||||
/* USER CODE END Includes */
|
||||
|
||||
/* Exported types ------------------------------------------------------------*/
|
||||
|
|
|
@ -27,4 +27,6 @@ typedef struct NMEA_DATA {
|
|||
|
||||
void ParseNMEA(NMEA *nmea_data, uint8_t *buffer);
|
||||
|
||||
void incTimeCount();
|
||||
|
||||
#endif /* INC_NMEA_H_ */
|
||||
|
|
|
@ -348,6 +348,8 @@ int main(void)
|
|||
// LED timer
|
||||
LL_TIM_EnableCounter(TIM6);
|
||||
LL_TIM_EnableIT_UPDATE(TIM6);
|
||||
|
||||
LL_SYSTICK_EnableIT();
|
||||
/* USER CODE END 2 */
|
||||
|
||||
/* Infinite loop */
|
||||
|
|
|
@ -12,12 +12,17 @@
|
|||
#endif
|
||||
#include <string.h>
|
||||
|
||||
uint16_t TimeCounter = 0;
|
||||
|
||||
char data[DATA_SIZE][SENTENCE_SIZE];
|
||||
|
||||
uint8_t correct = 0;
|
||||
uint16_t olddTime = 0;
|
||||
uint16_t olddAlt = 0;
|
||||
|
||||
void incTimeCount(){
|
||||
TimeCounter++;
|
||||
}
|
||||
|
||||
uint16_t a_strtof(char *buffer){
|
||||
uint8_t d_pos = 0;
|
||||
uint16_t value = 0;
|
||||
|
@ -151,16 +156,16 @@ int nmea_GGA(NMEA *nmea_data, char *inputString){
|
|||
|
||||
if(altitude != 0){
|
||||
nmea_data->Alt = altitude;
|
||||
uint16_t currentTime = h*3600+m*60+s;
|
||||
if(olddTime==0 || currentTime == 0){
|
||||
if(olddAlt == 0){
|
||||
olddAlt = nmea_data->Alt;
|
||||
olddTime = currentTime;
|
||||
}
|
||||
if((currentTime-olddTime)>=AscentRateTime){
|
||||
nmea_data->AscentRate = (float)(nmea_data->Alt-olddAlt)/(currentTime-olddTime);
|
||||
TimeCounter = 0;
|
||||
}else if(TimeCounter>=AscentRateTime){
|
||||
nmea_data->AscentRate = (float)(nmea_data->Alt-olddAlt)/TimeCounter;
|
||||
olddAlt = nmea_data->Alt;
|
||||
olddTime = currentTime;
|
||||
TimeCounter = 0;
|
||||
}
|
||||
}else{
|
||||
olddAlt = 0;
|
||||
}
|
||||
|
||||
//nmea_data->Fix = values[6][0]-'0';
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
|
||||
/* Private variables ---------------------------------------------------------*/
|
||||
/* USER CODE BEGIN PV */
|
||||
|
||||
uint32_t TickCounter = 0;
|
||||
/* USER CODE END PV */
|
||||
|
||||
/* Private function prototypes -----------------------------------------------*/
|
||||
|
@ -125,6 +125,13 @@ void PendSV_Handler(void)
|
|||
void SysTick_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN SysTick_IRQn 0 */
|
||||
if(TickCounter == 999){
|
||||
#if GPS_TYPE == 1
|
||||
incTimeCount();
|
||||
#endif
|
||||
TickCounter = 0;
|
||||
}
|
||||
TickCounter++;
|
||||
/* USER CODE END SysTick_IRQn 0 */
|
||||
|
||||
/* USER CODE BEGIN SysTick_IRQn 1 */
|
||||
|
|
Ładowanie…
Reference in New Issue