Anda di halaman 1dari 10

www.bricobot.ch -- info@bricobot.

ch

http://www.bricobot.ch/docs/GCbasic.pdf

GCbasic pour microcontrleurs PIC


l Le GCbasic est un logiciel libre qui permet de crer des applications en Basic sur des petits processeurs. On peut ainsi programmer le Bimo, le module Orion et tous les robots et gadgets ayant un processeur 16F630 ou plus complexe. En cherchant GCbasic sous Google, on tombe sous http://gcbasic.sourceforge.net/ ou http://sourceforge.net/projects/gcbasic/ et on peut tlcharger le programme. On a dune part le compilateur GCbasic, et dautre part un diteur GCbide qui aide lcriture des programmes et lance la compilation. Il faut en plus un programmateur de PIC, le Pickit2 est le plus efficace. Plutt que de tlcharger ces programmes, on peut utiliser ce qua prpar Maurice Wulliens : Les fichiers ncessaires ont t regroups sous http://www.bricobot.ch/docs/GCbasic.zip et http://www.bricobot.ch/docs/GCbide.zip Il faut crer dans le dossier Program Files du disque C un dossier GCBASIC et un dossier GCBIDE et transfrer dans ces 2 dossiers respectifs les fichiers qui ont t dzipps Pour GCBIDE, crer un raccourci sur le bureau. Pour travailler, cliquer sur le raccourci, et ouvrir le programme dsir. Dans le dossier GCBASIC/Demos on trouve des programmes exemples. Pour ses propres programmes, on crera son propre dossier. Note : pour mettre le logiciel dans une autre partition du disque, sur une cl USB, par exp. F, cliquer sur Setup -- enregistrement de GCBIDE et Modifier la lettre C en F des 2 champs puis cliquer sur le symbole de la disquette pour enregistrer. Pour installer le Pickit2, crer un dossier Pickit2 dans le dossier Program Files du disque C et y dcompresser http://www.bricobot.ch/docs/Microchip.zip Crer un raccourci sur le bureau. Le Basic de GCbasic Les instructions traditionnelles du Basic ont t compltes par des instructions spcifiques pour configurer les PICs et agir directement sur leurs entres-sorties. Les extensions des fichiers source peuvent tre .TXT, .BAS ou .GCB. Lextension .GCB semble prfrable pour montrer que le programme ne peut pas tre traduit sans autre sur un autre Basic. Sil ny a pas derreur dans le programme, le compilateur GCbasic gnre un fichier assembleur .ASM et un fichier binaire .HEX. Le dossier GCbasic contient les dossiers suivants : GCBASIC page :1 07/02/2009

Chipdata Les noms et adresses des ports et registres Demos Quelques programmes de Maurice. Ces extensions des programmes source sont du type .gcb .bas, .bak ou .txt. Lditeur cre un .bak. Le compilateur gnre des fichiers .asm et .hex Docs Tutorial et licence de GCBASIC. Il est conseill dimprimer le Command Guide pour avoir la liste des instructions et commandes (8 pages). Le tutorial sappuie sur un robot e-racer et nest pas termin. Include Fichiers insrer caractrisant diffrentes plateformes robotiques. Les fichiers Bimo.h et BimoPlus.h sont en prparation. Source Les programmes source du GCBASIC. Editeur GCbide Lcran est divis en trois parties principales. La barre de tches avec les icnes La zone ddition pour le contenu du programme La zone de commentaires de compilation qui indique soit les erreurs ou la russite de la compilation Fonctions des icnes On utilise essentiellement le triangle bleu en 8e position pour lancer la compilation.

GCBASIC

page :2

07/02/2009

Exemple de programme aprs une compilation russie. Les erreurs sont signales dans la partie infrieure, avec indication du numro de la ligne en erreur.

Pour aider ldition des mots souvent utiliss, il suffit douvrir Key et faire un double clic sur le mot choisi pour que celui-ci soit copi sous le pointeur. Laide est bien faite et vous apprendra tout ce qui vous fait hsiter, mais tout est en anglais !

Le Basic ne connat que le dcimal, mais GCbasic a ajout lcriture dun mot binaire de 8 bits avec la notation b10110110. On dclarera naturellement toutes les combinaisons de bit utilises en leur donnant un nom explicite. Exemples de programmes Un programme comporte plusieurs parties : des indications gnrales, ce quil faut dire au Basic et au programmateur, puis le programme en mettant en vidence sa structure. ' Nom.gcb le nom du fichier sur le disque ce quil fait, sur quoi il tourne ' programme dit le: xx.xx.2008 ' programme test le: Processeur et configuration: #chip 16F630, 4 'frquence du Pic 4 MHz #config intrc_osc,cp_off, cpd_off, boden_off, pwrte_off , wdt_off
Cette ligne contient les fameux fusibles qui fixent le fonctionnement du Pic. Il est important de prciser toutes les valeurs, mme celles que lon utilise pas. Ces paramtres se trouvent dans le rpertoire gputils dans le dossier

