Newsgroup: it.hobby.elettronica.digitale
Titolo: C o Assembler?

Ciao,
 sto valutando l'acquisto di un sistema di sviluppo per PIC (programmatore+emulatore etc.).
Hardware a parte, mi è stato detto che la microchip fornisce l'ambiente (MPLAB) che lavora
nativo in assembler. Inoltre mi è stato detto che vi sono software house che producono
versioni di C che si integrano in MPLAB (CCS, Hitech...).
Io ho programmato PIC anni fa in assembler. Il C l'ho visto solo sul PC.
Un amico mi ha cosigliato caldamente Hitech per ottimizzare il codice
Mi domando: è vantaggioso passare al C? Si riesce ugualmente a mantenere una buona
visibilità dell'hardware?
Si accettano consigli e opinioni
Grazie
Ste

 visibilità dell'hardware?
non rispondo precisamente alla tua domanda ma credo ti possa interessare:
Ho integrato il linguaggio PIC Basic Pro all'interno del sistema di sviluppo
MPLAB e funziona abbastanza bene. Pur essendo da anni abituato all'assembler
del PIC, si apprezza davvero la semplicità di linguaggio del Basic.
L'unico grosso problema che ho incontrato è l'integrazione con routine in
assembler, per gestire gli interrupt. Dopo due settimane di grattacapi,
anche per gestire un semplice timer, ho deciso di rinunciare agli interrupt.
Non ho mai lavorato in C, ma per quanto riguarda gli interrupt credo che le
problematiche siano le stesse del Basic.
MArco

 anche per gestire un semplice timer, ho deciso di rinunciare agli interrupt.
Questo non posso assulutamente permettermelo
Cmq grazie
Ste

Per quello che mi riguarda io programmo i PIC in C.
E' molto più semplice, QUASI universalmente compreso (cosa che l'ASM 
comunque se non hai le instruction set non ci fai molto)
e soprattutto lo puoi facimente trasformare in un meta linguaggio per 
farlo capire anche a chi di C non ne sa un C....
Come compilatore mi trovo MOLTO bene con quello della CCS (ho provato 
anche quello della Hitech, ma da un file .LST di uscita che non è molto 
comprensibile). E' semplice da configurare in MPLAB.
Se ti interessa ti posso mandare del codice scritto per il CCS compreso 
di compilato così ti fai una idea.
Per la visibilità dell'hardware non ci sono problemi.
La comodità del C è che deleghi al compilatore la annosa questione del 
conteggio delle istruzioni quando fai un JRNZ (salto condizionato) o 
quando hai a che fare con funzioni più complesse del tipo:
miaVar=sin(ADC)*cos(ADC/2)	<=== funzione scritta a casaccio ma plausibile
Valla mo a scrivere in ASM se sei capace!!!!
Spero di essere stato chiaro, in caso contrario scrivi pure che ti rispondo.
Ciao
	Paride


Rispondo a Tutti e 2:
In C la gestione degli interrupt è più o meno complessa a seconda del 
compilatore che usi.
Per l'inserimento di routine ASM spesso hai delle sintassi (che comunque 
dipendono dal compilatore) del tipo:
#ASM
	nop
	MOVWF 3
#ENDASM
Ciao
	Paride


 #ENDASM
non č assolutamente un problema scrivere le routine in assembler ma
purtroppo, per ciň che riguarda gli interrupt, pur salvando tutto ciň che
serve (w, status, pclath, fsr) il programma si mette a fare le bizze e
risulta estremamente difficoltoso il debug. Io dopo due settimane ho
lasciato perdere.
Marco

 Valla mo a scrivere in ASM se sei capace!!!!
Hai reso il concetto
Grazie mille
Ste

 visibilità dell'hardware?
Per questo credo che non ci siano problemi, a giudicare da qualche
sorgente C per PIC che ho visto pare che i vari registri siano mappati
direttamente come memoria e quindi si possa fare roba come *(unsigned
char*)PORTA = 0x11.
--
Lorenzo