Ajuda com sine wave

Caros colegas,
Estou iniciando um trabalho novo e necessito obter informações de como criar uma senoide com resolução de 16 bits, cuja sua frequencia possa ser controlada num range de 20 hz até 20khz (linearmente de 1 em 1 hz)!
Estou utilizando um DSPIC 30F4013 e um dac de audio multicanal com resolução maxima de 24 bits da cirrus cs4333 e estou programando em C (achava C muito complicado, mas agora que provei da coisa, acho muito mais facil, dou o braço a torcer, apesar de gostar muito do assembler).
No meu hardware eu tenho além do dac uma flash de 32 megbit x 16 bits da atmel 49bv322dt, estou pensando em armazenar os dados nessa flash!
Porém minha duvida são todas, mas principalmente qual seria o melhor metodo: Criar uma tabela (contendo a curva da senoide) ou fazer a senoide via software utilizando os recursos matemaricos do DSPic. A maior questão esta em como gerar a senoide e como controlar a frequencia da mesma externamente!...
Muito obrigado
Estou iniciando um trabalho novo e necessito obter informações de como criar uma senoide com resolução de 16 bits, cuja sua frequencia possa ser controlada num range de 20 hz até 20khz (linearmente de 1 em 1 hz)!
Estou utilizando um DSPIC 30F4013 e um dac de audio multicanal com resolução maxima de 24 bits da cirrus cs4333 e estou programando em C (achava C muito complicado, mas agora que provei da coisa, acho muito mais facil, dou o braço a torcer, apesar de gostar muito do assembler).
No meu hardware eu tenho além do dac uma flash de 32 megbit x 16 bits da atmel 49bv322dt, estou pensando em armazenar os dados nessa flash!
Porém minha duvida são todas, mas principalmente qual seria o melhor metodo: Criar uma tabela (contendo a curva da senoide) ou fazer a senoide via software utilizando os recursos matemaricos do DSPic. A maior questão esta em como gerar a senoide e como controlar a frequencia da mesma externamente!...
Muito obrigado