Bonjour à tous,
Je n'ai pas répondu sur l'instant car je suis dans le dessin du schéma et du PCB pour réaliser des tests hardware. Proteus ne dispose pas de MC145170 pour la simulation virtuelle.
Peux tu citer la page ?
C'est en page page 8 table 1
Je remets ci dessous le lien du datasheet car je ne le retrouve pas dans mon premier post
MC145170DT2.pdf
Je me suis replongé dans le data pour zen tirer le fonctionnement suivant :
Le Mc145170 dispose de 3 registres :
* le registre C (configuration register) de 8 bits. Il configure le mode de fonctionnement du MC
* le registre R (reference divider ) de 15 ou 24 bits.
* le registre N (main divider) de 16 bits
Lorsque que l'on ne dialogue pas avec le MC 145170, la broche ENB reste à l'état haut.
L'initialisation du MC145170 se fait ainsi :
* ENB à l'état haut, Din à l'état bas, Clk à l'état bas
* Envoi de 4 pulses de clk
* ENB à l'état bas
* Envoi de 3 pulses de clk
* Din à l'état haut
* Envoi d'une pulse de clk
* Din à l'état bas
* Envoi d'une pulse de clk
* ENB à l'état haut (tous les registres sont RAZ)
* ENB à l'état bas
* Envoi du registre C (8 bits)
* ENB à l'état
* ENB à l'état bas
* Envoi du registre R (15 ou 24 bits)
* ENB à l'état haut
* ENB à l'état bas
* Envoi du registre N (16 bits)
* ENB à l'état
→ pour un changement de fréquence, il suffit de ne renvoyer que le register N
Configuration du MC145170 avec un oscillateur externe de 4MHz (4000KHz) pour une fréquence de comparaison de 10KHz
Valeurs des différents registres :Le registre C aura pour valeur (8 bits) : Décimal : 39
Hexadécimal : 27
Binaire : 00100111
C7 : 0 Polarity unchanged
C6 : 0 Differential phase detector disable
C5 : 1 Enable the lock detector output -> oui
C4 : 0 OSCin is selected
C3 : 0
C2 : 1
C1 : Enable the f
V output → oui
C0 : Enable the f
R output → oui
Le registre R aura pour valeur (15 ou 24 bits) :Décimal :400 (4000/10) → (4MHz/10KHz)
Hexadécimal : 01 90
Binaire 16 bits : 00000001 10010000
Binaire 15 bits : 0000001 10010000
Le binaire 15 bits est possible car R ne dépasse la valeur.
Pour des valeurs largement supérieures le binaire 24 bits aurai du être utilisé
Le registre N aura pour valeur (16 bits) : (pour une fréquence de 108,50MHz)Décimal : 10850 → 108500KHz/10KHz
Hexadécimal : 2A 62
Binaire 16 bits : 00101010 01100010
Il est possible de programmer en dur l'envoi des registres C et R en binaire.
Par contre, j'ai déclaré dans mon source la valeur d'affichage de la fréquence en « unsigned long » (MikroC pour Pic) pour l'afficher au travers du MAX7219.
Je vais devoir donc convertir cette valeur en binaire 16 bits avant de l'envoyer au MC145170.
Je dispose d'une routine de convertion pour le compilateur CCS.
Le valeur à transmettre est déclarée à l'identique. Une sous-routine convertis cette valeur en binaire avec une librairie « shift_left » propre à CSS. Je ne trouve pas l'identique dans MikroC qui pour moi correspondrai à une rotation à gauche
Code : Tout sélectionner
void tune_pll(void)
{
int ctr;
unsigned long n_reg;
n_reg = Channel + 30940;
CLK = 0;
EN = 0;
for( ctr = 0 ; ctr <= 15 ; ctr++)
{
DIN = shift_left(&n_reg, 2, 0);
CLK = 1;
CLK = 0;
}
DIN = 0;
EN = 1;
}Ci-dessous le détail de la fonction Shift_Left de CCS
ccs_c Shift_left().pdf
Questions :
1° Mon interprétation du data est-elle correcte ?
2° Ma fréquence d'émission est déclarée en « unsigned long » dans MikroC pour PIC. Un forumeur disposerai t-il d'une routine pour transposer cette valeur en binaire pour l'envoi au registre N ?
François
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.