- Messaggi: 1222
- Ringraziamenti ricevuti 104
usart c18 step by step con compilatore xc8
PLLDIV = 1
CPUDIV = OSC1_PLL2
e non settandoli nel main il compilatore prende quei valori.
In XC8 invece richiede tutte le configurazioni e il file fornito nella libreria ha settaggi diversi.
Farò qualche prova per vedere se ho detto solo boiate..se nel frattempo passerà di qui Mauro sicuramente farà luce.
@alpignolo: prova ad includere il file LCD_44780.h anche dal main e vedi se da errore o cambia qualcosa (sul progetto che non ti funziona il display).
Ste
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Si prega Accedi o Crea un account a partecipare alla conversazione.
- StefA
- Moderator
Prendendo il tuo progetto, "USART_non funz.X", non ho modificato niente (tranne l'aver messo #pragma config CPUDIV = OSC1_PLL2) l'ho solo compilato e programmato e provandolo funziona come dovrebbe.
Ho anche provato pari pari il programma dell'esempio del libro e dopo aver incluso i percorsi, compilato e programmato, funziona anch'esso, lo allego tanto per..
il problema potrebbe anche essere altrove..
la freedom II l'hai presa montata in kit o solo il pcb? nel qual caso che display monti?
Ste
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Si prega Accedi o Crea un account a partecipare alla conversazione.
- StefA
- Moderator
- Messaggi: 1222
- Ringraziamenti ricevuti 104
Ciao Marcello,Sono contento di esserti stato d'aiuto!!!Pinna ha scritto: Ciao Andrea, confermo quello che dici, almeno per quanto riguarda #pragma config CPUDIV=OSC1_PLL2. Non riuscivo a far funzionare l'usart con xc8 ma, dopo la tua osservazione, va che è una bellezza. Non solo, ho risolto un problema che mi assillava da molte settimane e per questo, con la mia benedizione, hai il mio grazie
Marcello
Ciao Ste grazie per le prove, condivido la tua osservazione sui settaggi mplab/mplabx.StefA ha scritto: Credo che in MPLAB Ide di default si abbiano i seguenti valori:
PLLDIV = 1
CPUDIV = OSC1_PLL2
e non settandoli nel main il compilatore prende quei valori.
In XC8 invece richiede tutte le configurazioni e il file fornito nella libreria ha settaggi diversi.
Farò qualche prova per vedere se ho detto solo boiate..se nel frattempo passerà di qui Mauro sicuramente farà luce.
@alpignolo: prova ad includere il file LCD_44780.h anche dal main e vedi se da errore o cambia qualcosa (sul progetto che non ti funziona il display).
Ste
Ho provato a includere anche il file LCD_44780.h e anche il delay.h ma il risultato è analogo
Ho provato a compilare "USART_non funz.X" che ho postato cambiando solo #pragma config CPUDIV =OSC1_PLL2 ma non va. La freedom II l'ho presa già montata, adesso che ci penso però mi viene un dubbio, quando ho seguito il corso con i pic16 su settorezero ho avuto un problema con il display che ho risolto aumentando i ritardi nella libreria. Da qualche parte nel forum avevo letto che sulla versione 3 della freedom II sono state inserite delle resistenze di protezione che rallentano il segnale e quindi è necessario aumentare i ritardi.Ho raddoppiato i ritardi nel file LCD_44780.c ed ora "USART_non funz.X" funziona correttamente. Però mi sembra strano che la libreria LCD_44780 non vada bene per la v.3 della freedom 2 probabilmente ho un display un pò "sfortunato" .StefA ha scritto: ho fatto qualche prova.
Prendendo il tuo progetto, "USART_non funz.X", non ho modificato niente (tranne l'aver messo #pragma config CPUDIV = OSC1_PLL2) l'ho solo compilato e programmato e provandolo funziona come dovrebbe.
Ho anche provato pari pari il programma dell'esempio del libro e dopo aver incluso i percorsi, compilato e programmato, funziona anch'esso, lo allego tanto per..
il problema potrebbe anche essere altrove..
la freedom II l'hai presa montata in kit o solo il pcb? nel qual caso che display monti?
Ste
Andrea
p.s. Ho provato il programma che hai postato, ho lo stesso problema con il display(che si risolve aumentando i ritardi)
Si prega Accedi o Crea un account a partecipare alla conversazione.
- alpignolo
- Autore della discussione
- Junior Member
- Messaggi: 33
- Ringraziamenti ricevuti 1
Se scrivi un programma che scrive solo una frase sul display funziona o no? (intendo senza modificare i tempi della libreria).
Immagino tu non abbia la possibilità di cambiare display e fare una prova...
Ste
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Si prega Accedi o Crea un account a partecipare alla conversazione.
- StefA
- Moderator
- Messaggi: 1222
- Ringraziamenti ricevuti 104
Ho provato con il programma che stampa Hello World:
con #pragma config CPUDIV=OSC3_PLL4 funziona,
se metto #pragma config CPUDIV=OSC1_PLL2 stampa caratteri strani (vedi foto allegata)
se metto #pragma config CPUDIV=OSC1_PLL2 e aggiungo il ritardo scritto in rosso nel file LCD_44780.c funziona correttamente (suppongo che il display in questione abbia bisogno di un tempo maggiore per l'enable)
void enable_pulse_LCD (void) {
LCD_E = 1;
delay_ms (2);
LCD_E = 0;
delay_ms (1);
delay_ms (1);
}
Allego anche una copia del programma hello world che ho utilizzato in configurazione #pragma config CPUDIV=OSC1_PLL2 e ritardo enable raddoppiato. I file di libreria sono sempre nella sottocartella librerie
Andrea
Si prega Accedi o Crea un account a partecipare alla conversazione.
- alpignolo
- Autore della discussione
- Junior Member
- Messaggi: 33
- Ringraziamenti ricevuti 1
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.