Étape 2: Quelque chose pour les Nerds
Un générateur de signaux DDS base doit un phase_accumulator être incrémenté d’un phase_step à un f_clock de fréquence.
Antérieure des générateurs de signaux à l’aide de l’Arduino Uno ont mis en place des générateurs DDS avec une fréquence de f_clock, issue d’une interruption de la minuterie à 100 kHz. Cela limite la pratiquement utilisable fréquence de sortie de forme d’onde DDS à f_clock 8 ou formes d’onde de 12,5 kHz.
L’approche actuelle tente de maximiser le f_clock. En mettant en œuvre la DDS de boucle à l’aide d’un certain temps, fonction dans laquelle un nombre minimum d’instructions cycles sont utilisés.
Sortie du tout en boucle est basé sur une variable mise à jour basée sur l’interruption USART Rx
Le courant pendant que la boucle dure 43 cycles et la f_clock serait 16 MHz/43 = 372,09 kHz
Le meilleur que nous aurions pu faire si l’Arduino Uno sortent de reposait sur une réinitialisation aurait eu 40 instructions ou 400KHz.
f_clock/8 est 372 kHz/8 = 46,5 kHz qui est pratiquement 50 kHz !
Le code est mis en oeuvre en « c » à l’aide de Atmel Studio 6.0
Le c-code implémente un phase_accumulator de 24 bits dont les 7-Bits d’ordre supérieurs sont utilisées comme une adresse à une table de forme d’onde de 128 étape contenant 6 bits des données avec les valeurs de 0 x 00 à 0x1F Hex.
Utilisez le 007DDS. Hex pour programmer l’Arduino Uno à l’aide de Avrdude.