GCBASIC

page :3

07/02/2009

header dans le dossier Bin sous le nom de p16f630.inc

Dclaration des variables du programme Toto = 3 Dclare et assigne ' Dclaration des constantes associes aux ports #Define Vert PortA.5 bit 5 du portA #define VertOn set PortA.5 on #define VertOff set PortA.5 off
Dans le programme, il suffira dcrire VertOn

Programme principal Init: TRISA = b'00000000'


Dans ce cas tout le PortA est en sortie. Si on veut le configurer en entre, il faut crire b11111111

PortA = 0 main: VertOn Wait 500 ms

'on peut aussi crire Set PortA =0 dbut du programme principal

main suivi de 2 points est une tiquette laquelle on peut sauter par des instructions au cours du programme. Exemple : instruction goto main

attente 500 ms

Linstruction doit tre suivie dun chiffre ou dun nombre et dune unit us = microsec., ms = millisec., s = seconde, m = minute, h = heure toutes ces units et un exemple de programme sont donnes dans licne Aide GCBASIC Cliquer Rechercher, taper Wait dans le champ, cliquer sur Rechercher et double cliquer sur linstruction Wait.

VertOn Wait 500 ms goto main


retour i au dbut du programme

END
Tout programme doit se terminer par linstruction END

Un premier programme pour le Bimo


Branchons le programmateur PicKit2 sur le Bimo, dont lalimentation est dclenche. Charger 16F630Led.gcb dans GCbide et compiler Ce programme dans le dossier Demo fait clignoter la led raccorde aux broches RA4 et RA5 Pour compiler cliquer sur licne Compile . Une bote de dialogue saffiche pendant un court instant sur lcran et lcran ddition rapparat de nouveau. Il est important de contrler la Zone de commentaires de compilation pour confirmer la russite. Si cela nest pas le cas, un message derreur affiche le numro de la ligne contenant lerreur.

GCBASIC

page :4

07/02/2009

Une compilation russie gnre un fichier .hex qui peut tre charg dans le Pic du Bimo. Elle cre en mme temps un fichier .asm et un fichier .back. Ces trois fichiers se trouvent dans le dossier Demos de GCBASIC. Raccorder le PicKit2 au circuit Bimo Enficher une barrette mle aux pattes de 0.7 mm coude dans la barrette femelle de six ples situe droite de linterrupteur glissire. Insrer le PicKit2 selon images ci-dessous.

GCBASIC

page :5

07/02/2009

Transfert du programme sur le Bimo Avec le PicKit2 raccord au Bimo et la prise USB de lordinateur, dmarrez le programme PicKit2. Choisir le processeur, Midrange dans le menu Device family, puis 16F630 dans le menu Device .

Cliquer sur Import Hex et charger le fichier .hex La premire fois il faut aller le chercher sur le disque. Dans le dossier Demos de CGBASIC, cliquer sur 16F630led.hex, puis cliquer sur Ouvrir . Le message Hex file successfully imported saffiche.

GCBASIC

page :6

07/02/2009

Cliquer sur longlet Write Si le contact nest pas bon, le programmateur signale une erreur qui est parfois difficile rcuprer (voir ). Si le programme est modifi, recompil, il suffit de recliquer sur Write. Le logiciel signale par un Reloading file quil a vu que le code a chang et il reprend le nouveau fichier traduit.

Pour lancer lapplication cocher On dans la fentre VDD PicKit2 Situe droite, en dessous du sigle MICROCHIP, le processeur est aliment et tourne . Autres programmes PROGRAMME 16f630led.bas 'NOM DU PROGRAMME 16F630led.bas 'BUT: 'faire clignoter la led raccorde aux bornes RA4 et RA5 'COMMENTAIRES: 'MODIFICATIONS: 'DATE DE CREATION: 'programme dit le: 29.11.2008 'programme test le: 01.12.2008 'MARERIEL UTILISE: '1 circuit Bimo 'Pickit2 'PROCESSEUR ET CONFIGURATION: #chip 16F630, 4 'frquence du Pic 4 MHz #config intrc_osc,cp_off, cpd_off, boden_off, pwrte_off , wdt_off 'DECLARATION VARAIBLES PROGRAMME: 'DECLARATION VARIABLES PORTA: 'DECLARATION VARIABLES PORTC: 'DECLARATION CONSTANTES PROGRAMME: 'le GCBASIC ne supporte que les valeurs en dcimal pour les variables GCBASIC page :7 07/02/2009

Vert = 32 Rouge = 16 Eteint = 0

'32 en dcimal = bit5 en binaire bit5 du portA = 1 '16 en dcimal = bit4 en binaire bit4 du portA = 1 '0 = tous les bits du portA = 0

