fixed and approved trigger searcher logic in AVG module

This commit is contained in:
2025-10-02 20:01:11 +03:00
parent 0ddc00750c
commit 95cf79b61f
17 changed files with 5336 additions and 5328 deletions

View File

@ -197,10 +197,13 @@ uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) {
if (TX_buff_state == FILLING){
data_I = 0;
TX_buff_I = 0;
while((++data_I < size )&& (++TX_buff_I < TX_BUFF_SIZE)){
while((data_I + 1 < size )&& (TX_buff_I + 1 < TX_BUFF_SIZE)){
//;
TX_buff[TX_buff_I] = data[data_I];
}
TX_buff_I++;
data_I++;
}
size_processed = data_I;
TX_buff_state = TODO_TX;
@ -235,16 +238,16 @@ uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) {
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
Proc_state.average_N = 0;
//Proc_state.average_N = 0;
//if (1){
Proc_state.AVG_state = FULLY_COMPLETED;
//averaging completed => copy average results to TX_buff and start avg again
TX_buff_I = 0;
for (uint32_t i = 0; ((TX_buff_I < TX_BUFF_SIZE) && (i < AVG_BUFF_SIZE)); i++){
// uint32_t i = 0;
// while ((TX_buff_I < TX_BUFF_SIZE) && (i < AVG_BUFF_SIZE)){
//TX_buff[TX_buff_I++] = AVG_buff[i];
TX_buff[TX_buff_I++] = 0xB0000000 + Proc_state.average_N;
// for (uint32_t i = 0; ((TX_buff_I < TX_BUFF_SIZE) && (i < AVG_BUFF_SIZE)); i++){
uint32_t i = 0;
while ((TX_buff_I < TX_BUFF_SIZE) && (i < AVG_BUFF_SIZE)){
TX_buff[TX_buff_I++] = AVG_buff[i];
//TX_buff[TX_buff_I++] = 0xB0000000 + Proc_state.average_N;
//TX_buff[TX_buff_I++] = 0xC1000000;
}
@ -254,9 +257,9 @@ uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) {
AVG_buff[i] = 0xC2321123;
}
//TX_buff_state = TODO_TX;
hdma_send_req_start(TX_buff, TX_BUFF_SIZE, 0);
return 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];
@ -268,22 +271,22 @@ uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) {
// hdma_send_req_start(TX_buff, TX_BUFF_SIZE, 0);
//TX_buff_state = TRANSMITTING;
// TX_buff_state = TX_DONE;
Proc_state.average_N = 0;
}else{ //
Proc_state.AVG_state = STEP_RUNNING;
Proc_state.AVG_buff_I = 0;
}
}
}else if(header == 0xD0){ //first phy channel
// if (Proc_state.AVG_state == STEP_RUNNING){
if (Proc_state.AVG_state == STEP_RUNNING){
// if (1){
// if (Proc_state.LFSM_state == CYCLE_STARTED){
if (1){
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 + AVG_buff[Proc_state.AVG_buff_I]) & 0xFFFFFF);
// AVG_buff[Proc_state.AVG_buff_I] = 0xC0000000 | ((val + AVG_buff[Proc_state.AVG_buff_I]) & 0xFFFFFF);
AVG_buff[Proc_state.AVG_buff_I] = 0xC0000000 | val;
//AVG_buff[Proc_state.AVG_buff_I++] = 0xC0000000;
Proc_state.AVG_buff_I++;
if (Proc_state.AVG_buff_I >= AVG_BUFF_SIZE){
@ -580,7 +583,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 = 30;
Proc_state.average_N_max = 10;
// Proc_state.average_N_max = cmd->param;
Proc_state.average_N = 0;
Proc_state.TX_buff_I = 0;