Paso 2: Algo para Nerds
Un generador de forma de onda básico de DDS necesita un phase_accumulator se incrementa en un phase_step en un f_clock de frecuencia.
Generadores de forma de onda anterior usando la Arduino Uno implementaron generadores DDS con una frecuencia de f_clock basada en una interrupción de timer a 100 kHz. Esto limita la frecuencia de salida de forma de onda DDS prácticamente usable para f_clock 8 o formas de onda de 12,5 kHz.
El enfoque actual trata de maximizar la f_clock. Implementando el circuito DDS usando un tiempo se utilizan en ciclos de un número mínimo de instrucciones de la función.
Salida de los mientras que lazo se basa en una variable actualizada basado en la interrupción del USART Rx
La corriente mientras que lazo 43 ciclos y el f_clock sería 16 MHz/43 = 372,09 kHz
Lo mejor que podríamos haber hecho si el Arduino Uno salir de mientras que fue basado en un Reset hubiera 40 instrucciones o 400 kHz.
f_clock/8 es de 372 kHz/8 = 46,5 kHz que es prácticamente 50 kHz!
El código está implementado en c usando el Atmel Studio 6.0
C-código implementa un phase_accumulator de 24 bits que se utilizan los 7-Bits de mayor orden como una dirección a una tabla de forma de onda de 128 paso que contiene los datos de forma de onda de 6 bits con valores de 0 x 00 a 0x1F Hex.
Utilizar el 007DDS. Hex para programar el Arduino Uno usando Avrdude.