PICMicro in C

  1. Corso di programmazione PICMicro in C
  2. Articoli riguardanti programmazione (e non) collegati al corso di programmazione PICMicro in C
  3. Codici sorgente e schemi elettrici dei progetti illustrati nel corso di programmazione PICMicro in C
  4. Documentazione utile
  5. Software
  6. Altri articoli su Settorezero riguardanti i PICMicro

Corso di programmazione PICMicro in C

Man mano che le lezioni di programmazione saranno pubblicate nel sito, questo indice verrà aggiornato, in maniera tale da avere tutto sott’occhio in un’unica pagina.

  1. Cos’è un microcontrollore, caratteristiche, note introduttive, come scegliere programmatore e linguaggio di programmazione
  2. Installazione degli strumenti di sviluppo, descrizione del circuito di base
  3. Scrivere il primo, semplice programma in C per PICMicro, impostare MPLAB e flashare il PICMicro con il PICKit 2. Facciamo lampeggiare un led
  4. Cosa sono gli interrupt, concetti di base per sistemi operativi multitasking su PICMicro
  5. Timer0 e Prescaler: come si impostano per generare l’interrupt nei tempi che vogliamo, applicazione pratica
  6. Collegamento dei pulsanti, pilotare un led in on/off
  7. Interfacciarsi con un display LCD HD44780 compatibile:
    Parte 1 – Tutto quello che c’è da sapere sui display LCD alfanumerici intelligenti
    Parte 2 – Hello World + Semplice menù per attivare delle funzioni
    Parte 3 – Come definire simboli e caratteri personalizzati nell’LCD + esempio di animazione
  8. Pilotare i display a led 7 segmenti in modalità multiplex – Realizziamo un contatore up/down gestito dall’interrupt sul Timer0
  9. Gestione della EEprom interna. Visualizzazione valore a 32bit da eeprom e lcd e counter up/down con memoria e reset.
  10. L’ USART e la comunicazione seriale tramite RS232 : ricetrasmissione comandi attraverso la porta seriale del computer
  11. Il convertitore analogico digitale:
    Parte 1 – Principi di funzionamento

Le lezioni non sono finite, continueranno con cadenza irregolare. Iscrivetevi al sito per essere sempre aggiornati sugli sviluppi e per poter scaricare il materiale presentato di volta in volta.

Approfondimenti e appunti di utilizzo

  1. Utilizzo degli encoder in quadratura per l’immissione dei dati

Articoli direttamente collegati alle lezioni

  1. Come vanno collegati i vari tipi di PICMicro e le memorie EEPROM al PICKit2 : Adattatore multizoccolo
  2. Capire come funzionano le numerazioni decimale, binaria, esadecimale e ottale
  3. Operazioni algebriche booleane: come si utilizzano gli operatori AND, OR, XOR e NOT e come applicarli ai registri ad 8 o più bit
  4. La codifica BCD e i display a 7 segmenti
  5. Gli operatori di scorrimento. Scomporre un valore a 16 bit in due valori ad 8 bit e viceversa. Esempio in C per picmicro su Display.
  6. La scheda di sviluppo Freedom II

Altri articoli su SettoreZero riguardanti i PICMicro

  1. Divisione spicciola con decimali dopo la virgola in hitec-c su picmicro (risultati inviati su porta seriale rs232)
  2. Gestione in assembler di due display a led a 7 segmenti con PIC16F628
  3. PICMicro che non vengono più riconosciuti dal PICKit : L’errore “No Device Detected”

Se ne avete la possibilità, supportate chi lavora gratuitamente a queste pagine con una piccola donazione: anche pochi centesimi fanno la differenza e aiutano a mantenere alto il morale e a stimolare la creazione di cose sempre nuove ed inedite.

Codici sorgente e schemi elettrici dei progetti illustrati nelle lezioni

  1. File di supporto alla terza lezione del corso di programmazione picmicro in C (236)
  2. File di supporto alla quinta lezione del corso di programmazione picmicro in C (123)
  3. File di supporto alla sesta lezione del corso di programmazione picmicro in C (114)
  4. File di supporto alla settima lezione (parte 2) del corso di programmazione picmicro in C (195)
  5. File di supporto alla settima lezione (parte 3) del corso di programmazione picmicro in C (98)
  6. File di supporto alla ottava lezione del corso di programmazione picmicro in C (82)
  7. File di supporto alla nona lezione del corso di programmazione picmicro in C (50)
  8. File di supporto alla decima lezione del corso di programmazione picmicro in C (53)
  9. Corso Programmazione PICMicro in C - Approfondimenti - Utilizzo di un encoder rotativo per l'immissione dei dati (25)

