Mercurial > public > ostc4
view Small_CPU/Src/tm_stm32f4_otp.c @ 335:c11ce8c885d3 PressureMeasure_Improvment
Use average calculation for pressure: precondition was that pressure values jittered +- 10 HPa from one capture (once a second) to the other. Basically pressure is measured several times a second => using these values in an additional history calculation reduces the jitter down to +-1 per second
Additionaly a similar function has been added to the surface pressure capture to further reduce the jitter in long therm measurements (once a minute)
author | ideenmodellierer |
---|---|
date | Tue, 13 Aug 2019 21:46:26 +0200 |
parents | 5f11787b4f42 |
children |
line wrap: on
line source
/** * |---------------------------------------------------------------------- * | Copyright (C) Tilen Majerle, 2014 * | * | This program is free software: you can redistribute it and/or modify * | it under the terms of the GNU General Public License as published by * | the Free Software Foundation, either version 3 of the License, or * | any later version. * | * | This program is distributed in the hope that it will be useful, * | but WITHOUT ANY WARRANTY; without even the implied warranty of * | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | GNU General Public License for more details. * | * | You should have received a copy of the GNU General Public License * | along with this program. If not, see <http://www.gnu.org/licenses/>. * |---------------------------------------------------------------------- */ #include "tm_stm32f4_otp.h" HAL_StatusTypeDef TM_OTP_Write(uint8_t block, uint8_t byte, uint8_t data) { HAL_StatusTypeDef answer; /* Check input parameters */ if ( block >= OTP_BLOCKS || byte >= OTP_BYTES_IN_BLOCK ) { /* Invalid parameters */ return HAL_ERROR; } if(*(uint8_t *)(OTP_START_ADDR + block * OTP_BYTES_IN_BLOCK + byte) != 0xFF) return HAL_ERROR; /* Unlock FLASH */ HAL_FLASH_Unlock(); answer = HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, (OTP_START_ADDR + block * OTP_BYTES_IN_BLOCK + byte), data); /* Lock FLASH */ HAL_FLASH_Lock(); return answer; } uint8_t TM_OTP_Read(uint8_t block, uint8_t byte) { uint8_t data; /* Check input parameters */ if ( block >= OTP_BLOCKS || byte >= OTP_BYTES_IN_BLOCK ) { /* Invalid parameters */ return HAL_ERROR; } /* Get value */ data = *(__IO uint8_t *)(OTP_START_ADDR + block * OTP_BYTES_IN_BLOCK + byte); /* Return data */ return data; }