Поковырял прошивку на выходных. Фильтр данных ацп присутствует. Фильтр скользящего среднего, ширина фильтра задается "cyclesAveragedIR", который "must be a power of 2, max 64" и равен 8. Т.е. наши 2кгц. делим на 8 = 250 герц  

 . Ну, можно учесть более ранний отклик фильтра (фчх такого фильтра линейная), имеем около 500 герц.
Вообще, повыпиливал из прошивки сиплюсплюснутость. После изучения этой прошивки, я больше никогда не буду тем, кем был. Теперь я видел все 

Угадайте что это?
Код:
   // Readings have been collected into all three of nearData, farData, and offData.
   // We are looking for a pullup resistor of no more than 75K on the output to indicate that we should use a digital output.
   digitalOutput = offData_sum + nearData_sum + farData_sum >= (3600UL * cyclesAveragedIR * 1024UL * 3)/(75000UL + 3600UL);
Да, это тест пина, есть подтяжка или нет  
 
 Т.е. подключены 3 (ТРИ) фильтра скользящего среднего для определения резистора на входе пина, при этом в прерываниях делается постоянный опрос бита разрешения (только ради этого прикола). Потом данные сравниваются с эпичным числом "(3600UL * cyclesAveragedIR * 1024UL * 3)/(75000UL + 3600UL)" и после этого принимается решение - а есть ли резистор на входе пина?
Само прерывание - в лучших традициях c++ со структурами и методами, что приводит вот к такому сохранению контекста:
Код:
  40:   1f 92          push   r1
  42:   0f 92          push   r0
  44:   0f b6          in   r0, 0x3f   ; 63
  46:   0f 92          push   r0
  48:   11 24          eor   r1, r1
  4a:   2f 93          push   r18
  4c:   3f 93          push   r19
  4e:   4f 93          push   r20
  50:   5f 93          push   r21
  52:   6f 93          push   r22
  54:   7f 93          push   r23
  56:   8f 93          push   r24
  58:   9f 93          push   r25
  5a:   af 93          push   r26
  5c:   bf 93          push   r27
  5e:   ef 93          push   r30
  60:   ff 93          push   r31
И соотв. к такому же восстановлению контекста. Т.е. если в таком прерывании больше ничего не делать то это 117кгц. А еще в прерывании есть ожидалка  
 
 Код:
   while (TCNT0 < 3 * 8) {}  // delay a little until the ADC s/h has taken effect. 3 ADC clocks should be enough, and 1 ADC clock is 8 timer 0 clocks.
Которая, кста, не делает того что подумал автор.
А еще, и еще, а потом, и к этому, а после, и в конце 

Все, я спать...