Domanda banale...

13 Anni 9 Mesi fa - 13 Anni 9 Mesi fa #6 da ElleErre
Risposta da ElleErre al topic Re: Domanda banale... La domada si complica...
Ignorate il post che ho lasciato questa notte! .....


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.... :blink:

ElleErre
Ultima Modifica 13 Anni 9 Mesi fa da ElleErre.

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

  • ElleErre
  • Avatar di ElleErre
  • New Member
  • New Member
Di più
13 Anni 9 Mesi fa - 13 Anni 9 Mesi fa #7 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Domanda banale...
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
Ultima Modifica 13 Anni 9 Mesi fa da Mauro Laurenti.

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

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
13 Anni 9 Mesi fa #8 da ElleErre
Risposta da ElleErre al topic Re: Domanda banale...

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 ::cheer: :silly:

ElleErre

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

  • ElleErre
  • Avatar di ElleErre
  • New Member
  • New Member
Di più
13 Anni 9 Mesi fa #9 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Domanda banale...
Grazie per aver condiviso le tue impressioni.

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.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
Moderatori: Mauro LaurentiStefA

Registrati al sito

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

Registrati al sito LaurTec.

Login