R
reddster
Guest
Ciao a tutti!
Sono uno studente in fase di un progetto che coinvolge l'interfacciamento
del PIC16F877 ad un Phase Locked loop device (ADF4360 -
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
utilizzando la SPI.
Fondamentalmente, ho bisogno di inviare, via SDO, 3 partite di 24 bit per
il dispositivo per inizializzare esso.Sono preoccupato che io possa perdere poche righe
di codice, perché non ho potuto rilevare il segnale SCK dal pin SCK (RC3).
Inoltre, sto facendo in modo corretto per l'inizializzazione del SSPSTAT, SSPCON
e la parte di invio?
Mi rendo perfettamente conto del vostro aiuto!
Questo è il mio codice in linguaggio C:# include <pic1687x.h>
# include "delay.c"void main () (PORTA = 0x00;
PORTB = 0x00;
PORTC = 0x00;
PORTD = 0x00;
PORTE = 0x00;
TRISC = 0b00010000; / / RC4 = dati SPI In
TRISD = 0x00;
TRISB = 0b00000001; / / input = RB0
TRISA = 0x00;
TRISE = 0x00;/ / PLL inizializzazione
/ / Contatore R = 0011 0000 0000 0000 0111 1001
/ / Control latch = 0000 1111 1111 0001 0000 0100
/ / Contatore N = 0000 0000 1011 0100 0000 0010SSPSTAT = 0b01000000;
SSPCON = 0b00100010;
SSPBUF = 0b00110000; / / contatore R
SSPBUF = 0b00000000;
SSPBUF = 0b01111001;
RA5 = 1; / / LE alta per trasferire i dati dal registro a scorrimento a scrocco
RA5 = 0;
SSPBUF = 0b00001111; / / Control
SSPBUF = 0b11110001;
SSPBUF = 0b00000100;
RA5 = 1; / / LE alta per trasferire i dati dal registro a scorrimento a scrocco
RA5 = 0;
DelayMs (20); / / Delay tra controllo e N Counter
SSPBUF = 0b00000000; / / N Counter
SSPBUF = 0b10110100;
SSPBUF = 0b00000010;
RA5 = 1; / / LE alta per trasferire i dati dal registro a scorrimento a scrocco
RA5 = 0;while (1) (
if (RB0 == 1) / / Quando RB0 è alta, tirare CE pin alta per accendere il PLL
RC1 = 1;
if (RB0 == 0) / / Quando RB0 è bassa, tirare CE ridotto di pin per disattivare PLL
RC1 = 0;
)
) / / Fine del mainGrazie ancora!
Sono uno studente in fase di un progetto che coinvolge l'interfacciamento
del PIC16F877 ad un Phase Locked loop device (ADF4360 -
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />
utilizzando la SPI.
Fondamentalmente, ho bisogno di inviare, via SDO, 3 partite di 24 bit per
il dispositivo per inizializzare esso.Sono preoccupato che io possa perdere poche righe
di codice, perché non ho potuto rilevare il segnale SCK dal pin SCK (RC3).
Inoltre, sto facendo in modo corretto per l'inizializzazione del SSPSTAT, SSPCON
e la parte di invio?
Mi rendo perfettamente conto del vostro aiuto!
Questo è il mio codice in linguaggio C:# include <pic1687x.h>
# include "delay.c"void main () (PORTA = 0x00;
PORTB = 0x00;
PORTC = 0x00;
PORTD = 0x00;
PORTE = 0x00;
TRISC = 0b00010000; / / RC4 = dati SPI In
TRISD = 0x00;
TRISB = 0b00000001; / / input = RB0
TRISA = 0x00;
TRISE = 0x00;/ / PLL inizializzazione
/ / Contatore R = 0011 0000 0000 0000 0111 1001
/ / Control latch = 0000 1111 1111 0001 0000 0100
/ / Contatore N = 0000 0000 1011 0100 0000 0010SSPSTAT = 0b01000000;
SSPCON = 0b00100010;
SSPBUF = 0b00110000; / / contatore R
SSPBUF = 0b00000000;
SSPBUF = 0b01111001;
RA5 = 1; / / LE alta per trasferire i dati dal registro a scorrimento a scrocco
RA5 = 0;
SSPBUF = 0b00001111; / / Control
SSPBUF = 0b11110001;
SSPBUF = 0b00000100;
RA5 = 1; / / LE alta per trasferire i dati dal registro a scorrimento a scrocco
RA5 = 0;
DelayMs (20); / / Delay tra controllo e N Counter
SSPBUF = 0b00000000; / / N Counter
SSPBUF = 0b10110100;
SSPBUF = 0b00000010;
RA5 = 1; / / LE alta per trasferire i dati dal registro a scorrimento a scrocco
RA5 = 0;while (1) (
if (RB0 == 1) / / Quando RB0 è alta, tirare CE pin alta per accendere il PLL
RC1 = 1;
if (RB0 == 0) / / Quando RB0 è bassa, tirare CE ridotto di pin per disattivare PLL
RC1 = 0;
)
) / / Fine del mainGrazie ancora!