Domanda banale...
Scusate se ne approfitto...
E, attenzione!, non e' assolutamente una domanda polemica, ma una vera richiesta di aiuto!
Sono ormai 5 ore che cerco di far funzionare LCD Nokia su 18F45K20 (su 16F886 va)...
Se entrambi i linguaggi C sono ANSI, ci dovrebbe essere una portabilita' da uno verso l'altro.
Ecco uno dei problemi riscontrati...
In HiTech....
void lcd_Copyright(void)
{
lcd_WriteString(0,0,"copyright");
}
devo trasformare per PIC18 ->
void lcd_Copyright(void)
{
char cpString[] = {"copyright"};
lcd_WriteString(0,0,cpString);
}
la funzione...
void lcd_WriteString(char thePosX, char thePosY, const char *s)
{
lcd_GoTo(thePosX, thePosY);
while(*s) {lcd_WriteChar(*s++);}
}
funziona in entrambi gli ambienti
In LCD.H:
HiTech: const char fntMedium[330] = {.....}
PIC18: rom const char fntMedium[330] = {.....}
Quali, a grandi linee, le cose di cui ci si deve preoccupare di piu' passando da un C ad un altro?
O forse e' piu' corretto dire da un pic ad un altro?
C'e' un "autoapprendimento embedded" in quanto ho scritto!
Quando si e' stanchi e il cervello va in acqua, meglio fare due passi che cercare a tutti i costi una soluzione!
Mi fossi alzato prima di scriverlo....
ElleErre
Si prega Accedi o Crea un account a partecipare alla conversazione.
- ElleErre
- Autore della discussione
- New Member
mi farebbe piacere sapere a quali conclusioni sei arrivato tra il tramonto e l'alba.
Non ho personalmente usato l'HiTech e mi farebbe piacere leggere qualche riga sul confronto.
In generale, indipendentemente dal tipo di linguaggio, non mi sorprenderei che la gestione delle interruzioni, configurazioni dei registri CONF e accesso ai registri SFR possano essere "ottimizzati" in maniera diversa.
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
Mauro Laurenti ha scritto: Ciao,
mi farebbe piacere sapere a quali conclusioni sei arrivato tra il tramonto e l'alba.
Non ho personalmente usato l'HiTech e mi farebbe piacere leggere qualche riga sul confronto.
In generale, indipendentemente dal tipo di linguaggio, non mi sorprenderei che la gestione delle interruzioni, configurazioni dei registri CONF e accesso ai registri SFR possano essere "ottimizzati" in maniera diversa.
Saluti,
Mauro
Ad una sola conclusione: scegli un compilatore/linguaggio/chiamatelo_come_volete e concentrati solo su quello.
Ho scelto il C18, fosse solo per il fatto che sto usando il tuo corso in C e che, alla fine i PIC 18xx sono + performanti con un costo molto simile alla serie 16xx, utilizzati fino ad oggi con PICBasic o MikroC.
Per un novizio, alcune piccole sfumature tra sistemi di sviluppo possono diventare dei veri scogli.
Esempio: nella routine di gestione del lcd nokia per pic 16 c'e' una sezone dove, tramite array, ho definito i vari set di caratteri, le icone ecc.. da presentare a video.
Nel passare al PIC 18, ho iniziato a riadattare il codice per il nuovo processore.
Riadattare non e' la parola corretta.... a copiare piccole sezioni e a testarle ad una ad una..
Ad esempio, ho copiato l'array dei caratteri standard e la funzione lcd_WriteString(...) x vedere come si comportava.
Tutto bene.
Qundi mi sono detto.. ok, sembra funzionare. Proviamo riportare tutto in C18.
Fine dei giochi. C'erano quasi piu' errori di compilazione che righe di programma. (Il sorgente per il PIC 16F886 era scritto in C HiTech)
Uno di questi errori suonava del tipo "sfondata la ram", non lo ricordo piu' bene
Vai su internet, copia il mex si google, cerca la soluzione.
HiTech: const char fntMedium[330] = {.....}
diventa PIC18: rom const char fntMedium[330] = {.....}
Poi affronta l'altro errore, l'altro ancora ecc...
Gli errori, con il senno del poi, sono dovuti sia al passaggio da una classe di PIC ad un'altra sia (SOPRATUTTO) ad una mia convinzione errata del concetto di portabilita'.
Pur rimpiangendo un poco i sistemi di sviluppo "facciiamo tutto noi, tut dicci cosa fare" (a quest'ora, forse, avrei gia' finito), sono convinto del fatto che la strada corretta sia quella di sistemi "faccio tutto io" (C18).
La strada per ora e' in salita.
Se non avro' altri attacchi di acido lattico, spero di vedere la discesa o almeno la pianura al + presto :
ElleErre
Si prega Accedi o Crea un account a partecipare alla conversazione.
Per quanto mi riguarda questa è una delle ragioni per cui preferisco non usare funzioni speciali di un compilatore.
Inoltre cerco di programmare usando uno stile comune (legato al buon senso) che sia buono sia per il C che per il C++.
In questo modo passando da un ambiente e l'altro non ho problemi nel districarmi nel codice.
Sia che il codice sia stato scritto per PIC che per PC.
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.