- Messaggi: 1010
- Ringraziamenti ricevuti 107
Problemi di compilazione con MPLAB X
7 Anni 3 Mesi fa - 7 Anni 3 Mesi fa #1
da Pinna
Chi vola vale, chi vale vola, chi non vola è un vile
Problemi di compilazione con MPLAB X è stato creato da Pinna
Sto utilizzando una vecchia versione di MPLABX, (la 2.05), e XC8 1.21 per due semplici motivi: il primo è che quelle successive non mi riconoscono il pickit3, il secondo è che non ho nè tempo e neanche la voglia di stare ad inseguire tutte le nuove versioni rilasciate ogni due mesi per questo ambiente che non mi piace per niente (lento, pieno di bug ecc...) Comunque il punto non è questo..... ho due freedom collegate in spi con due moduli NFR24L01...... uno trasmette i dati via radio e l'altro li riceve....se nel primo, in trasmissione, inizializzo la board con void board_initializion (); (pag 395 XC8 step by step) la routine scritta a parte viene eseguita perfettamente..... se faccio la stessa cosa nella parte ricevente...... non ricevo nulla..... ma se le impostazioni della board le scrivo all'interno della main ricevente senza creare la subroutine a parte allora riceve benissimo..... non solo...... se faccio il contrario, ovvero se scrivo la routine di inizializzazione all'interno della main trasmittente i tempi di trasmissione teorici vengono triplicati!!!!!!! non 300 ms, ma quasi 1 secondo per ogni dato inviato...... qualcuno, gentilmente, ha qualche suggerimento da darmi? io non capisco questa astrusità e non ho tempo di stare a rincorrere un ambiente di programmazione, compilatore compreso, che mi sta facendo impazzire (e non credo di essere il solo).... certo, se voglio, lascio stare tutto come ho già scritto e non ho problemi..... entrambi i programmi funzionano alla perfezione.... il fatto è che vorrei capire cosa non va in questo compilatore..... vorrei capire perchè se scrivo 4 + 3 ottengo 7 come risultato ma se scrivo (4 + 3) non ottengo nessun risultato..... e se facessi il gambero e tornassi al veccio molbab 8.4? quasi quasi.....
Marcello
Marcello
Chi vola vale, chi vale vola, chi non vola è un vile
Ultima Modifica 7 Anni 3 Mesi fa da Pinna.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Pinna
- Autore della discussione
- Moderator
Riduci
Di più
7 Anni 2 Mesi fa #2
da firstcolle
Risposta da firstcolle al topic Problemi di compilazione con MPLAB X
Ciao,
detto così non si capisce molto.. qualche riga di codice?
per quanto riguada il triplicarsi dei tempi l'unica cosa che mi viene in mente sono i settaggi dell'oscillatore del PIC oppure la costante XTAL_FREQ utilizzata nei cicli di delay.
Sul compilatore. io lo uso dalla versione 1.0 e devo dire che nel tempo è migliorato parecchio... se rilasciano nuove versioni ogni 2 mesi è proprio per risolvere bug. ad oggi uso la 4.0 con Xc8 1.43 e le cose vanno anni luce meglio rispetto alle prime versioni. ti consiglio di provare ad aggiornare tanto se già così hai problemi non puoi peggiorare la situazione...
aggiornando l'ambiente ti aggiorna anche il firmware del pickit 3
detto così non si capisce molto.. qualche riga di codice?
per quanto riguada il triplicarsi dei tempi l'unica cosa che mi viene in mente sono i settaggi dell'oscillatore del PIC oppure la costante XTAL_FREQ utilizzata nei cicli di delay.
Sul compilatore. io lo uso dalla versione 1.0 e devo dire che nel tempo è migliorato parecchio... se rilasciano nuove versioni ogni 2 mesi è proprio per risolvere bug. ad oggi uso la 4.0 con Xc8 1.43 e le cose vanno anni luce meglio rispetto alle prime versioni. ti consiglio di provare ad aggiornare tanto se già così hai problemi non puoi peggiorare la situazione...
aggiornando l'ambiente ti aggiorna anche il firmware del pickit 3
Si prega Accedi o Crea un account a partecipare alla conversazione.
- firstcolle
- Platinum Member
Riduci
Di più
- Messaggi: 362
- Ringraziamenti ricevuti 39
7 Anni 2 Mesi fa #3
da Pinna
Chi vola vale, chi vale vola, chi non vola è un vile
Risposta da Pinna al topic Problemi di compilazione con MPLAB X
Ciao firstcolle,
quando avrò finito, conto di scrivere un tutorial insieme a mpeino per l'utilizzo di questo moduli, per cui ci saranno tutti i sorgenti a disposizione di tutta la comunità il problema è questo (ricopio qui l'esempio che ha scritto Mauro per il master spi a pag. 399 del manuale XC8 step by step, levando al momento le istruzioni inutili allo scopo di far capire il problema. Supponi che questa sia la parte TX:
int main(void) {
board_initialization ();
}
//*************************************
// Implementazione della funzione
//*************************************
void board_initialization (void) {
// Imposto PORTA
LATA = 0x00;
TRISA = 0xFF;
// Imposto PORTB
LATB = 0x00;
TRISB = 0b11111101;
// Imposto PORTC
LATC = 0x00;
TRISC = 0b01111111;
// Imposto PORTD
LATD = 0x00;
TRISD = 0x00;
// Imposto PORTE
LATE = 0x00;
TRISE = 0xFF;
// Tutte le porte Analogiche sono impostate come I/O
ADCON1 = 0x0F;
//Attivo i restitori di pull-up su PORTB
INTCON2bits.RBPU = 0;
}
In questo modo la parte TX trasmette i dati regolarmente ma se faccio la stessa cosa dalla parte RX non ricevo nulla.... ma se la parte RX la scrivo in questo modo, ovvero all'interno del main, allora li riceve, ma con tempi velocissimi, inferiori a 300 ms....:
int main(void) {
// Imposto PORTA
LATA = 0x00;
TRISA = 0xFF;
// Imposto PORTB
LATB = 0x00;
TRISB = 0b11111101;
// Imposto PORTC
LATC = 0x00;
TRISC = 0b01111111;
// Imposto PORTD
LATD = 0x00;
TRISD = 0x00;
// Imposto PORTE
LATE = 0x00;
TRISE = 0xFF;
// Tutte le porte Analogiche sono impostate come I/O
ADCON1 = 0x0F;
//Attivo i restitori di pull-up su PORTB
INTCON2bits.RBPU = 0;
}
se invece anche la parte TX la scrivo come la parte RX allora non ho problemi ed i 300 ms vengono rispettati......
spero di essere stato chiaro.... PERO' ADESSO CHE CI PENSO!!!!! anni fa ebbi problemi con la dichiarazione void board init e void board initialize..... infatti io non ho scritto board initialization ma board init...... dopo provo a cambiare i nomi delle routine!!! E' probabile che il problema sia proprio questo anche se i motivi mi sono sconosciuti, come d'altronde lo erano anni fa!!!!!
Marcello
quando avrò finito, conto di scrivere un tutorial insieme a mpeino per l'utilizzo di questo moduli, per cui ci saranno tutti i sorgenti a disposizione di tutta la comunità il problema è questo (ricopio qui l'esempio che ha scritto Mauro per il master spi a pag. 399 del manuale XC8 step by step, levando al momento le istruzioni inutili allo scopo di far capire il problema. Supponi che questa sia la parte TX:
int main(void) {
board_initialization ();
}
//*************************************
// Implementazione della funzione
//*************************************
void board_initialization (void) {
// Imposto PORTA
LATA = 0x00;
TRISA = 0xFF;
// Imposto PORTB
LATB = 0x00;
TRISB = 0b11111101;
// Imposto PORTC
LATC = 0x00;
TRISC = 0b01111111;
// Imposto PORTD
LATD = 0x00;
TRISD = 0x00;
// Imposto PORTE
LATE = 0x00;
TRISE = 0xFF;
// Tutte le porte Analogiche sono impostate come I/O
ADCON1 = 0x0F;
//Attivo i restitori di pull-up su PORTB
INTCON2bits.RBPU = 0;
}
In questo modo la parte TX trasmette i dati regolarmente ma se faccio la stessa cosa dalla parte RX non ricevo nulla.... ma se la parte RX la scrivo in questo modo, ovvero all'interno del main, allora li riceve, ma con tempi velocissimi, inferiori a 300 ms....:
int main(void) {
// Imposto PORTA
LATA = 0x00;
TRISA = 0xFF;
// Imposto PORTB
LATB = 0x00;
TRISB = 0b11111101;
// Imposto PORTC
LATC = 0x00;
TRISC = 0b01111111;
// Imposto PORTD
LATD = 0x00;
TRISD = 0x00;
// Imposto PORTE
LATE = 0x00;
TRISE = 0xFF;
// Tutte le porte Analogiche sono impostate come I/O
ADCON1 = 0x0F;
//Attivo i restitori di pull-up su PORTB
INTCON2bits.RBPU = 0;
}
se invece anche la parte TX la scrivo come la parte RX allora non ho problemi ed i 300 ms vengono rispettati......
spero di essere stato chiaro.... PERO' ADESSO CHE CI PENSO!!!!! anni fa ebbi problemi con la dichiarazione void board init e void board initialize..... infatti io non ho scritto board initialization ma board init...... dopo provo a cambiare i nomi delle routine!!! E' probabile che il problema sia proprio questo anche se i motivi mi sono sconosciuti, come d'altronde lo erano anni fa!!!!!
Marcello
Chi vola vale, chi vale vola, chi non vola è un vile
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Pinna
- Autore della discussione
- Moderator
Riduci
Di più
- Messaggi: 1010
- Ringraziamenti ricevuti 107
7 Anni 2 Mesi fa #4
da Pinna
Chi vola vale, chi vale vola, chi non vola è un vile
Risposta da Pinna al topic Problemi di compilazione con MPLAB X
..... mplabX è proprio eccezionale, per non parlare poi del suo compilatore..... nel suo dna c'è scritto che deve farmi impazzire senza darmi un attimo di tregua...... già, lo stesso firmware che programmo (e mai modificato) gira finchè tengo l'alimentatore acceso (e fino ad ieri non faceva questo scherzo). Se lo spengo e poi lo riaccendo non gira più..... allora devo riprogrammare ed accade la stessa, medesima cosa...... a questo punto mi chiedo se i tecnici e programmatori microchip non abbiano partecipato a qualche festival del bourbon prima di scrivere le loro fetide routine..... ma andate al diavolo!!!!! scusate se ho il dente avvelenato, ma io ci tengo a fare cose serie nel poco tempo libero che ho e non voglio rompermi le scatole con questo accrocchio che sembra fatto, anzi secondo me è fatto, da quattro beoni texani !!!! puah, e non sono i microcontrollori che sto usando ad essere guasti, visto che venendomi il dubbio li ho testati con altri programmi, sulle stesse porte utilizzate e questi problemi non li ho.... insomma, è una vera ciofeca.......
Marcello
Marcello
Chi vola vale, chi vale vola, chi non vola è un vile
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Pinna
- Autore della discussione
- Moderator
Riduci
Di più
- Messaggi: 1010
- Ringraziamenti ricevuti 107
7 Anni 2 Mesi fa - 7 Anni 2 Mesi fa #5
da Pinna
Chi vola vale, chi vale vola, chi non vola è un vile
Risposta da Pinna al topic Problemi di compilazione con MPLAB X
Confermo..... MPLABX mi ricorda una cosa..... quando ancora lavoravo in stabilimento chimico usavo un cromatografo ionico HPLC marca Dionex..... ebbene, questo era in grado di rilevare 5 parti per miliardo (dico miliardo, ovvero ppb) dello ione calcio in una salamoia di cloruro sodico a 300 g/l..... dopo anni decidemmo di aggiornarci e di acquistare un altro cromatografo della stessa marca all'avanguardia...... la logica dice che se quello vecchio va bene quello nuovo farà meglio....beh, per un anno solare ci sbattei il muso, lo strumento non era in condizioni di analizzare nulla.... io pensavo di sbagliare sempre qualcosa fino a quando gli americani, venditori dello strumento, messi alle strette, ammisero che mai saremmo riusciti a fare quel tipo di analisi perchè lo strumento non ne era capace..... avevano in pratica fatto una regressione lineare vicinissima allo zero in modo teorico ma senza averla mai verificata...... restammo fregati e ci tenemmo uno strumento inutile.... beh, MPLABX è la stessa cosa....
Marcello
Marcello
Chi vola vale, chi vale vola, chi non vola è un vile
Ultima Modifica 7 Anni 2 Mesi fa da Pinna.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Pinna
- Autore della discussione
- Moderator
Riduci
Di più
- Messaggi: 1010
- Ringraziamenti ricevuti 107
Moderatori: Mauro Laurenti
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.