BONJOUR
je suis sur un projet; c'est un générateur de fonction a base de AD9833.
je doit faire un programme en C sur mikroC qui permet de generer un signal sinusoidal,triangulaire ou carré de 1hz à 1Khz.j'utilise le PORTC (communication spi) d'un pic14f452.j'utilise la broche RC0 --> correspond au FSYNK de l'AD9833
RC3 --> correspond au SCLK de l'AD9833
RC4 --> correspond au SDATA de l'AD9833
Voici la datasheet du composant AD9833:
http://www.analog.com/en/rfif-compo...ts/product.html
Voici le programme, celui-ci ne marche pas est ce que quelque'un peu me dire pourquoi?
void main()
{
// Initialisation des variables
unsigned int Control_REG ;
unsigned char fort,faible;
unsigned int FREQ0_REG_LSB ;
unsigned char fort1,faible1;
unsigned int FREQ0_REG_MSB ;
unsigned char fort2,faible2;
unsigned int FREQ1_REG_LSB ;
unsigned char fort3,faible3;
unsigned int FREQ1_REG_MSB ;
unsigned char fort4,faible4;
unsigned int PHASE0 ;
unsigned char fort5,faible5;
unsigned int PHASE1 ;
unsigned char fort6,faible6;
unsigned int Control_REG_END;
unsigned char fort7,faible7;
// Initialisation du PORTC0
PORTC = 0; // Initialisation PORTC
//RC3, CLK en sortie
TRISC.RC3 = 0; // Configure PORTC3 en sortie
//RC5, SDO en sortie
TRISC.RC5 = 0; // Configure PORTC5 en sortie
// Initialisation de la SPI
SSPSTAT = 0x40; //bit 6 CKE=0, Bit 7 SMP=0
//l'envoi des données se fera sur front montant CLK
SSPCON1 = 0x20;
//Mise à 0 du bit CKP, au repos l'horloge est à l'état bas et mise à 1 du bit
//SSPEN (ACTIVE SPI)
//2108 69F1 4000 8000 8000 C000 E000 2008 =1K
//2100 6666 5999 8000 8000 C000 E000 2000 =10M
Control_REG = 0b0010000100000000;
fort = Control_REG >>8;
faible = Control_REG & 0x00FF;
FREQ0_REG_LSB = 0b0110100111110001;
fort1 = FREQ0_REG_LSB >>8;
faible1 = FREQ0_REG_LSB & 0x00FF;
FREQ0_REG_MSB = 0b0100000000000000;
fort2 = FREQ0_REG_MSB >>8;
faible2 = FREQ0_REG_MSB & 0x00FF;
FREQ1_REG_LSB = 0b1000000000000000;
fort3 = FREQ1_REG_LSB >>8;
faible3 = FREQ1_REG_LSB & 0x00FF;
FREQ1_REG_MSB = 0b1000000000000000;
fort4 = FREQ1_REG_MSB >>8;
faible4 = FREQ1_REG_MSB & 0x00FF;
PHASE0 = 0b1100000000000000;
fort5 = PHASE0 >>8;
faible5 = PHASE0 & 0x00FF;
PHASE1 = 0b1110000000000000;
fort6 = PHASE1 >>8;
faible6 = PHASE1 & 0x00FF;
Control_REG_END = 0b0010000100000000;
fort = Control_REG_END >>8;
faible = Control_REG_END & 0x00FF;
// Envoi d'une données
PORTC.RC0 = 0 ; // activate CS pin PORTC .AD9833_CS_PIN
SSPBUF=fort; //Mettre les données Control_REG dans SSPBUF
while (!SSPSTAT.BF == 1); //Attendre la Fin de l'emission
SSPBUF=faible;
while (!SSPSTAT.BF == 1); //Attendre la Fin de l'emission
SSPBUF=fort1; //Mettre les données Control_REG dans SSPBUF
while (!SSPSTAT.BF == 1); //Attendre la Fin de l'emission
SSPBUF=faible1;
while (!SSPSTAT.BF == 1); //Attendre la Fin de l'emission
SSPBUF=fort2; //Mettre les données Control_REG dans SSPBUF
while (!SSPSTAT.BF == 1); //Attendre la Fin de l'emission
SSPBUF=faible2;
while (!SSPSTAT.BF == 1); //Attendre la Fin de l'emission
SSPBUF=fort3; //Mettre les données Control_REG dans SSPBUF
while (!SSPSTAT.BF == 1); //Attendre la Fin de l'emission
SSPBUF=faible3;
while (!SSPSTAT.BF == 1); //Attendre la Fin de l'emission
SSPBUF=fort4; //Mettre les données Control_REG dans SSPBUF
while (!SSPSTAT.BF == 1); //Attendre la Fin de l'emission
SSPBUF=faible4;
while (!SSPSTAT.BF == 1); //Attendre la Fin de l'emission
SSPBUF=fort5; //Mettre les données Control_REG dans SSPBUF
while (!SSPSTAT.BF == 1); //Attendre la Fin de l'emission
SSPBUF=faible5;
while (!SSPSTAT.BF == 1); //Attendre la Fin de l'emission
SSPBUF=fort6; //Mettre les données Control_REG dans SSPBUF
while (!SSPSTAT.BF == 1); //Attendre la Fin de l'emission
SSPBUF=faible6;
while (!SSPSTAT.BF == 1); //Attendre la Fin de l'emission
SSPBUF=fort7; //Mettre les données Control_REG dans SSPBUF
while (!SSPSTAT.BF == 1); //Attendre la Fin de l'emission
SSPBUF=faible7;
while (!SSPSTAT.BF == 1); //Attendre la Fin de l'emission
PORTC.RC0 = 1 ; // déactivé PORTC.AD9833_CS_PIN
MERCI D'AVANCE
-----