![]() |
info linguaggio c x pic ciao a tutti,arriva l inverno e alla sera quando tutto è ok,non riesco a non fare niente,ho bisogno di una nuova esperienza,un passatempo che comunque mi possa essere utile quando ne ho bisogno o comunque da cosa nasce cosa a me interessano i pic della microchip ho avuto alcune esperienze con mikrobasic,ho comprato anche un manuale in italiano che spiegava passo passo la realizzazioni di varie funzioni,ma non mi ha soddisfatto piu di tanto continuo a trovare in rete esempi fatti in c e persone che mi consigliano di imparare il linguaggio c...piu semplice dell asembler e piu potente del basic.... ho puntato la demo di mikroc,ma avevo bisogno di imparare il linguaggio c risultato....da inesperto ho comprato il libro- microcontrollori pic -di inware edizioni,e ci sono esempi e qualche spiegazione ma per persone gia esperte o comunque gia nel giro,io non ci capisco niente,anche xchè non vengono spiegati i simboli ad esempio >>,<<,>=,<=,==,++ ecc ho trovato dei siti che sono piu umani,scrivono il listato e piu o meno spiegano cosa succede,ma alla fine non riesco a trovare qualcosa che mi possa aiutare x capire questo benedetto linguaggio in c chiedo aiuto a voi esperti,dove posso trovare info x un principiante come mè?qualcosa che mi spieghi come un bambino del asilo..cosa serve questo,come si fa quest altro ecc le porte I-O le conosco con l interrup ho gia avuto a che fare idem x adc idem x display lcd e 7 segmenti e qualcosina d altro,ma sempre con mikrobasic io ho bisogno di capire il linguaggio c spero mi possiate aiutare,grazie in anticipo |
Cerca in rete un manuale del linguaggio C generico e studiati la sintassi dei comandi. |
Non ti spaventare; leggi qui Guida C | Guide Programmazione | Programmazione.HTML.it e se hai dubbi chiedi pure. Però prima prova ad usare sangoogle :rolleyes::wink: |
grazie mille x le risposte e x avermi postato un sito......io google l ho usato,ma escono mille siti da leggere,la mia paura è.......quale di questi siti è il migliore,preferisco aver consigli da voi,cosi da non ripetere tutto da capo.......stasera incomincio la lettura.....grazie,grazie,grazie |
dimenticavo,che tipo di compilatore e ambiente di sviluppo mi consigliate di usare? devc++? lcc-win32? altro? grazie |
Citazione:
Ma tu non volevi sviluppare applicativi in C per PIC ? :rolleyes: Va benissimo il MikroC che hai già scaricato :wink: |
Vuoi un' altra guida semplice in formato html o testo gratuita per di più in italiano? Introduzione alla programmazione in C Se cerchi bene ne trovi altre 1000. Io ho sempre programmato i microcontrollori PIC in Assembly, finchè si trattava di aver a che fare con piccoli elementi hardware, poi sono ricorso al "C" per non star li a leggermi tutte le migliaia di pagine dei datasheet .. in ogni caso più avanti ti tornerà sicuramente utile anche l' Assembly, che puoi inserire direttamente dal C, per ottimizzare e creare nuove librerie per il tuo firmware. |
grazie diflix x illez sono andato in panico,scusa ma non capisco.... il sito che mi hai postato Guida C | Guide Programmazione | Programmazione.HTML.it parla dell uso di compilatore x windows......io uso vista o xp e avevo gia notato il primo esempio che tratta di vedere in schermata HELLO WORD quindi credevo che prima bisognava imparare il linguaggio c studiando i caratteri,le varie voci,quello che bisogna scrivere x questo e quello,ma ora mi dici che posso usare MIKROC SI,IO VOGLIO IMPARARE IL C X PROGRAMMARE I PIC,ma non capisco come posso vedere qualcosa in funzione con MIKROC........tipo l esempio di HELLO WORD...posso farlo anche con MIKROC? scusami,ma non riesco a capire...come posso tramite il linguaggio c che mi hai postato, passare gia a programmare qualcosina sui pic? |
inizia dalle basi: per il computer tu utilizzi (sotto windows) un file .exe che è un codice binario scritto in un certo modo, è un linguaggio macchina interpretabile dal sistema operativo. per il pic hai bisogno di un file .hex che è un file che genera numeri in esadecimale (e quì c'è matematica) che poi il PIC convete in comandi come alimentazione al pin 3 della PORTC o altro... la differenza tra dev c (che utilizzo anch'io per pc) è che genera file con funzioni per windows, utilizza le librerie di windows, se su un programma per winzozz scrivi PORTC = 00001; non succede niente, è una variabile generica mentre mikroC converte questa variable in un vero e proprio comando, usa altre librerie. la sintassi è una cosa è qualunque studi se C per pic o per pc è uguale, le funzioni e librerie specifiche sono invece diverse come ti ho spiegato nell'esempio... ok ricapitolo perchè ti ho complicato la vita: scriviamo questa parte nel dev c Codice: void main() {per la struttura quindi puoi studiare qualsiasi tipo di C, poi dovrai andare sullo specifico dei pic, come anche per linux è diverso, come anche per l'arduino ecc.. ma la sintassi è la stessa ciao lol21 |
se puo essere utile http://www.gigatano.it/Guida_C++.htm |
Citazione:
Il linguaggio C è il linguaggio C. Punto. Scrivere un programma per vedere "Hello world" su un PC non è certo immediatamente equvalente ad un programma per pic dove al massimo collego un display lcd. Come lo colleghi l'LCD? A che porte? tutti questi dettagli esulano dal linguaggio C che, ripeto, rimane tale. Mi sembrava che il tuo problema fosse capire cosa sono gli operatori di shit etc (i vari >>, << etc che hai scritto) e altri costrutti del C. |
si scusami,sono andato in paranoia,credevo che x capire meglio il linguaggio c sarebbe stato meglio viverlo con esempi che riguardavano il mondo del c.......hai perfettamente ragione. un ultima domanda,nel sito che mi hai postato,cè qualcosa in particolare da studiare oltre hai simboli e altro che non capisco o è meglio comunque leggerlo tutto? scusami le troppe domande stupide |
Citazione:
leggere tutto escludendo le parti dedicate ai vari sistemi operativi, leggere e capire gli esempi, non puoi provarli sui PIC (dove scrivi hallo world?) ma puoi capire struttura del programma, preprocessore (che il basic non ha) etc. Tieni presente che l'implementazione per i PIC avrà delle differenze in tante cose, ma non nel linguaggio; mi spiego: supponiamo di avere una variabile di tipo intero chiamata count. count++ vuol dire sempre incrementa il valore della variabile count. Ma la variabile count può essere rappresentata da 32bit su Windows, da 8 o 16 sul PIC. C'è una bella differenza quando la usi, mi son spiegato? :rolleyes: Puoi anche saltare la parte sulla gestione della memoria; nel PIC non esiste. (sinceramente non so se nei PIC più grandi viene fatto qualcosa, ma non credo) |
Il c per microcontrollori è un mondo a se stante. A parte le strutture condizionali e la maniera di scrivere le istruzioni matematiche, il C per microcontrollori va affrontato tenendo riguardo dell'architettura dei microcontrollori stessi. Due esempi: Quante chiamate di funzioni annidate puoi fare in un programma C in windows e quante in un programma per PIC? Per farlo devi sapere come funziona lo stack nei pic, ovvero quanto è profondo. Perché un programma in debug funziona ed in release no? Perché cambiano le opzioni di ottimizzazione, e magari una variabile che può cambiare sotto interrupt va dichiarata volatile. Comunque, un buon punto di partenza è quello di trovare un compilatore discreto e cominciare ad usarlo (mikroc, ma anche altri) e di non spaventarsi a chiedere. Per quanto riguarda la sintassi, il C è il linguaggio con meno istruzioni che conosco (quasi), per cui una spolverata di K&R e le ricerche su internet alla bisogna possono supplire abbondantemente. Questo avendo la pazienza di studiarsi i datasheet del core e del micro, se no, quando le cose si fanno complicate, i firmware non funzionano e non si sa perché. Tanto per essere chiari, la gestione della memoria me la studierei per bene. Ed anche il passaggio di parametri alle funzioni. |
Citazione:
K&R = Kernighan Ritchie (la 'bibbia' del linguaggio C) Il linguaggio C: principi di ... - Google Libri |
ok,grazie mille,ora mi metterò allo studio e cercar di capire segni,lettere,modi di fare che si usa nel linguaggio c.........poi partirò con mikroc..... intanto ringrazio tutti x la mano che mi avete dato...a presto |
Ciao Eli78, certo che ti sei scelto un modo ben impegnativo per passare l'inverno. Ma se avrai perseveranza e un po' di furbizia, ti darà molte soddisfazioni. Personalmente ti sconsiglio di cominciare con le PIC, perchè come microcontrollori c'è di meglio; gli Atmel tanto per cominciare. Ti consiglio la serie ATmega; periferiche interne ben architettate con datasheet chiaro e ben spiegato (in inglese). Se poi sei a digiuno di programmazione lascia serenamente perdere il C :-) e studia un po' di Pascal che è più facile e più che sufficiente per i tuoi scopi. C'è questo ottimo compilatore: E-LAB Computers Pascal-scm for Atmel AVR che è l'ideale per principianti, con un sacco di esempi pratici e manuali a corredo www.e-lab.de/AVRco/DOC_en/DocuCompiler.pdf Avrai da subito la soddisfazione di vedere "qualcosa che gira". Il giorno che avrai bisogno di prestazioni maggiori per certi punti critici, potrai inserire subroutine in assembler, mantendo la struttura principale in "comodo" pascal ;-) Buona fortuna ! |
Citazione:
Macchina molto semplice, estremamente deterministica, famiglia pressochè infinita, poco costosa, dispositivi anche pth, la trovi anche dal farmacista, sistemi di sviluppo a costo nullo o molto basso, debugger a 200 euro, infinite schede di sviluppo, documentazione completa, tutte le periferiche che vuoi ed esempi a tonnellate. Chiaro che ci sono micro "Migliori" per qualche applicazione, ma non mi sembra così fuori dal mondo uno che usa PIC |
Se è per quello, non mi sembra nemmeno fuori dal mondo imparare il C; oltretutto mi sembra di capire che qualche esperienza in Basic la ha fatta. |
Ti consiglio di investire circa 20 per questo: Il linguaggio C. Principi di programmazione e manuale di riferimento - Kernighan Brian W.; Ritchie Dennis M. - Libro - IBS - Pearson Education Italia - Accademica studiarlo bene e poi acquistare un devkit della Microchip tipo: Product Search - microchipDIRECT od altri simili, poi installarti l' IDE gratuito della Microchip unitamente alla versione studenti (gratuita) del C18 della stessa ditta. Ti consiglierei di lasciar perdere la serie 16 dei PIC sarà fra breve obsoleta, poichè cominci oggi quanto sopra ti ho consigliato credo sia più attuale. Se servono altre info chiedi pure. :yeah: |
@RedPizza: uso professionalmente il Pascal in ambiente win e lin dai tempi del primo Turbo Pascal Borland & Kylix, poi da Delphi 1 fino al 2009, ottimo per S.O. ad alto livello per i microembedded decisamente meno indicato. Sempre per professione utilizzo micro Microchip e Cypress da oltre 10 anni anche in campo automotive e la MC è sicuramente quella che offre una gamma più ampia di prodotti dalla serie 8 bit PIC10 fino ai DsPic ed ai recenti a 16 e 32 bit, credo che sia già disponibile (o lo sarà a breve) anche una preserie ARM. Il linguaggio 'C' è sicuramente il più efficiente ed il più pagante in ambito micro embedded e non solo, lo consiglio vivamente anche ad un principiante perchè quello che imparerà sarà sicuramente 'riciclabile' facilmente in futuro. Molti micro recenti sono progettati a livello strutturale per ottimizzare al massimo le prestazioni proprio tenendo conto dei compilatori 'C', in alcuni casi superiori all' assembler (ad esempio alcune funzioni di libreria per PID, FIR ed IIR per processori ARM ST sono più veloci in C che in ASM). :yeah: |
Citazione:
Come fanno alcune librerie ad essere più veloci in C che in ASM? Considerato che il C genera del codice macchina, perché non riportarlo nelle librerie ASM? Sarebbero la stessa cosa no? |
Citazione:
2) Si parla di ARM ST. :fiu: Quanto alla disponibilità di un core ARM per Microchip... Non ne ho sentito parlare, e la cosa mi lascia MOOOOOOOOOOOOOOOOOOOOOOOOOLTO perplesso, visto che in Microchip sono estremamente autarchici, e dovrebbero dismettere il 99% dei loro ambienti di sviluppo. |
Citazione:
Dipende da chi scrive il codice cosa significa? Per quanto mi risulta, il compilatore C genera codice assembler, quindi mi spiegate come fa ad assere più veloce dell'assembler stesso? grazie |
Ciao Nonino, in effetti già la prima serie Atmel AVR era nata con un instruction set ASM ottimizzato per compilatori C. E' comunque da escludere che un compilatore C possa produrre un codice asm più efficiente di una stesura diretta in assembler. Semmai potrà essere uguale e comunque dipendente dalle capacità del programmatore asm. E' infatti buona norma vedere cosa produce il compilatore C (o Pascal) rispetto a quello che avresti scritto tu. Comunque sono daccordo che sugli ARM la MChip è l'ultima che prenderei in considerazione (anche se ho appena finito un progetto LCD con PIC24FJ256). Atmel invece è un leader nel settore ARM con prodotti ben colludati. |
Questa è la spiegazione che da la ST delle migliori prestazioni del C rispetto all' asm dopo aver condotto dei benchmark sulle loro stesse librerie: "Analysis of the PID timing shows that assembly code is not as fast as C code. The compiler is more efficient in accessing variables than manual optimization (offset computation and data placement in literal pool)." La descrizione delle librerie, i test ed altro sono contenuti nel UM0585 User manual reperibile sul sito ST, precisamente: www.st.com/stonline/books/pdf/docs/14988.pdf Non essendo io un mostro del' assembler (e nemmeno del C) mi fido di chi ne sa più di me ed anche delle mie verifiche sperimentali. In alcuni casi, anche con i PIC, è piuttosto difficile ottimizzare veramente al 100% calcoli complessi in ASM, è possibile che un buon compilatore adotti strategie migliori. :yeah: |
Citazione:
Cioè la funzione PID in ASM è più lenta di quella scritta in C. Perché il compilatore è in grado di ottimizzare il codice meglio di quanto riesce a fare un umano con l'assembler. Mi chiedo allora perché tenere entrambe le versioni; probabilmente la risposta la potrei trovare leggendo un po' di più, ma non ho tempo :rolleyes: Alla fine stiamo confrontando l'assembler generato da un compilatore e l'assembler generato da un umano. Pare vinca il compilatore :D Da come scrivevi mi era sembrato di capire che il C è più veloce dell'ASM, che non ha molto senso... |
Più di dieci anni che utilizzo i pic, i primi 4 anni totalmente in assember con la serie 12-16, poi in basic con la serie 16-18, e adesso mi stò avvicinando al C utilizzando anche i DsPic, con non poche difficoltà in quanto autodidatta con basi non troppo solide e lacune ancora da colmare non indifferenti :D. E comuque il C non è insormontabile, specialmente se si parte già con le idee chiare di come funziona il pic, questo è il primo progetto sviluppato in C Dc Servo Drive - Marco Sinatti Dalle mia esperienza posso consigliare i pic dal momento che sono economici, la gamma è vastissima, i tools di sviluppo costano poco e la documentazione completata dalle application notes è più che esaustiva. Se dovessi tornare indietro, per quanto riguarda il linguaggio io mi farei qualcosina in assembler e poi integrerei subito con il C, altri linguaggi non hanno senso dal momento che il C ha una portabilità enorme, inoltre è il linguaggio più diffuso e il più supportato dalla microchip stessa, fino al punto che producono i processori C oriented come già è stato detto. Il basic lo lascerei perdere, è il più semplice ma l'ottimizzazione del codice lascia molto a desiderare, anche se rimane la possibilità di inserire delle parti di codice in assembler. Per quanto riguarda il pascal che io sappia, utilizzandolo sui micro è poco meglio del basic. |
Citazione:
Ti faccio un esempio. Tempo fa una ditta mi ha chiesto di ottimizzare un progetto fatto su un hcs12, con un micro che costava, all'epoca 8 euro. Ho riscritto il codice con le stesse funzioni in ASM PIC per un pic che ne costa 3 e 50 e che ha circa un quarto della flash. Conta che sono partiti da un compilato della Metrowerks, che non è una cacca come compilatore. Programmare in assembler è un arte, le intuizioni di un buon programmatore in assembler un compilatore non le può avere, proprio perchè non ha la visione globale di quanto deve fare l'applicazione. Se il paragone è tra un programmatore MEDIO ed un compilatore MEDIO, posso essere d'accordo che il codice C sia più veloce di un codice ASM. Che sia più compatto ho qualche dubbio. Per esperienza (160 design in 9 anni) posso affermare che: 1) Se chi scrive assembler sa scrivere assembler non c'è compilatore che gli stia dietro, in termini di efficienza oppure velocità. 2) L'assembler non è morto. Ma con i compilatori attuali lo usi in pochi casi: Quando devi impaccare il codice al massimo o quando devi lesinare il colpo di clock, vedi applicazioni a batteria. Esiste ancora l'approccio dell'autodidatta, che parte con l'assembler, e tutto sommato gli fa pure bene per capire la macchina con cui sta lavorando. 3) Il mondo embedded lavora in C per il 90 % di chi ci lavora. Il 9% lavora in ASM ed in C, il resto vive nelle riserve indiane. Il programmatore figo utilizza lo IAR. Il vero programmatore utilizza lo GNU. 4) Il programmatore figo utilizza un sistema operativo (kernel) sul microcontrollore. Il vero programmatore il kernel se lo è scritto, o ne ha fatto un porting, o, almeno, ha i sorgenti e ci ha messo le mani perchè non lo soddisfaceva in alcuni punti. Chi usa il PIC18 dovrebbe dare un'occhiata all'OSA. Chi usa ATMEL AVR il BeRTOS. Chi usa ARM il FreeRTOS o il TnKernel. Quello con maggior numero di port è il FreeRTOS. Questo non perchè usare un kernel per la gestione del micro sia più figo, ma semplicemente perchè programmi meglio e più velocemente, ovviamente in C. |
assembly ti consiglio di affrontare il tema direttamente con assebly Citazione:
|
| Tutti gli orari sono GMT +2. Adesso sono le 13:42. |
Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002