somehow averaging fails (avg cycle stops too early. So in the result of avg there is sum of all runs in the start and some values in line are forbidden at the end of avg cycle). Fixed avg cycle numbering -> averaged value have the same amplitude as raw value

This commit is contained in:
2025-10-06 15:26:24 +03:00
parent 42f53ae5a5
commit 9b02f0af1c
9 changed files with 4859 additions and 4838 deletions

View File

@ -235,7 +235,6 @@ uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) {
if ((DY_SYN_2_value == 1)&& (DY_SYN_2_value_prev == 0)){ //new cycle started
//data[data_I] = 0xB00000000;
Proc_state.average_N ++;
Proc_state.AVG_buff_I = 0;
Proc_state.LFSM_state = CYCLE_STARTED;
if (Proc_state.average_N >= Proc_state.average_N_max){ //whole average ended
@ -259,8 +258,7 @@ uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) {
}
TX_buff_state = TODO_TX;
//hdma_send_req_start(TX_buff, TX_BUFF_SIZE, 0);
//return size;
// for (uint32_t i = 0; i < TX_BUFF_SIZE; ++i){
// TX_buff_shadow[i] = TX_buff[i];
@ -274,8 +272,12 @@ uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) {
// TX_buff_state = TX_DONE;
Proc_state.average_N = 0;
//hdma_send_req_start(TX_buff, TX_buff_I, 0);
//return data_I;
}else{ //
Proc_state.AVG_state = STEP_RUNNING;
Proc_state.average_N ++;
//Proc_state.AVG_buff_I = 0;
}
}
@ -286,7 +288,7 @@ uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) {
// if (Proc_state.LFSM_state == CYCLE_STARTED){
if (1){
// AVG_buff[Proc_state.AVG_buff_I++] = 0xC0000000 | (0x00FFFFFF & (AVG_buff[Proc_state.AVG_buff_I] + val));
AVG_buff[Proc_state.AVG_buff_I] = 0xC0000000 | ((val/10 + AVG_buff[Proc_state.AVG_buff_I]) & 0xFFFFFF);
AVG_buff[Proc_state.AVG_buff_I] = 0xC0000000 | ((val/Proc_state.average_N_max + AVG_buff[Proc_state.AVG_buff_I]) & 0xFFFFFF);
// AVG_buff[Proc_state.AVG_buff_I] = 0xC0000000 | some_i++;
// AVG_buff[Proc_state.AVG_buff_I] = 0xC0000000 | val;
//AVG_buff[Proc_state.AVG_buff_I++] = 0xC0000000;
@ -585,7 +587,7 @@ void usr_cmd_process(t_l502_bf_cmd *cmd) {
Proc_state.mode = AVG;
Proc_state.mode_next = AVG;
Proc_state.LFSM_state = CYCLE_UNKNOWN;
Proc_state.average_N_max = 10;
Proc_state.average_N_max = 5;
// Proc_state.average_N_max = cmd->param;
Proc_state.average_N = 0;
Proc_state.TX_buff_I = 0;

View File

@ -11,7 +11,7 @@
******************************************************************************/
//#define TX_BUFF_SIZE 100000
#define RAW_DATA_BUFF_SIZE 1000
#define AVG_BUFF_SIZE 1000
#define AVG_BUFF_SIZE 2000
#define FFT_BUFF_SIZE 1000
//#define L502_SPORT_IN_BUF_SIZE (2048*1024)