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;