bandeau

AD9850 et PIC

Plutôt que de réinventer la roue, pour ceux qui seraient intéressés par la programmation de l'AD9850 en assembleur PIC j'ai fais un petit programme démo simple, à chacun de l'étoffer ensuite suivant les besoins. On peut envoyer le mot binaire en // ou en série, ici j'ai fais mes essais en // pour simplifier la lecture du programme démo.
Formule pour calculer le mot binaire en fonction de la fréquence voulue:
mot=(Fq choisie .2^32)/Fq DDS
Mon module AD9850 est cadencé à 125Mhz.

Exemple pour une fréquence de 7012Khz:
((7.012 . 2^32)/125)= 240930485 = 0x000E5C4EB5

C'est ce nombre hexadécimal 0X 00 0E 5C 4E B5 qu'on va envoyer au module en 5 salves de 8 bits en partant du MSB. Après l'envoi de chaque octet on fera un front montant sur W_CLK pour valider, et après le 5ème on validera la fréquence en effectuant un front montant sur Fq_ud.

IMPORTANT: toujours mettre l'octet 5 ( MSB) à 0x00, il sert à des tests d'usine et en y mettant des valeurs aléatoires on risque de bloquer l'AD9850, se reporter au datasheet pour plus d'explications.



Chronologie d'une programmation de fréquence:

init AD9850:
pin reset=0
pin Fq_ud=0
pin w_clk=0

envoi du mot binaire
chargement du mot5: 0x00
w_clk=1
w_clk=0

chargement du mot4: 0x0E
w_clk=1
w_clk=0

chargement du mot3: 0x5C
w_clk=1
w_clk=0

chargement du mot2: 0x4E
w_clk=1
w_clk=0

chargement du mot1: 0xB5
w_clk=1
w_clk=0

Validation du mot de 40 bits et génération de la fréquence
Fq_ud=1
Fq_ud=0

Dans le code ci-dessous destiné à un PIC 18F4525 la boucle se déroule sans fin pour des facilités de lecture, dans la vraie vie un seul réglage est suffisant pour générer la frq tant que l'AD9850 est sous tension.

Interfaçage: pins D0 à D7 de l'AD9850 sur le PORTC du PIC, pin Fq_ud sur rb0, pin W_clk sur rb1, pin Reset sur rb2.




Test AD9850 sur la PICDEV V.4 40


AD9850







retour