Pagina 1 di 1

XC8 e UART per PIC18F: solo in debug?!?

MessaggioInviato: 1 giu 2014, 13:43
da Paolino
Ciao a tutti.
Sto lavorando su un progetto che impiega, fra l'altro, la porta seriale (libreria plib/usart.h di XC8 ver. 1.31).
Si tratta di un PIC18F25k20 configurato per lavorare a 8MHz con oscillatore interno.

Ora, date un'occhiata a questa sezione di codice:

Codice: Seleziona tutto
            WriteUSART('X');
            sprintf(bufTx,"State: %2d\r\n", stato);
            putsUSART(bufTx);
            putrsUSART("Ciao\r\n");


Sul programma terminale ho la scrittura di tutto quanto ('X', State: valore_dello_stato, "Ciao") solamente se impiego il dispositivo in debug, con PICKit3 :shock:
In modalità release, invece, vedo solamente 'X'.

Evidentemente mi sto perdendo qualcosa per strada ma a continuare a guardare il codice, davvero non ne vengo fuori. #-o

Any ideas?

Grazie.

Paolo.

Re: XC8 e UART per PIC18F: solo in debug?!?

MessaggioInviato: 1 giu 2014, 15:43
da WALTERmwp
Ciao Foto UtentePaolino, ... se un "guru" viene a chiedere consiglio ... meglio muoversi con i "piedi di piombo".
No, nessuna idea ... o meglio, proverei a dare un'occhiata al codice assembler prodotto dal compilatore; mi rendo conto, però, che questo potrebbe costare tempo e pazienza.
Si potrebbe immaginare che il PICKit3 rediriga l'output di alcune funzioni (put_) senza la necessità di una specifica; in tal caso, una volta tolto il dispositivo di debug, non si vedrebbe più nulla.
La "Write", invece, sembrerebbe appunto strutturata diversamente.
Immagino che potrebbe passare per un'ipotesi un po' "balzana" ma, in mancanza d'altro ... almeno per ora ...
Continuando su questa falsa riga, un po' speculativa, si potrebbe verificare l'esistenza, nel compilatore, di una direttiva a riguardo.
Mi rendo conto che è poco, e i vetri sono scivolosi, però ...

Saluti

Re: XC8 e UART per PIC18F: solo in debug?!?

MessaggioInviato: 1 giu 2014, 20:19
da Paolino
Grazie, Foto UtenteWALTERmwp per la risposta.
Pensare di dare un'occhiata al codice generato è senz'altro una buona idea, ma ammetto che mi scoraggia e non poco... :cry: Non foss'altro, sono un po' incasinato in questo periodo e la testa a volte proprio non c'è.

La cosa strana che mi lascia davvero perplesso è che sembra andare in tilt sia parte delle funzioni UART ma anche una parte di stdio.h (sprintf è una funzione di quell'header).

Lo so, dovrei indagare con più attenzione e sviscerare il problema. Ma dato che (perdona la ripetizione) sono un po' cotto, punterei ad un work-around, magari scrivendomi parte delle funzioni di scrittura delle stringhe.

In alternativa, proverò col medesimo hardware, a scrivere un programmino che impieghi solamente la seriale, così da cercare di escludere altre variabili.

Grazie ancora.

Ciao.

Paolo.

Re: XC8 e UART per PIC18F: solo in debug?!?

MessaggioInviato: 2 giu 2014, 9:13
da Paolino
Per completezza, informo che ho risolto il problema. \O-<
Dopo il post con Foto UtenteWALTERmwp, ho letto e riletto il codice per l'ennesima volta senza trovarci nulla di strano finché non mi sono accorto un banale ma madornale errore: i configuration bits, messi in un file a parte, venivano inseriti nel progetto non all'inizio bensì dopo aver incluso qualche header #-o

Mea culpa, quindi. Quando il progetto è cresciuto un po', non mi sono accorto di aver inavvertitamente spostato #include "confbits.h" troppo in avanti... :-"

Ora procedo con il resto. :ok:

Ciao.

Paolo.

Re: XC8 e UART per PIC18F: solo in debug?!?

MessaggioInviato: 2 giu 2014, 12:49
da WALTERmwp
Grazie @Paolino per la tua segnalazione, un particolare che così potrò (potremo) tenere presente in future sperimentazioni.

Saluti

Re: XC8 e UART per PIC18F: solo in debug?!?

MessaggioInviato: 2 giu 2014, 23:32
da thexeno
Voi esperti dovreste avere molti più problemi. Non hai idea delle cose che noi nonguru impariamo preventivamente...