problemi con differenti versioni di MPLABX

  • iv3ynb
  • Autore della discussione
  • Anziano Utente
  • Anziano Utente
Di più
6 Anni 3 Mesi fa - 6 Anni 3 Mesi fa #1 da iv3ynb
problemi con differenti versioni di MPLABX è stato creato da iv3ynb
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

non esistono domande stupide, ma le risposte...
Ultima Modifica 6 Anni 3 Mesi fa da iv3ynb.

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • firstcolle
  • Platino Utente
  • Platino Utente
Di più
6 Anni 3 Mesi fa #2 da firstcolle
Risposta da firstcolle al topic problemi con differenti versioni di MPLABX
Ciao,
io proverei prima ad installare l'ultima versione di mplabx e la penultima versione del compilatore.. (mplabx 5.05 e xc8 1.43).

mi sembra di capire che i poblemi siano in fase di debug. togli ogni ottimizzazione che magari è solo quello, e prova a programmare senza debug, di solito se ci sono comportamenti strani in debug poi in funzionamento normale non ci sono

poi proverei a sostituire
DTA = wArray[cnt]; //DATA sul PIN
con
if (wArray[cnt] == 1)
DTA = 1;
else
DTA = 0;

Si prega Accesso o Crea un account a partecipare alla conversazione.

Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Forum - Ultimi messaggi