Programmare un qualsiasi sistema di elaborazione dati in linguaggio assembler, ha i suoi pro e i suoi contro. Se da un lato il basso livello del codice macchina ci svela ogni segreto ed ogni âdietro le quinteâ della nostra CPU, è altrettanto sicuro che ci obbliga a farlo, e da subito, permettendoci poco o per niente una curva di apprendimento abbordabile, soprattutto se non possiamo dedicare alla programmazione dei PIC, il tempo e la concentrazione che vorremmo.
Eâ a questo punto che intervengono in nostro soccorso i cosiddetti compilatori. Si tratta di programmi che ci permettono di scrivere i nostri software in un linguaggio maggiormente âdigeribileâ dellâassembler, occupandosi di fare per noi il âlavoro sporcoâ, la traduzione in linguaggio macchina. Per i microcontrollori PIC sono disponibili compilatori di molti linguaggi ad alto livelloâŚBasic, C, Pascal⌠quasi tutti a pagamento. Personalmente non ho nulla contro il software a pagamentoâŚsono io stesso un programmatore e capisco perfettamente che lâevoluzione esponenziale dellâinformatica non sarebbe avvenuta senza il profitto.
Comunque mi rendo anche conto che soprattutto chi sviluppa software senza scopo di lucro, è giustamente interessato a trovare strumenti a basso costo, meglio ancora gratuiti. Great Cow Basic (di seguito GCB), è un compilatore Basic completamente open source (freeware) per i nostri PIC.
Le potenzialitĂ
Cionostante, vi assicuro, è molto potente, e dispone addirittura di caratteristiche avanzate che non sono disponibili neppure nei compilatori commerciali.
- Costrutti di controllo IFâŚTHEN con ENDIF
- Chiamata di Routines definite dallâutente tramite GOSUBâŚRETURN
- Funzioni e SUB definibili dallâutente, con parametri locali
- Cicli iterativi ForâŚ.Next, Do/While/UntilâŚ.Loop
- Variabili ad 8 bit e 16 bit. Variabili stringa
- Librerie per la gestione di LCD con interfacciamento a 8, 4 e 2 pin (Predko design)
- Libreria gestione tastiera PS2
- Gestione A/D
- RS232
- PWM hard/Soft
- âŚe molto altro ancoraâŚ
Câè di far venire lâacquolina in bocca, eh?
GCB scrive programmi compatibili con la maggior parte dei PIC della serie 10/12/16.
INIZIARE CON GCB
Portiamoci alla home page di GCB digitando nel nostro browser internet http://gcbasic.sourceforge.net/index.htm
Clicchiamo su Download, e scarichiamo lâultimo installer del compilatore (attualmente la 0.9.2.0), che è comprensivo delle GPutils, necessarie a GCB. Una volta installato il pacchetto, saremmo giĂ pronti per compilare i nostri applicativi, ma che cosâè un compilatore senza un editor il piĂš possibile integrato? Eâ disponibile in nostro soccorso un editor freeware anchâesso, che può essere personalizzato per lavorare con GCB. Il suo nome è Crimson Editor. Per scaricarlo portiamoci dalla home page nella sezione âGetting Startedâ. A questo punto in fondo alla pagine troveremo il link per lâeditor in questione. (Figura 1)
Scarichiamo quindi anche il supporto per il giusto âhighlightingâ dei comandi GCB (appena sotto al link per il Crimson Editor). Un aspetto interessante di Crimson Editor è che possiamo far colorare in automatico le sorgenti GCB, in modo differente seguendo la sintassi del compilatore. Vi assicuro che ne vale la penaâŚcon un pò di pratica, coglierete a colpo dâocchio buona parte degli errori di sintassi.
Personalizzazione di Crimson Editor
Innanzitutto mettiamo il programma in grado di comportarsi da vero e proprio IDE nei confronti del nostro compilatore. Estraiamo i due file contenuti in âCE_GCBASIC_Highlighting.zipâ e copiamoli allâinterno della directory âspecâ che si trova dentro al folder di Crimson Editor (tipicamente C:\Programmi\Crimson Editor).
Poi, una volta lanciato Crimson, portiamoci nel menu âToolsâ e selezioniamo âPreferencesâ.
Nella finestra che comparirĂ , portiamoci su âToolsâ â âUser Toolsâ e definiamo lâhot key F9 come da figura e clicchiamo su OK. Da questo momento, saremmo in grado di compilare i nostri programmi dallâinterno di Crimson premendo il tasto F9.
SarĂ lâeditor a richiamare il compilatore e a fargli eseguire il suo lavoro. nella finestra âOutputâ vedremo in tempo reale i messaggi del compilatore, e soprattutto lâinsorgere di eventuali problemi di compilazione.
Le qualitĂ del GCBASIC
Ma, direte voi, come si fa a colorare li comandi GCBASIC ? Eâ possibile farlo in due modi; manuale ed automatico.
Per colorare i comandi in modo manuale, è necessario portarsi nel menĂš di Crimson all voce âDocumentâ â âSyntax typeâ e selezionare la sintassi GCBASIC. Non è però molto pratico; meglio fare in modo che i nostri programmi siano riconosciuti dallâEditor come programmi GCBASIC automaticamente.
Se vi interessa questa possibilità (molto comoda), è necessario procedere come segue:
- Portatevi nuovamente nel menu âToolsâ â âPreferencesâ e selezioniamo âFiltersâ.
- Portatevi alla prima voce contrassegnata come âemptyâ e riempite i campi come da figura.
- Premete OK
Aprite a questo punto il Blocco note di Windows e create il file âextension.gcbâ come da figura.
Questo file va salvato nella sottocartella âlinkâ di Crimson Editor. Bene! se siete arrivati fino a qui e se salverete i vostri programmi con lâestensione .GCB, Crimson Editor li riconoscerĂ come sorgenti Great Cow Basic e ne colorerĂ la sintassi in modo appropriato.
Per fare questo, selezionate âFileâ â âSave asâ e GcBasic come formato di salvataggio.
Primo Programma
Facciamo partire Crimson Editor e cominciamo la scrittura di un nuovo programma cliccando su âFileâ â âNewâ Innanzitutto è necessario selezionare il modello del proprio PIC e la velocitĂ di clock, usando il comando #chip
Nel mio caso trattandosi di un 16F690 che intendo âcloccareâ a 4Mhz, il comando giusto è:
#chip 16F690,4
Poi è necessaria lâonnipresente Word di configurazione. Il comando è #config e la sintassi è uguale a quella dellâMPLAB, quindi io uso:
#config _INTRC_OSC_NOCLKOUT, _WDT_OFF,_PWRTE_OFF,_MCLRE_OFF,_CP_OFF,_BOR_OFF, _IESO_OFF,_FCMEN_OFF
GCBASIC setta automaticamente tutte le porte digitali, quindi intervenire sul parametro ANSEL, non è necessario se volete avere tutti gli I/O digitali.
I commenti cominciano con â (asterisco) e Crimson Editor li colorerĂ in verde.
âââââââââââââ
â Prova Great Cow Basic â
âââââââââââââ
#chip 16F690,4 âDefinisce Pic e velocitĂ di clock
#config _INTRC_OSC_NOCLKOUT, _WDT_OFF,_PWRTE_OFF,_MCLRE_OFF,_CP_OFF, _BOR_OFF, _IESO_OFF,_FCMEN_OFF
#Define LED PORTC.0 âDefiniamo la label LED, come equivalente al pin 0 di PORTC
â da adesso in poi ogni riferimento a LED, in realtĂ punta al pin 0 della Porta C del PIC
#Define Ritardo 1 sec âDefiniamo la label Ritardo come equivalente ad 1 secondo
â come vedete la direttiva #Define è molto potente
â possiamo definire puntatori a porte del PIC e a qualsiasi tipo di valore
DIR PORTC bâ00000000Ⲡâdefiniamo PORTC in output
PORTC = bâ00000000Ⲡâsettiamo tutti i pin di PORTC a 0
â la lettera b significa che il numero compreso tra gli apici è in forma binaria
â non specificando la notazione il numero si intende in forma decimale,
â mentre 0x prima del valore numerico equivale a specificare un numero esadecimale
do
âAccende lâipotetico LED collegato al PIN 0 di PORTC
SET LED ON
âAspetta 1 secondoâ
WAIT Ritardo
â Pone a zero il bit zero di PORTC spegnendo il LED
SET LED OFF
âAspetta nuovamente 1 secondo
WAIT Ritardo
âCicla infinitamente
loop
Come funziona
Come vedete si tratta di un vero e proprio programma Basic; notate che avremmo potuto usare la direttiva #Define per definire direttamente la porta del LED ad ON e a OFF in questo modo:
#Define LedOn SET PORTC.0 ON
#Define LedOff SET PORTC.0 OFF
Dopo aver scritto queste definizioni, nel nostro programma sarebbe stato sufficiente utilizzare LedON per portare il pin 0 di PORTC a livello logico 1 e LedOff per portarlo a 0. COMPILARE IL PROGRAMMA
Salviamo il nostro programma con âSave Asâ in Crimson Editor selezionando il formato GCBASIC. Premiamo a questo punto il tasto F9. Se tutto è andato come dovrebbe, nella finestra Output, Crimson ci informerĂ che la compilazione è andata a buon fine.
Il compilatore ha generato nella sua cartella 3 file; il primo prende il nome di âcompiled.asmâ, il secondo di âcompiled.lstâ, mentre il terzo âcompiled.hexâ âcompiled.hexâ è il file oggetto pronto per essere caricato sul nostro PIC, mentre il secondo è il file cosiddetto di Listing, esso contiene infatti il nostro programma convertito in linguaggio assembler con a fianco la traduzione in esadecimale, giĂ formattato per la stampa. Lâultimo file (compiled.asm) equivale a âcompiled.lstâ, ma non è formattato e presenta solamente la traduzione che il compilatore ha effettuato in linguaggio assembler partendo dal nostro codice Basic.
SarĂ quindi sufficiente programmare il PIC con il file compiled.hex usando il nostro programmatore.
Bene! Spero di essere riuscito ad incuriosirvi riguardo a questo compilatore semplice ma potente. Vi segnalo la presenza di file di Help e di utili esempi allâinterno della cartella di Great Cow Basic. Dalla Home page di GCB, potrete navigare fino al forum di supporto, dove potrete postare le vostre richieste e consultare i POST degli altri utilizzatori.