Ciao a tutti,
inanzitutto a voi l'estratto incriminato del codice:
Code:
/invio WORDS al DDS
for (cnt = 4; cnt >= 0; cnt--){
for (shift = 0; shift < 8; shift++){
DTA = wArray[cnt]; //DATA sul PIN
__delay_us(10);
CLK = 1; //clock UP
__delay_us(10);
CLK = 0; //clock DOWN
__delay_us(10);
wArray[cnt] = wArray[cnt] >> 1; //slitta DATA
}
}
ACK = 1; //acknowledge UP
__delay_us(10);
ACK = 0; //acknowledge DOWN
__delay_us(10);
veniamo al dunque: si tratta dell'invio di una serie di 5 byte ad un DDS da parte del pic, il programma prevede che DTA sia 1 o 0 a seconda dello shift di un byte, un ciclo di CLK che va a 1 e poi scende a 0 dà in pasto il bit DTA al DDS. Così per 40 volte, poi ACK va ad 1 e passa a 0 e il DDS capisce che s'è pappato tutti i BIT.
Confermo che TUTTE le porte (registri TRIS e LAT) sono state settate correttamente... e pure le dichiarazioni sono corrette, ecco gli estratti dal codice:
Code:
#define DTA PORTEbits.RE0 //DDS data
#define CLK PORTEbits.RE1 //DDS clock
#define ACK PORTEbits.RE2 //DDS acknowledge
altro estratto
Code:
//settaggio porte di comunicazione
LATA = 0x00;
TRISA = 0xFF;
//LCD display su LATB
LATB = 0x00;
TRISB = 0b11000000;
//encoder su LATC 0..2
LATC = 0x00;
TRISC = 0b11111011;
//4x4 keypad su LATD 0..3 output rughe (rows), 4..7 input colonne (cols)
LATD = 0x00;
TRISD = 0b11110000;
//DDS su LATE 0..2
LATE = 0x00;
TRISE = 0b11111000;
la questione: la cosa importante è che il bit CLK vada a 1 e torni a 0 mentre il bit DTA mantiene il suo stato... ciò accade nella versione 3.10 di MPLABX (che usavo con il PicKit3). Ciò si vede con l'uso dello strumento WATCH: LATE e PORTE rispondono correttamente come previsto.
Ma con la versione 4.15 (che ho scaricato per usare il PicKit4) non succede... usando lo strumento WATCH, si vede che il bit DTA torna sempre a 0 prima che CLK vada ad 1... LATE e PORTE fanno un po'
quello che vogliono
Mi sembra di poter escludere che il codice sia errato (ovviamente non ci sono warnings nella compilazione), c'è qualcos'altro che devo sapere per passare definitivamente alla versione 4.15 e superiori di MPLABX ?
Vi ringrazio in anticipo per l'attenzione
Matteo IV3YNB