Documentazione utilizzata nelle lezioni

  1. Manuale di programmazione C: Tricky C (959)
  2. Elenco ufficiale dei dispositivi supportati dal Pickit2
  3. Documenti utili presenti nella sezione risorse
  4. Datasheet PIC16F877 e PIC16F876 (288)
  5. PIC Mid-Range MCU Family Reference Manual (211)
  6. Datasheet regolatore di tensione 7805 (120)
  7. Datasheet regolatore di tensione a basso dropout LM2940 (119)

Download Software

Software utilizzato nel corso di programmazione

  1. PICTimer: Calcolo del valore da assegnare al Timer0 e al Prescaler
  2. CustomCharHD44780: per la personalizzazione dei caratteri sui display basati sul controller Hitachi HD44780
  3. Microchip MPLab IDE
  4. Microchip PICKit2, applicazione e firmware aggiornato
  5. Editor di testo Notepad++

Altro software utile

  1. PicLoops (per generare ritardi in assembler, per windows)
  2. PikLoops (per generare ritardi in assembler, per Linux)
  3. Elenco dei linguaggi di programmazione e delle suite di sviluppo per PICMicro
  1. #1 da Gioacchino il 7 novembre 2009

    Il corso di programmazione dei PICMicro in C è interessante, almeno per me che ne sono completamente disinformato.

  2. #2 da MAURIZIO il 20 novembre 2009

    Corso C interessante, peccato basato su pic 16f877 di cui microchip sta abbandondo la produzione a favore dei più attuali 16F883/887

  3. #3 da Giovanni Bernardo il 20 novembre 2009

    A dire il vero, se non erro, la produzione del 16F877 è già cessata e oramai ci sono i pic serie 18 che costano quanto quelli serie 16 ma sono più performanti. La scelta è stata dettata dal fatto che il 16F877 è un vecchio cavallo di battaglia dotato di molte periferiche che si può facilmente trovare un po dappertutto anche nei negozi di elettronica meno forniti o nelle fiere, ed è ancora molto diffuso, almeno dalle mie parti. I programmi poi, capito il meccanismo con cui si settano i fuses e capiti i registri (ma soprattutto: imparato a leggere i datasheet), si possono facilmente adattare a qualsiasi pic, difatti alcuni utenti che seguono il corso stanno usando i programmi su 16F628: ognuno può usare il pic che vuole dal momento che in ogni lezione cerco di spiegare per bene dove può essere reperita questa o quell’altra informazione sul datasheet, questo è anche molto meglio perchè aiuta a districarsi in questo ambito. Se non erro, poi, l’887 è pin to pin compatibile con l’877, anche la quantità di memoria è la stessa, per cui i programmi che sto presentando qui non dovrebbero nemmeno avere bisogno di adattamenti, ma potrei sbagliarmi. Sul 16F877, inoltre, in rete si trovano una marea di esempi, proprio perchè è un “prodotto maturo” (come afferma la microchip stessa), sta sul campo da parecchio tempo, è quindi ultra collaudato e molti progetti di robotica in rete sono basati su tale microchip. Se qualcuno vuole usare altri pic, ben venga, possiamo vedere insieme volta per volta gli adattamenti da fare, tempo permettendo sono sempre a disposizione e rispondo a tutti (basta non avere fretta). Giusto per informazione: confronto 16F877 / 16F887: http://www.microchip.com/wwwproducts/ProductCompare.aspx?product1=PIC16F877&product2=PIC16F887

  4. #4 da paoloprova il 24 dicembre 2009

    Buonasera

    Il corso mi interessa molto, in quanto da tempo utilizzo i picmicro, ma solo programmandoli brutalmente con un programmatore parallelo e senza poter poi modificare il file di configurazione , se necessario.
    Vorrei chieder, se qualcuno li conosce, qualche giudizio sui programmatori “cinesi” ( sembrano copie del Pickit 2 ) che girano sul mercato Web e sulle relative schede di sviluppo allegate.
    Sono a prezzi realmente concorrenziali (dogana compresa), ma sono poi affidabili ed utili per l’apprendimento ??!!
    grazie a Tutti

    paoloprova

  5. #5 da Giovanni Bernardo il 26 dicembre 2009

    Ciao Paolo,
    innanzitutto un grazie di cuore per la donazione e tanti auguri di Buone Feste. Qui cerchiamo di fare del nostro meglio, non siamo esperti ma ce la mettiamo tutta, sono anche i vostri consigli, interventi e suggerimenti che fanno la vera differenza.
    Riguardo ai programmatori provenienti dalla Cina purtroppo non so dirti assolutamente nulla, non li ho provati e non ho la minima idea di come possano andare. Però voglio dire anche questo: il pickit2 non costa poi molto (circa 34 euro), io l’ho comprato qui:
    http://www.robot-italy.com/product_info.php?cPath=1_26_57&products_id=710
    : è sicuramente un prodotto originale, il firmware si può aggiornare e programma davvero tantissimi dispositivi della Microchip, capisco che i programmatori clonati in Cina possano essere uguali in tutto e per tutto (ricordo difatti che la Microchip comunque rende disponibile a tutti lo schema elettrico del suo programmatore, per cui immaginavo che prima o poi qualche cinese si tuffasse in questo), ma per esperienza, vengono sempre utilizzati materiali scadenti (es.: dopo qualche utilizzo, per fare un esempio, ti si stacca la presa USB oppure il connettore non fa più contatto ecc) e le saldature sono fatte male, a volte per 10 euro di differenza uno se ne può trovare pentito.
    Per la scheda di sviluppo io consiglio fortemente la Freedom 2 di Mauro Laurenti : http://www.laurtec.com (basta fare una donazione di supporto), è davvero molto molto completa (ci sono predisposizioni per tutto ciò che serve per cominiciare: led, pulsanti, lcd, eeprom, real time clock, seriale, comunicazione CAN – il 99% delle schede commerciali ne è priva-, usb-per i pic predisposti- e ancora tanta altra roba), il pcb è davvero molto professionale e i prodotti commerciali che ci sono in giro gli fanno davvero un baffo. Mauro inoltre può anche fornirti un pic16f877a se glielo richiedi.
    Il mio consiglio è quello di prenderti il programmatore originale della microchip e la freedom2, ti assicuro che non te ne troverai affatto pentito e qualche euro in più speso ti verrà sicuramente ripagato dalla soddisfazione di avere prodotti validi, testati, funzionanti e realizzati davvero con passione e cura maniacale.

  6. #6 da paoloprova il 3 gennaio 2010

    Grazie per i consigli, Giovanni !!!
    Penso che li seguiro’ senz’altro .
    Ero inizialmente tentato dall’autocostruzione(visti gli schemi cortesemente forniti da Microchip), e visto anche che di programmatori Pic seriali e paralleli ne ho costruiti parecchi, ma stavolta voglio partire da un prodotto “sicuro”.

    Tanti Auguri anche a te per il nuovo Anno 2010 !

    Paolo

  7. #7 da luigi il 22 gennaio 2010

    Seguo con interesse questo Corso. La qualità primaria e la chiarezza di esposizione: non è da tutti.
    Il mio scopo è “adattare” quanto appreso, al PIC32. Sono alla lezione sui Display LCD 16×2.
    Il mio obiettivo è poter creare un sistema embedded dove sia presente una porta USB alla quale collegare una pendrive su cui scaricare dei dati. Es. quelli prodotti da una conversione A/D.
    Sarà dura, ma voglio tentare.

  8. #8 da Giovanni Bernardo il 22 gennaio 2010

    Ciao e grazie.
    I pic32 sono dispositivi molto potenti, se realizzi qualcosa o hai degli appunti di utilizzo che vuoi condividere, siamo a disposizione. Non so se può esserti utile allo scopo: si tratta di una lettura che sto facendo in questi giorni per capire come sia possibile interfacciarsi in qualche modo al filesystem FAT32 da un picmicro, il link è questo: http://www.andyolivares.com/?p=168&lang=en sembra molto interessante

  9. #9 da Antonio il 29 gennaio 2010

    Ciao Giovanni,
    comlimenti per il corso mi sto veramente appassionando; vorrei farti una domanda.. Io mi sono registrato al sto ho avuto le credenziali ma non riusco a trovare dove utilizzarle per loggarmi… mi aiuteresti?
    Grazie
    Ciao

  10. #10 da Giovanni Bernardo il 29 gennaio 2010

    Risulti registrato correttamente, se non riesci ad accedere probabilmente o stai sbagliando la password o non stai rispettando maiuscole/minuscole per nome utente e/o password.

  11. #11 da Giovanni il 29 gennaio 2010

    Corso ben costruito, complimenti !

  12. #12 da Alessandro il 1 febbraio 2010

    Un lavoro veramente eccellente, continuate così!!!

  13. #13 da Giuseppe il 4 febbraio 2010

    ciao giovanni. E’ da poco che sono venuto a conoscenza di questo sito e qundi di Te. Avrei tanta voglia di imparare a programmare e progettare con i pic. Fin ora mi sono solo limitato fare qualche piccolo intervento di modifiche di sorgenti e per poi ributtarlo nel pic. Il programmatore che utilizzo è MPLAB con ICD2, ma il compilatore che utilizzo è il CCS. Ultimamente ho fatto una programmazione ed ho selezionato, come sempre, le protezioni in lettura e mi è scappata una protezione in scrittura. Risultato, non riesco più a fare le modifiche di alcune #define che facevo, è rimasta memorizzata la prima #define che avevo messo. Come posso sproteggere il pic in scrittura?

  14. #14 da Giovanni Bernardo il 5 febbraio 2010

    Hai selezionato protezione in scrittura e non riesci a modificare i #define? Non riesco a capire quello che vuoi dire. La protezione in scrittura serve proprio a non far scrivere, e non poter scrivere vuol dire anche non poter cancellare. Una volta fatto non puoi più tornare indietro.

  15. #15 da Giuseppe il 5 febbraio 2010

    Chiarissimo!
    E’ stato un errore fatale, il mio.
    La soluzione quindi è sostituire il pic!
    GRazie per il chiarimento

  16. #16 da giovanni.a il 9 febbraio 2010

    ciao giovanni,vorrei porti un piccolo problema che mi accade quando tento di stampare delle pagine del corso sui pic.Voglio complimentarmi intanto per l’ottimo lavoro e soprattutto chiaro nelle spiegazioni.il problema è questo:quando faccio per avviare la stampa mi compare un errore che mi obbliga praticamente a riavviare internet e..questo mi succede solo su questo sito.e’ un limite che tu hai imposto o è realmente un errorre sul mio pc ? premetto stampo le pagine che trovo interessanti per leggerle nei pochi momenti liberi (pausa pranzo) della giornata.

  17. #17 da Giovanni Bernardo il 10 febbraio 2010

    Il motivo del perchè ciò accade non ve lo so dire, a me comunque non da problemi.

  18. #18 da giovanni.a il 18 febbraio 2010

    ciao Giovanni,ho iniziato il corso sui pic ed ho fatto i primi esperimenti.sto lavorando con i programmi da te consigliati e programmo il pic 16f877 con un programmatore autocostruito progettato da Sergio Fiocco (ottimo sito anche il suo).per testare il tutto ho caricato il tuo sorgente che fa lampeggiare un led,poi sempre un tuo sorgente hallo world !,il tutto funziona perfettamente.Succede però che quando creo da me il file .exe e vado a caricarlo nel pic con melabs i fuses vengono totalmente ignorati,faccio io le impostazioni ed invio. riscontro che i circuiti nn funzionano più come prima, soprattutto il circuiti con lcd visualizza scritte parziali e sparse a caso per la lunghezza della riga e solo se pigio 2 – 3 volte sul tasto reset. Mi chiedevo se ti era mai capitata una roba del genere o almeno riesci a dare una spiregazione od indirizzarmi verso un probabile problema. Ti ringrazio molto.ciao

  19. #19 da Giovanni Bernardo il 18 febbraio 2010

    Ciao… (il file che carichi sul pic è .HEX e non .EXE !!) Non ho idea di come funzioni melabs, probabilmente interpreta qualche cosa in maniera sbagliata… Non ne ho idea. Facci caso se quando selezioni il pic stai attento a selezionare quello con la A finale, e che i fuses siano corretti, soprattutto quello relativo al tipo di oscillatore selezionato. Il fatto del display mi è capitato, ma non nel tuo modo: avevo visualizzata solo la prima riga e solo dopo alcune volte che premevo reset mi appariva la seconda: si trattava di un problema di temporizzazione, difatti pure se tantissimi chip sono HD44780 compatibili, non tutti rispettano le stesse temporizzazioni, per cui modificai il sorgente originale per pilotare i display aumentandone un po’ i tempi e cosi mi ha funzionato su tutti i display. Nel tuo caso potrebbe trattarsi di un problema del genere, e quindi legato in qualche modo all’ oscillatore selezionato in maniera errata nei fuses o al fatto che hai selezionato un pic senza la A finale (quello senza la A finale non arriva a 20MHz) ecc… Ma per il resto non so dirti di piu perchè non ho mai usato melabs. Inizialmente ho sempre usato il programmatore di sergio fiocco con icprog e non ho mai avuto problemi di sorta.

  20. #20 da giovanni.a il 18 febbraio 2010

    Ciao. ho fatto un pò di casino con le estensioni dei file. Per il pic invece nn credevo che il 16f877 non arrivasse ai 20MHz, perchè è proprio questo che sto usando e selezionavo appunto questo,inoltre utilizzo un lcd 2×40 ,la cosa penso dovrebbe essere ininfluente. Ma la cosa strana e che con il tuo sorgente.HEX il tutto funzionava correttamente.Comunque proverò a modificare le temporizzazioni e vedrò di procurarmi un 16f877A, qui dove abito l’unico negozio di elettronica ne è sprovvisto.Ti ringrazio ancora.ciao

(non verrà pubblicata)
  1. Ancora nessun trackback

Fusion theme by digitalnature | Articoli (RSS) e Commenti (RSS) ^