Bonjour,
Voila, je dois modifier mon programme pour une PLL ADF4360-1 qui fonctionne sur 24 bits.
Mais sur mon programme que j'ais maintenant il fonctionne que sur 16 bits mais avec une PLL MC145170DT2 avec un pic 18F84.
Donc je voulais savoir si quelqu'un pourrais m'aider comment faire pour modifier mon prog pour qu'il va sur 24 bits ?
J'ai déjà essayer de changer le 16 en 24 dans la déclaration des variables mais cela de marche pas.
Je pense qu'il faut que je rajoute 8 bits quand mes 16 bits on fini mais je ne vois pas comment faire.
Mon Programme :
Code:#include <htc.h> #include "delay.h" __CONFIG(WDTDIS & XT & UNPROTECT); /***************************** Déclaration des variables *************************/ unsigned char addTV1[5]={0,0,0,0,0}; unsigned char codpgmp[6]={1,0,0,0,0,0}; unsigned char codpgmm[6]={1,0,0,0,0,1}; unsigned char addrec[5]; unsigned char codrec[6]; unsigned int RegistreN = 350; // 140 MHz(TANK) / 50 KHz(fref) / 8(PRE_OUT) = 350 unsigned char ValeurRegistreBinaire[16]; unsigned char erreur; unsigned char freqplus = 0; unsigned char freqmoins = 0; unsigned char k,i; /** ROUTINE Transformer un nombre decimal en binaire sur NBits **/ void DecToBin(unsigned int NombreDecimal,char NBits) { for (k=0;k<NBits;k++) { ValeurRegistreBinaire[k] = NombreDecimal%2; NombreDecimal = NombreDecimal >> 1; } } /** ROUTINE Emettre TRAME selon adresse et code **/ void EnvoyerTrameDin(unsigned int ValeurRegistre,unsigned char NbCycles) { DecToBin(ValeurRegistre,NbCycles); //Mise de EN à 0 RB6 = 0; DelayMs(1); //Mise de CLK à 0 RB5 = 0; DelayMs(1); //Génération de la trame sur Din for (k=0;k<NbCycles;k++) { //Valeur du bit (MSB ==> LSB) sur Din RB7 = ValeurRegistreBinaire[NbCycles-1-k]; DelayMs(1); //CLK à 1 RB5 = 1; DelayMs(1); //CLK à 0 RB5 = 0; } DelayMs(5); //Mise de EN à 1 RB6 = 1; DelayMs(100); } /**PROGRAMME PRINCIPAL **/ void main(void) { TRISA = 0b00001100; TRISB = 0b00000001; //Autorisation interruption et détection sur front descendant INTEDG=0; INTE=1; GIE=1; //Initilisation PLL PORTA=0;PORTB=0; //Mise de EN à 1 RB6 = 1; Delay_s(1); //Chargement des registres: C, puis R puis N EnvoyerTrameDin(112,8); //(112)d = (01110000)b EnvoyerTrameDin(200,15);//10 MHz / 50 KHz = 200 EnvoyerTrameDin(RegistreN,16); for(;; ) { if (RA2==1 && RA3==1) { EnvoyerTrameDin(76,8); EnvoyerTrameDin(200,15);//10 MHz / 50 KHz = 200 } //Test bouton frequence moins if (RA2==1 || freqmoins==1) { DelayMs(100); //Anti-rebond bouton RegistreN--; EnvoyerTrameDin(RegistreN,16); freqmoins=0; //Pour signifier prise en compte de l'appui ou réception télécommande RB2=1;RB3=0; } //Test bouton frequence plus if (RA3==1 || freqplus==1) { DelayMs(100); //Anti-rebond bouton RegistreN++; EnvoyerTrameDin(RegistreN,16); freqplus=0; //Pour signifier prise en compte de l'appui ou réception télécommande RB2=0;RB3=1; } } }
-----