|
DDS.
Любой МК с ЦАП или ШИМ, обеспечивающий вычисление нижеследующего хотя-бы раз так 16000 в секунду. Например 51-й процессор.
Точность за счет линейной интерполяции у этого алгоритма очень даже порядочная. Несмотря на 256-байтную таблицу.
unsigned long ph;
const char sin_table[256] = {...}; // один период sin
short a,b,out;
//.........
//freq_generated = (Fsample*freq_const)>>32
ph = ph + freq_const;
a = sin_table[ph>>24]<<8;
b = sin_table[((ph>>24)+1)&0xFF]<<8;
out = a + (((b-a)*((ph>>16)&0xFF))>>8);
E-mail: info@telesys.ru