F4GOJ Christophe f4goj@free.fr
Août 2014
Mise à jour vers SPI par F4GOH Anthony f4goh@orange.fr
Cette librairie utilise l'Interface de Périphérique Série (SPI) pour accélérer la mise à jour de l'AD9850 de 700µs par la liaison série logicielle à 90µs (54µs pour le calcul du mot deltaphase et 36µs pour le transfert)
Documentation de l'AD9850 à http://www.analog.com/static/imported-files/data_sheets/AD9850.pdf
Utilisez cette librairie librement.
Pour utiliser la librairie AD9850SPI :
- Allez à https://github.com/F4GOJ/AD9850SPI, cliquez le bouton Download ZIP et enregistrez le fichier ZIP à l'endroit de votre convenance.
- Décompressez le fichier. Vous obtiendrez un répertoire contenant tous les fichiers de la librairie avec un nom comprenant le nom de branche, typiquement AD9850SPI-master.
- Renommez le répertoire en AD9850SPI.
- Copiez le répertoire renommé dans le répertoire Arduino \libraries.
La librairie AD9850SPI crée une instance de l'objet DDS, l'utilisateur n'a pas pas besoin de le faire.
Pour utiliser la librairie AD9850SPI, la librairie SPI doit être incluse.
#include <AD9850SPI.h> //http://github.com/F4GOJ/AD9850SPI
#include <SPI.h> //http://arduino.cc/en/Reference/SPI (incluse dans l'IDE Arduino)
- W_CLK -> 13 arduino UNO/NANO, D52 MEGA.
- FQ_UD -> n'importe quelle broche exceptées les 10 et 12 sur un UNO/NANO, 50 et 53 sur un MEGA.
- DATA/D7 -> 11 arduino UNO/NANO, D51 MEGA.
- RESET -> n'importe quelle broche exceptées les 10 et 12 sur un UNO/NANO, 50 et 53 sur un MEGA.
###begin(int w_clk_pin, int fq_ud_pin, int reset_pin)
#####Description
Initialise les broches de sortie et effectue une remise à zéro générale de l'AD9850.
#####Syntaxe
DDS.begin(w_clk, fq_ud, reset);
#####Paramètres
w_clk : Broche de sortie SPI SCK (13 sur un UNO/NANO, 52 sur un MEGA) (int)
fq_ud : Broche de sortie de mise à jour de la fréquence, n'importe quelle broche exceptées les 10 et 12 sur un UNO/NANO, 50 et 53 sur un MEGA. (int)
reset : Broche de sortie de RàZ, n'importe quelle broche exceptées les 10 et 12 sur un UNO/NANO, 50 et 53 sur un MEGA. (int)
#####Retourne
Rien.
#####Exemple
void setup(){
DDS.begin(13, 8, 9);
}
###calibrate(double trim_frequency)
#####Description
Compensation de la féquence de l'oscillateur.
Peut être utilisée à n'importe quel moment après l'initialisation.
#####Syntaxe
DDS.calibrate(trim_freq);
#####Paramètres
trim_freq : Ajuster autour de 125000000 pour correspondre à la fréquence réelle de l'oscillateur. (double)
#####Retourne
Rien.
#####Exemple
void setup(){
DDS.begin(13, 8, 9);
}
void loop(){
DDS.calibrate(124999000);
}
###setfreq(double frequency, int phase)
#####Description
Détermine la fréquence de sortie de l'AD9850 et la phase du signal.
#####Syntaxe
DDS.setfreq(frequency, phase);
#####Paramètres
frequency : Fréquence de sortie en HZ. (double)
phase : Phase du signal, codée sur 5 bits permet 32 pas de phase de 11,25° (int)
#####Retourne
Rien.
#####Exemple
double frequency = 10000000;
int phase = 0;
DDS.setfreq(frequency, phase);
###down()
#####Description
Mode "extinction" réduisant la puissance dissipée de 380mW à 30mW sous 5V
#####Syntaxe
DDS.down();
#####Paramètres
Aucun.
#####Retourne
Rien.
#####Exemple
DDS.down();
###up()
#####Description
Sort l'AD9850 du mode "extinction"
#####Syntaxe
DDS.up();
#####Paramètres
Aucun.
#####Retourne
Rien.
#####Exemple
DDS.down(); // Entrée en mode "extinction"
// du code faisant quelquechose
...
DDS.up(); // REVEIL !!! :)