peut aider un tout dans le SPI

A

akhileshchidare

Guest
J'ai écrit un code de communication avec SPI ADE7758.
Je veux savoir si je suis doin il vrai ou pas ...
le code est compilé avec toutes les erreurs ...mais il est logiquement ce exact?Je suis d'accès aux registres ADE par SPI à partir du contrôleur PIC ....
merci
Akhilesh

Code:

# Include "p18f6490.h"# Define CONFIG déprotéger & Boren & MCLRDIS & PWRTEN & WDTDIS & INTCLK & IESODIS & FCMDIS/*************** AnalogDevices AD7758 *******************// * Pour la lecture des registres de watt-heure * /# Define AWATTHR 0x01

# Define BWATTHR 0x02

# Define CWATTHR 0x03/ * * Pour la lecture des registres VAR-HR /# Define AVARHR 0x04

# Define BVARHR 0x05

# Define CVARHR 0x06/ * Pour la lecture des registres VA-HR * /# Define AVAHR 0x07

# Define BVAHR 0x08

# Define CVAHR 0x09/ * Pour la lecture de la I-RMS registres * /

# Define AIRMS 0x0A

# Define IRMS 0x0B

# Define CIRMS 0x0C/ * Pour la lecture des * V-RMS entrées /

# Define AVRMS 0x0D

# Define BVRMS 0x0E

# Define CVRMS 0x0F
# Define SS TRISFbits.TRISF7

# Define SCK TRISCbits.TRISC3

# Define SDI TRISCbits.TRISC4

# Define SDO TRISCbits.TRISC5unsigned char writeSPI (unsigned char DATA_OUT);

unsigned char readSPI (void);void spi_init ();

spi_init void ()

(

SSPSTATbits.CKE = 1; / * les données transmises sur fallling * / EDGE

SSPCON1bits.CKP = 1; / * * la montre est ralenti Etat /

TRISFbits.TRISF7 = 1; / * définir SS pôles comme l'entrée * /

TRISC & = 0xFD; / * définir comme SDO * / sortie

TRISC | = 0x10; / * * définir SDI d'entrée /

)void main ()

(

unsigned char DATA_OUT; adresse * / doit être envoyé à l'* registre communiccation /

unsigned char read_data; / * les données à lire à l'* registre respectif /

données unsigned int;void spi_init (); / * initialisation * SPI /writeSPI (DATA_OUT);writeSPI (AWATTHR);

data = readSPI ();writeSPI (BWATTHR);

data = readSPI ();writeSPI (CWATTHR);

data = readSPI ();writeSPI (AVARHR);

data = readSPI ();writeSPI (BVARHR);

data = readSPI ();writeSPI (CVARHR);

data = readSPI ();while (1);

)unsigned char writeSPI (unsigned char DATA_OUT)

(

SSPBUF = DATA_OUT;

if (SSPCON1 & 0x80)

retour (-1);

d'autre

(

while (! SSPSTATbits.BF);

)

return (0);

)unsigned char readSPI (void)

(

SSPBUF = 0x00;

while (! SSPSTATbits.BF);

retour (SSPBUF);

)

 
Salut;

Je pense que vous n'avez pas besoin de configurer SDI broches que i / p broches.il sera configuré automatiquement.

me demandais avez-vous calibrer IC.

Vous pouvez déboguer votre communication SPI, données par l'envoi des données que vous avez reçu de ADE 7758, à l'hyper terminal.

Il serait préférable de stocker les paramètres d'étalonnage de concevoir des EEPROM.

cheers
Nagi

 

Welcome to EDABoard.com

Sponsor

Back
Top