Didacticiel Flowcode
Didacticiel Flowcode
Didacticiel Flowcode
Nîmes
16 septembre 2010
V1.2
Frédéric GIAMARCHI
frederic.giamarchi@iut-nimes.fr
Département G.E.I.I.
I.U.T. de Nîmes – Université Montpellier II
Etudes & Réalisations Didacticiel Flowcode
Sommaire
Projet : Buggy.......................................................................................................................18
Références ...........................................................................................................................20
PRESENTATION DE FLOWCODE
Flowcode est un produit de la société Matrix [1] et commercialisé par Multipower [2].
CARACTERISTIQUES
Flowcode pour PIC est construit autour d’un compilateur C (Boost-C). Il s’agit d’un
compilateur 8/16 bits d’usage général spécialisé pour les microcontrôleurs de type PIC.
Flowcode génère un fichier de code en C à partir de l’organigramme que vous dessinez.
Ce code est automatiquement compilé en code assembleur par le compilateur Boost-C et
transformé en code machine de type hex avec l’assembleur MPASM de Microchip.
•Flowcode
•Dessin de l'organigramme
1 •Simulation du programme
•Compilateur C (Boost)
•Création d'un fichier *.c
2
•Compilateur ASM (MPASM)
•Création d'un fichier *.asm
3 •Création d'un fichier *.hex
•Tiny Bootloader
•Transfert du fichier *.hex dans le PIC
4
•Test du programme
5
Le code de type *.hex obtenu par le compilateur de Flowcode peut-être utilisé pour
programmer un microcontrôleur de type PIC.
Dans les exemples, nous choisirons le modèle 16F88 que vous aurez la possibilité de
programmer lors des projets proposés en fin de document.
Pour cela, le logiciel Flowcode doit être paramétré afin de lancer un utilitaire de
programmation. Nous utilisons le logiciel TinyBootloader [3] qui programme un µC PIC par
une liaison série RS232.
Pour les nouveaux PC qui ne sont plus équipés d’une liaison série, nous utilisons un câble
USB avec convertisseur intégré capable de créer une liaison série virtuelle.
NOTES :
Flowcode doit être paramétré pour lancer l’utilitaire de programmation Tiny Bootloader.
Dans Puce, sélectionnez Options de compilation… Remplir les champs suivants :
Le PIC doit, au préalable, avoir été programmé avec un petit bout de programme que l’on
appelle un bootloader. Cette opération n’est pas détaillée ici. Pour de plus amples
renseignements, contacter l’auteur de ce document [4].
PREMIER PROGRAMME
OBJECTIFS
DOCUMENTS
EXERCICE 1
Dans ce premier exercice, nous allons créer un programme qui fait clignoter 4 dels
connectées au port B d’un microcontrôleur PIC 16F88.
Lancer le programme Flowcode V3
Créer un nouveau document. Choisir le composant à programmer (Ici il s’agit d’un
16F88)
Nous allons relier 4 Dels aux lignes 0 à 3 Port B du composant 16F88. Pour cela,
cliquer sur l’icône LEDs .
Cliquer sur la flèche et sur Connexions. Choisir le Port B et Terminer. Cliquer à
nouveau sur la flèche et sur Propriétés. Choisir 4 Dels bleues, orientées verticalement.
Sélectionner et placer : Insérer une boucle , puis Insérer une sortie , puis
Insérer une pause .
Paramétrer la sortie en double cliquant sur le symbole de sortie et sélectionner le Port
B. Paramétrer la pause pour un délai de 200ms.
Sélectionner les deux symboles ensemble, copier les et coller les dessous. Changer les
valeurs pour chaque sortie : 0x05 pour la première sortie et 0x0A pour la deuxième.
SIMULER LE PROGRAMME :
EXERCICES COMPLEMENTAIRES
Exo_1a : Modifier le programme pour obtenir un chenillard sur les 4 Dels du port B
(aller retour).
Exo_1b : Modifier le programme pour compter de 0 à 6 sur un afficheur LED 7
segments (Led7Seg) . L’anode sera reliée à la broche 0 du port A et mise à 1, avant
la boucle.
NOTES :
Utiliser Internet pour connaître les combinaisons des segments à éclairer afin d’afficher
des chiffres. Remplacer les valeurs en hexadécimal (0xAA) par les valeurs en binaire
(0b10101010).
OBJECTIFS
DOCUMENTS
EXERCICE 2
Dans ce nouvel exercice, nous allons mémoriser l’état des entrées dans une
variable et à afficher le contenu en sortie.
Nous utiliserons des boutons poussoirs comme entrées sur le port A et des Dels
comme sorties sur le port B.
Créer un nouveau document. Choisir le composant à programmer (Ici il s’agit d’un
16F88)
Nous allons relier 8 Dels jaunes au Port B et 8 interrupteurs au Port A. Pour cela,
utiliser les icônes LEDs et Switchs (interrupteurs) . Pour les Switchs,
sélectionner le type bascule dans les propriétés.
Sélectionner et placer : Insérer une boucle , puis Insérer une entrée , puis
Insérer une sortie .
Paramétrer les entrées en double cliquant sur le symbole d’entrées et sélectionner le
Port A. Ensuite cliquer sur Variable et sur Ajouter Variable pour créer une variable de
type Octet. Donner un nom à cette variable, ici Memoire. Ensuite, cliquer sur Utiliser
Variable.
Paramétrer les sorties en double cliquant sur le symbole des sorties et sélectionner le
Port B. Ensuite sélectionner dans la liste déroulante Variable/valeur une des variables
existantes, ici Memoire.
Sauvegarder le programme sous Exo_2.fcf.
SIMULER LE PROGRAMME :
EXERCICES COMPLEMENTAIRES
Exo_2a : Modifier le programme pour obtenir l’inverse, Led allumée pour interrupteur
ouvert. Ajouter un symbole Calcul entre les symboles Entrée et Sortie, puis
manipuler la variable Mémoire pour obtenir le résultat souhaité.
NOTES :
STRUCTURE DECISIONNELLE
OBJECTIFS
DOCUMENTS
EXERCICE 3
Dans ce nouvel exercice, nous allons créer un programme de type chenillard sur 8
Dels connectées au port B du microcontrôleur. Mais le sens de défilement du
chenillard sera défini par l’état d’un poussoir connecté sur la broche 0 du port A.
Créer un nouveau document.
Nous allons relier 8 Dels jaunes au Port B et 1 poussoir au Port A. Pour cela, utiliser
les icônes LEDs et Switchs (interrupteurs) . Pour les Switchs, sélectionner le
type poussoir dans les propriétés.
Sélectionner et placer : une boucle , puis une entrée , puis une décision puis
une sortie et pour finir trois calculs .
Paramétrer l’entrée en double cliquant sur le symbole d’entrée et sélectionner le Port
A. Ensuite cliquer sur Variable et sur Ajouter Variable pour créer une variable de type
Octet. Donner un nom à cette variable, ici : Etat. Ensuite, cliquer sur Utiliser
Variable.
Paramétrer la décision en double cliquant sur le symbole Décision, puis sur Variable
et sélectionner la variable Etat, puis cliquer sur UtiliserVariable. Compléter avec pour
obtenir la condition : Etat = 1.
Paramétrer les sorties en double cliquant sur le symbole des sorties et sélectionner le
Port B. Ensuite cliquer sur Variable et sur Ajouter Variable pour créer une nouvelle
variable de type Octet. Donner un nom à cette variable, ici : Memoire. Ensuite,
cliquer sur Utiliser Variable.
Les calculs vont modifier le contenu de la variable Mémoire. Dans le premier, avant la
boucle, on écrira : Memoire = 1. Dans le deuxième, sur une des deux branches du
symbole Décision, on écrira : Memoire = Memoire >> 1. Et dans le dernier, sur l’autre
branche du symbole Décision, on écrira Memoire = Memoire << 1
SIMULER LE PROGRAMME :
EXERCICES COMPLEMENTAIRES
NOTES :
Vous pouvez associer une touche du clavier numérique de l’ordinateur avec le poussoir
A0. Aller dans le paramétrage du poussoir A0, dans Connexions et Touche clavier, puis
sélectionner Switches(0).
OBJECTIFS
DOCUMENTS
EXERCICE 4
Nous allons relier l’afficheur LCD aux lignes de 0 à 5 du Port B et le thermomètre sur
la ligne 0 du Port A. Pour cela, utiliser les icônes LCDDisplay et Thermometer.
SIMULER LE PROGRAMME :
EXERCICES COMPLEMENTAIRES
NOTES :
Les routines composants rassemblent des lignes de code réalisant une des fonctions du
composant.
MACRO UTILISATEUR
OBJECTIFS
Apprendre à utiliser les macros en général. Il s’agit de créer des sous-programmes pour
améliorer la lisibilité du programme principal.
DOCUMENTS
EXERCICE 5
Dans ce nouvel exercice, nous allons découvrir les macros utilisateurs et les sous
programmes d’interruption.
SIMULER LE PROGRAMME :
EXERCICES COMPLEMENTAIRES
NOTES :
OBJECTIFS
DOCUMENTS
EXERCICE 6
Dans ce nouvel exercice, .nous allons réaliser une horloge minutes, secondes,
1/100 de secondes. Il faut configurer une ressource interne du PIC, il s’agit d’un
compteur appelé Timer0.
Créer un nouveau document.
Dans la nouvelle macro que vous nommerez Horloge, Créer l’organigramme pour
compter les 1/100 de secondes puis les secondes jusqu’aux minutes.
Dans la 2ème macro, vous afficherez le résultat comme sur l’image suivante.
Sauvegarder le programme sous Exo_6.fcf.
Vous devez obtenir l’organigramme suivant et les éléments associés :
SIMULER LE PROGRAMME :
EXERCICES COMPLEMENTAIRES
NOTES :
Modifier l’horloge à 3,2768 MHz afin de générer une interruption toutes les
millisecondes.
OBJECTIFS
On souhaite indiquer l’état d’une batterie 12V par 4 Dels. Les Dels de couleurs différentes
devront clignoter seules pour l’intervalle de tension assigné.
DOCUMENTS
SCHEMA SIMPLIFIE
La tension de la batterie est divisée par 3 par un diviseur résistif. La tension réduite
est appliquée sur l’entrée 0 du port A. 4 Dels de couleurs Rouge, Jaune, Vert et
Rouge sont connectées, respectivement, aux broches 0, 1, 3 et 4 du port B.
Les seuils de basculement d’une Del à l’autre sont définis par le tableau suivant.
Les durées de clignotement des Dels varient en fonction de la couleur de la Del.
NOTES :
Le programme principal réalisera les tests et vous devez créer une macro pour afficher et
faire clignoter les Dels.
OBJECTIFS
On désire mesurer la capacité d’une batterie 12V. Le résultat devra être affiché sur un
afficheur LCD.
DOCUMENTS
SCHEMA SIMPLIFIE
La batterie est déchargée dans un puits de courant dont la valeur sera réglée par un
bouton ADC, relié à l’entrée 1 du port A. La tension de la batterie est divisée par 3
par un diviseur résistif. La tension réduite est appliquée sur l’entrée 0 du port A.
L’afficheur LCD sera connecté au port B.
NOTES :
Modifier l’horloge à 3,2768 MHz afin de générer une interruption toutes les secondes
PROJET : BUGGY
OBJECTIFS
Dans ce projet, nous vous proposons d’écrire l’organigramme qui permettra au Buggy
d’atteindre la case d’arrivée. Ce projet, trop simplifié, ne peut pas être testé en réalité sur un
vrai robot, mais donne une bonne idée des difficultés de la programmation en robotique.
DOCUMENTS
SCHEMA SIMPLIFIE
Le Buggy est relié à diverses lignes par défaut, configurer le au mieux de vos
habitudes.
NOTES :
L’algorithme de base pour la résolution d’un labyrinthe est appelé algorithme de la main
droite. Il consiste à suivre le mur de droite. Mais ici, ce n’est pas un vrai labyrinthe.
ANNEXE : OPERATEURS
GENERALITES
Les opérateurs mathématiques, logiques et conditionnels sont utilisés dans les symboles
Calcul, Décision.
= Egal
() Parenthèses
< , <= , > , >= Plus petit que, plus petit ou égal à, plus
grand que, plus grand ou égal à
NOTES :
REFERENCES