'PROGRAMME PRINCIPAL Init: TRISA = b'00000000' 'PortA tout en sortie Set PortA = 0 'on peut crire PortC = 0 ou Set PortC =0 main: PortA = Rouge 'sortie RA4 active Wait 500 ms 'tempo 500 msec. PORTA = Eteint 'toutes les sorties du PortA dsactives Wait 500 ms 'temps 500 msec. PortA = Vert 'sortie RA5 active Wait 500 ms 'temps 500 msec PORTA = Eteint 'toutes les sorties du PortA dsactives Wait 500 ms 'temps 500 msec goto main 'saut l'tiquette main. END Ides de programmes Pour faire tourner les moteur en tout-ou-rien, il suffit de dclarer comme pour les LEDs #Define Avance PortA = 2100010 etc (pas vrifi, je vois avec Maurice) Pour faire tourner les moteurs vitesse variable, il faut une routine PWM par interruption. Maurice a test les interruptions, et cela doit tre faisable facilement. Lutilisateur aura deux paramtres manipuler pour avoir toutes les vitesses sur chaque moteur. Idem pour les sons. Annexes Le schma du Bimo, redessin par Maurice Wulliens

GCBASIC

page :8

07/02/2009

Interruptions
GCbasic permet les interruptions. Toutes les contraintes nont pas encore t identifies, et le programme ci-dessous a ncessit quelques ttonnements. Pour tester avec un 630, on modifiera la configuration : Un fil entre la masse et la broche RB0 remplacera le poussoir si ncessaire. On remarque dans le programme que les pull-up sur RB sont initialises, il ny a pas besoin de rajouter une rsistance pour garantir ltat 1 si lentre RB0 est en lair. #chip 16F630, 4 'frquence du Pic 4 MHz #config intrc_osc,cp_off, cpd_off, boden_off, pwrte_off , wdt_off Pour copier le programme suivant dans une fentre vide de GCbide, il faut ventuellement passer par on programme bloc-note pour liminer les complcations de Word. -------------------- programme f870intB0_2.gcb --------------'f870intB0_2 'S'excute sur 870 .. 877 Autres processeurs: adapter la configuration 'BUT 'comportement de l'instruction interrupt 'lors d'une instruction Interrupt par RB0 programme en BASIC 'le choix de l'interruption sur le flan montant ou descendant de l'entre RB0 'dpend de la slection du bit6 du registre OPTION_REG 'la fonction est d'allumer et d'teindre les leds RB1- RB7 du PortB ' une frquence dtermine par une sous-routine Delai 'la squence d'interrupt est commande par un fil reli au GND pour donner l'impulsion ' RB0, elle est dfinie dans une sous-routine Interrupt. 'cette squence allume un motif altern sur les leds RB1- RB7 'du PortB pdt 2 secondes 'IMPORTANT 'ne pas utiliser l'instruction WAIT, car l'interrupt ne retourne pas ' l'adresse suivante du programme. 'il faut remplacer l'instruction WAIT par une boucle For i = 0 to un nbre x 'programme dit le: 05.02.2009 'programme test le: 05.02.2009 'dernire modif. le: 08.02.2009 ' MATERIEL UTILISE 'PicKit 2 '1 carte M2840 16F870 '1 cartes LB8 affichage 'carte WDPicDev1_4 '1 boutons-poussoir #config xt_osc, wdt_off, pwrte_off, boden_off, lvp_off, cpd_off, wrt_enable_on #chip 16F877, 4 'DECLARATION VARIABLES PROGRAMME dim allume as byte GCBASIC page :9 07/02/2009

dim eteint as byte dim i as word dim l as word 'DECLARATION CONSTANTES PROGRAMME #define Bint PortB.0 'activ = low 'PROGRAMME PRINCIPAL Init: TRISA = b'00000' 'tout le port en sorties TRISB = b'00000001' 'RB0 en entre, le reste en sortie PortA = TRISA PortB = TRISB allume = b'00000000' eteint = b'11111111' motif = b'10101010' OPTION_REG = b'0100000' 'slection flan montant interrupt RB0 'initialise les pullups du PortB INTCON = b'11011000' 'paramtres interrupt l = 20000 'dure du dlai main: 'IntOff PortB = allume delai PortB = eteint delai goto main END sub delai for i = 0 to l next i end sub sub Interrupt if INTE = 1 then IntRB0 end sub sub IntRB0 PortB = Motif wait 2 s set INTF off end sub

'si on active IntOff, intrerrupt est annule

'INTCON bit4 mis 1 lors d'un interrupt

'INTCON bit1, doit tre remis zro 'pour autoriser un nouvel interrupt

GCBASIC

page :10

07/02/2009

Anda mungkin juga menyukai