+5
только сдвиги/сложения:
U16 div_by3_U16_soft(U16 data_in) {
    U32 U32_01, result;
    result = U32_01 = data_in;
    U32_01 <<= 2; result += U32_01;
    U32_01 <<= 2; result += U32_01;
    U32_01 <<= 2; result += U32_01;
    U32_01 <<= 2; result += U32_01;
    U32_01 <<= 2; result += U32_01;
    U32_01 <<= 2; result += U32_01;
    U32_01 <<= 2; result += U32_01;
    result += 0x5555; //correction
    return(result >> 16);
}

если есть аппаратное умножение:
U16 div_by3_U16_hmul(U16 data_in) {
    return((((U32)data_in * 0x5555) + 0x5555) >> 16);
}
  • avatar
  • zubb
  • 16 июля 2013, 16:13
+1
Оно же, локально и на русском.
  • avatar
  • Bonio
  • 25 июня 2013, 22:01
0
Как грится, теперь вы знаете точно почему используете JTAG. А по теме, очень познавательно в части работы с gdb. Сам я лишь раз в жизни запускал именно текстовую консоль, чтобы вручную ввести какие-нить команды отладчику. Жду не дождусь, когда эту самую поддержку gdb доделает автор HappyJTAG2, чтобы можно было писать и отлаживать программы во всяких там эклипсах и прочих.
  • avatar
  • uni
  • 18 октября 2012, 18:19
0
делаю проще
value -= value>>6; /// чем больше сдвиг
value += new_adc_value<<6; /// тем сильнее сглаживает.
  • avatar
  • discolux
  • 28 сентября 2012, 15:47