implemented sync_detector logic. But it is a bit buggy: data stored in avg_ON is very similar to avg_OFF. But while sync_detector phase is inverted -- both behave the same way
This commit is contained in:
@ -66,11 +66,20 @@ volatile uint32_t curr_step_start_N = 0;
|
||||
|
||||
/* ADC1 circular DMA buffer definition */
|
||||
uint16_t ADC1_buff_circular[ADC_BUFF_SIZE];
|
||||
//char ADC_msg[] = "curr_step ?????? ??????????\r\nSweep_start\n\r";
|
||||
|
||||
|
||||
char ADC_msg[] = "stp ?????? ??????????\r\nSweep_start\n\r";
|
||||
#define ADC_msg_len 24
|
||||
#define ADC_msg_len_Sweep_start 37
|
||||
#define ADC_msg_val_pos 12
|
||||
|
||||
|
||||
|
||||
//char ADC_msg[] = "stp ?????? ?????????? ??????????\r\nSweep_start\n\r";
|
||||
//#define ADC_msg_len 35
|
||||
//#define ADC_msg_len_Sweep_start 48
|
||||
#define ADC_msg_val_ON_pos 12
|
||||
#define ADC_msg_val_OFF_pos 23
|
||||
|
||||
#define ADC_msg_step_pos 4
|
||||
/* USER CODE END 0 */
|
||||
|
||||
@ -112,13 +121,17 @@ int main(void)
|
||||
|
||||
ADC_proc_shadow.status = 0; // ADC started
|
||||
ADC_proc_shadow.N = 0;
|
||||
ADC_proc_shadow.sum = 0;
|
||||
ADC_proc_shadow.avg = 0;
|
||||
ADC_proc_shadow.sum_ON = 0;
|
||||
ADC_proc_shadow.avg_ON = 0;
|
||||
ADC_proc_shadow.sum_OFF = 0;
|
||||
ADC_proc_shadow.avg_OFF = 0;
|
||||
|
||||
ADC_proc.status = 0; // ADC started
|
||||
ADC_proc.N = 0;
|
||||
ADC_proc.sum = 0;
|
||||
ADC_proc.avg = 0;
|
||||
ADC_proc.sum_ON = 0;
|
||||
ADC_proc.avg_ON = 0;
|
||||
ADC_proc.sum_OFF = 0;
|
||||
ADC_proc.avg_OFF = 0;
|
||||
|
||||
uint32_t curr_points_N_max = 100;
|
||||
uint32_t curr_points_N =0;
|
||||
@ -133,22 +146,39 @@ int main(void)
|
||||
//HAL_Delay(100);
|
||||
|
||||
if (ADC_proc_shadow.status == 2) {
|
||||
ADC_proc_shadow.avg = ADC_proc_shadow.sum / ADC_proc_shadow.N;
|
||||
// ADC_proc_shadow.avg_ON = ADC_proc_shadow.sum_ON / ADC_proc_shadow.N;
|
||||
ADC_proc_shadow.avg_OFF = ADC_proc_shadow.sum_OFF / ADC_proc_shadow.N;
|
||||
ADC_proc_shadow.avg_ON = ADC_proc_shadow.sum_ON / ADC_proc_shadow.N;
|
||||
ADC_proc_shadow.avg_ON = ADC_proc_shadow.avg_OFF;
|
||||
// ADC_proc_shadow.avg_ON = ADC_proc_shadow.avg_ON - ADC_proc_shadow.avg_OFF;
|
||||
ADC_proc_shadow.status = 1; // reset for next accumulation
|
||||
ADC_proc_shadow.sum = 0;
|
||||
ADC_proc_shadow.N = 0;
|
||||
|
||||
|
||||
ADC_msg[ADC_msg_val_ON_pos + 0] = (ADC_proc_shadow.avg_ON / 1000000000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_ON_pos + 1] = (ADC_proc_shadow.avg_ON / 100000000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_ON_pos + 2] = (ADC_proc_shadow.avg_ON / 10000000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_ON_pos + 3] = (ADC_proc_shadow.avg_ON / 1000000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_ON_pos + 4] = (ADC_proc_shadow.avg_ON / 100000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_ON_pos + 5] = (ADC_proc_shadow.avg_ON / 10000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_ON_pos + 6] = (ADC_proc_shadow.avg_ON / 1000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_ON_pos + 7] = (ADC_proc_shadow.avg_ON / 100) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_ON_pos + 8] = (ADC_proc_shadow.avg_ON / 10) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_ON_pos + 9] = (ADC_proc_shadow.avg_ON / 1) % 10 + '0';
|
||||
|
||||
ADC_msg[ADC_msg_val_pos + 0] = (ADC_proc_shadow.avg / 10000000000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_pos + 1] = (ADC_proc_shadow.avg / 1000000000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_pos + 2] = (ADC_proc_shadow.avg / 10000000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_pos + 3] = (ADC_proc_shadow.avg / 1000000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_pos + 4] = (ADC_proc_shadow.avg / 100000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_pos + 5] = (ADC_proc_shadow.avg / 10000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_pos + 6] = (ADC_proc_shadow.avg / 1000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_pos + 7] = (ADC_proc_shadow.avg / 100) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_pos + 8] = (ADC_proc_shadow.avg / 10) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_pos + 9] = (ADC_proc_shadow.avg / 1) % 10 + '0';
|
||||
/*
|
||||
ADC_msg[ADC_msg_val_OFF_pos + 0] = (ADC_proc_shadow.avg_OFF / 1000000000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_OFF_pos + 1] = (ADC_proc_shadow.avg_OFF / 100000000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_OFF_pos + 2] = (ADC_proc_shadow.avg_OFF / 10000000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_OFF_pos + 3] = (ADC_proc_shadow.avg_OFF / 1000000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_OFF_pos + 4] = (ADC_proc_shadow.avg_OFF / 100000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_OFF_pos + 5] = (ADC_proc_shadow.avg_OFF / 10000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_OFF_pos + 6] = (ADC_proc_shadow.avg_OFF / 1000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_OFF_pos + 7] = (ADC_proc_shadow.avg_OFF / 100) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_OFF_pos + 8] = (ADC_proc_shadow.avg_OFF / 10) % 10 + '0';
|
||||
ADC_msg[ADC_msg_val_OFF_pos + 9] = (ADC_proc_shadow.avg_OFF / 1) % 10 + '0';
|
||||
*/
|
||||
|
||||
ADC_msg[ADC_msg_step_pos + 0] = (Sweep_state.curr_step_N / 100000) % 10 + '0';
|
||||
ADC_msg[ADC_msg_step_pos + 1] = (Sweep_state.curr_step_N / 10000) % 10 + '0';
|
||||
|
||||
Reference in New Issue
Block a user