implemented simple dataprocessor function. It (in TRANSPARENT mode) takes averaged data and copies it to the FFT_buff.
This commit is contained in:
@ -87,7 +87,7 @@ extern volatile uint32_t TX_buff_shadow[]; //size: TX_BUFF_SIZE
|
||||
//extern volatile uint32_t RAW_data_buff[]; //size: RAW_DATA_BUFF_SIZE
|
||||
extern volatile uint32_t AVG_buff[]; //size: AVG_BUFF_SIZE
|
||||
//extern volatile uint32_t AVG_buff_B[]; //size: AVG_BUFF_SIZE
|
||||
//extern volatile uint32_t FFT_buff[]; //size: FFT_BUFF_SIZE
|
||||
extern volatile uint32_t FFT_buff[]; //size: FFT_BUFF_SIZE
|
||||
|
||||
|
||||
volatile uint32_t TX_marker[10] = {0xFE00000F,0xFE0000F0, 0xFE000F00, 0xFE00F000, 0xFE0F0000,0xFEF00000, 0xFE0F0000,0xFE00F000, 0xFE000F00, 0xFE0000F0};
|
||||
@ -102,6 +102,7 @@ volatile struct dataprocessor_dypedef{
|
||||
uint32_t TX_buff_I;
|
||||
uint8_t TX_buff_state; //0 --blocked, 1 -- filling, 2 -- ready to send
|
||||
uint32_t AVG_buff_I;
|
||||
uint32_t AVG_buff_I_last;
|
||||
uint8_t AVG_state;
|
||||
uint8_t AVG_buff_state;
|
||||
uint8_t AVG_buff_active;
|
||||
@ -138,6 +139,22 @@ uint8_t LFSM_started = 0;
|
||||
|
||||
uint8_t DY_SYN_2_value = 0;
|
||||
uint8_t DY_SYN_2_value_prev = 0;
|
||||
|
||||
|
||||
|
||||
uint32_t dataprocessor(uint32_t* AVG_buff, uint32_t AVG_buff_I_max, uint32_t* FFT_buff, uint8_t mode){
|
||||
uint32_t FFT_buff_I = 0;
|
||||
if (mode == TRANSPARENT){
|
||||
uint32_t i = 0;
|
||||
while ((FFT_buff_I < FFT_BUFF_SIZE) && (i < AVG_BUFF_SIZE)){
|
||||
FFT_buff[FFT_buff_I++] = AVG_buff[i++];
|
||||
}
|
||||
}
|
||||
|
||||
return FFT_buff_I;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************//**
|
||||
@brief Обработка принятого массива данных АЦП/DIN.
|
||||
|
||||
@ -241,12 +258,23 @@ uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) {
|
||||
//Proc_state.average_N = 0;
|
||||
//if (1){
|
||||
Proc_state.AVG_state = FULLY_COMPLETED;
|
||||
|
||||
|
||||
for(uint32_t i = 0; i < FFT_BUFF_SIZE; i++){
|
||||
FFT_buff[i] = 0;
|
||||
}
|
||||
|
||||
uint32_t FFT_res_size = dataprocessor(AVG_buff, Proc_state.AVG_buff_I_last, FFT_buff, TRANSPARENT);
|
||||
|
||||
|
||||
//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++];
|
||||
// while ((TX_buff_I < TX_BUFF_SIZE) && (i < AVG_BUFF_SIZE)){
|
||||
// TX_buff[TX_buff_I++] = AVG_buff[i++];
|
||||
while ((TX_buff_I < TX_BUFF_SIZE) && (i < FFT_BUFF_SIZE)){
|
||||
TX_buff[TX_buff_I++] = FFT_buff[i++];
|
||||
//TX_buff[TX_buff_I++] = 0xB0000000 + Proc_state.average_N;
|
||||
//TX_buff[TX_buff_I++] = 0xC1000000;
|
||||
}
|
||||
@ -254,7 +282,7 @@ uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) {
|
||||
|
||||
//clear AVG_buff:
|
||||
for (uint32_t i = 0; i < AVG_BUFF_SIZE; i++ ){
|
||||
AVG_buff[i] = 0xC2000000;
|
||||
AVG_buff[i] = 0xE0000000;
|
||||
}
|
||||
|
||||
TX_buff_state = TODO_TX;
|
||||
@ -292,12 +320,20 @@ uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) {
|
||||
// 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;
|
||||
Proc_state.AVG_buff_I_last = Proc_state.AVG_buff_I;
|
||||
Proc_state.AVG_buff_I++;
|
||||
if (Proc_state.AVG_buff_I >= AVG_BUFF_SIZE){
|
||||
Proc_state.AVG_state = STEP_COMPLETED;
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
AVG_buff[Proc_state.AVG_buff_I] = 0xC1000000;
|
||||
Proc_state.AVG_buff_I_last = Proc_state.AVG_buff_I;
|
||||
Proc_state.AVG_buff_I++;
|
||||
if (Proc_state.AVG_buff_I >= AVG_BUFF_SIZE){
|
||||
Proc_state.AVG_state = STEP_COMPLETED;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -587,7 +623,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 = 5;
|
||||
Proc_state.average_N_max = 1;
|
||||
// Proc_state.average_N_max = cmd->param;
|
||||
Proc_state.average_N = 0;
|
||||
Proc_state.TX_buff_I = 0;
|
||||
|
||||
Reference in New Issue
Block a user