ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1313400 Топик полностью
Vit (27.05.2023 19:05, просмотров: 199) ответил Nikolay_Po на Сигнал, примерно, такой (в этой же теме, ссылка), см. средний график.
Такое банально отбрасыванием крайних значений при стат-усреднении делается. Как на лабах. Период измерений чуть больше, чем длительность провала. 

Причем даже не нужно нечетное количество отсчетов в окне - просто не менее 3

что-то типа такого говнокода

#define WSIZE 4
uint6_t wnd[WSIZE]={0};
int idx = -1;
uint6_t stat(uint16_t adc_res){
  uint16_t min, max;
  uint32_t sum;
  if(idx < 0){idx= 1; for(int i= 0;i<WSIZE;i++){wnd[i]= adc_res;} adc_res; return adc_res;}//init at first call
  wnd[idx] = adc_res; idx++; if(idx >= WSIZE) idx = 0;//idx &= 2;
  for(int i=0; i <WSIZE; i++){ 
    sum+= wnd[i]; 
    if(wnd[i] < min) min = wnd[i];
    if(max < wnd[i]) max = wnd[i];
  }
  sum-= min; sum-=max;
  return (uint16_t)(sum/(WSIZE-2);//sum>>=2;
}