Accompagnement en classe de 1ère Mes premiers pas avec FlowCode Les microcontrôleurs effectuent des programmes de manière séquentielle. Pour développer ces programmes on les schématise sous forme d’organigrammes ou algorithmes indépendants du langage utilisé. Un même organigramme peut être développé sous différents langages. FlowCode est un logiciel qui permet de réaliser toute la chaîne de développement : développement de l’organigramme ou algorithme. génération automatique du code C (traduction en langage de programmation) génération automatique du code Assembleur (idem) génération automatique du code binaire (présenté sous forme hexadécimale pour la lisibilité) (traduction en langage machine) programmation du PIC (en option) (transfert du programme dans la puce) La programmation du PIC sera réalisée avec le logiciel IcProg et la carte de programmation El Cheapo. Nous utiliserons pendant les activités, le PIC 16F88 de Microchip (voir document technique dans le dossier « notice FlowCode ») Structure Port A +5V Port B La relation du microcontrôleur avec les éléments extérieurs se fait à travers les ports du microcontrôleur. Le PIC16F88 possède 2 ports de 8 bits : le port A et le port B. Le port A est bidirectionnel c’est-à-dire qu’il peut être utilisé en entrée ou en sortie sauf le bit A5 qui est seulement en entrée. Le port B est bidirectionnel. Low-Power Features: • Power-Managed modes: - Primary Run: RC oscillator, 76 µA, 1MHz, 2V - RC_RUN: 7 µA, 31.25 kHz, 2V - SEC_RUN: 9 µA, 32 kHz, 2V - Sleep: 0.1 µA, 2V • Timer1 Oscillator: 1.8 µA, 32 kHz,2V • Watchdog Timer: 2.2 µA, 2V • Two-Speed Oscillator Start-up Oscillators: • Three Crystal modes: - LP, XT, HS: up to 20 MHz • Two External RC modes • One External Clock mode: - ECIO: up to 20 MHz • Internal oscillator block: - 8 user selectable frequencies: 31 kHz, 125 kHz, 250 kHz, 500 kHz, 1MHz, 2 MHz, 4MHz, 8MHz Peripheral Features: • Capture, Compare, PWM (CCP) module: - Capture is 16-bit, max. resolution is 12.5 ns - Compare is 16-bit, max. resolution is 200 ns - PWM max. resolution is 10-bit • 10-bit, 7-channel Analog-to-Digital Converter • Synchronous Serial Port (SSP) with SPI™ (Master/Slave) and I2C™ (Slave) • Addressable Universal Synchronous Asynchronous Receiver Transmitter (AUSART/SCI) with 9-bit address detection: - RS-232 operation using internal oscillator (no external crystal required) • Dual Analog Comparator module: - Programmable on-chip voltage reference - Programmable input multiplexing from device inputs and internal voltage reference - Comparator outputs are externally accessible 1/10 Accompagnement en classe de 1ère Mes premiers pas avec FlowCode Commencez avec FlowCode : mise en œuvre d’un outil de programmation graphique 1 Lancez le logiciel FlowCode à partir de l’icône cicontre Choisissez le microcontrôleur 2 3 Ecran proposé par le logiciel (le brochage du microcontrôleur apparaît, vous pouvez fermer cette fenêtre). Un nouveau programme apparaît avec les étapes « DEBUT » et « FIN ». 2/10 Accompagnement en classe de 1ère Mes premiers pas avec FlowCode Comment construire un organigramme ou algorithme ? En utilisant la barre de menu ci-dessous (barre verticale gauche sur votre écran). Présentation des principaux différents symboles utilisés au cours des activités. Entrée Pause Boucle Entrée Sortie 1 3 Pause Test 5 Boucle Test Sortie Calcul 4 Calcul 2 6 Quelques précisions sur le test « Insérer une prise de décision » Structure alternative partielle → structure SI ... ALORS ...SINON La condition If Si la Condition est vraie, Alors on effectue Action, Sinon on passe à la suite. Remarque : Vrai est représenté par 1, Faux par 0. 3/10 Mes premiers pas avec FlowCode Accompagnement en classe de 1ère Structure itérative à condition initiale → structure Tant que……Faire…. La boucle While Tant que la Condition est vraie on effectue (Faire) l’Action1 puis l’ Action2 . Quand la Condition n’est plus vraie on passe à la suite. Remarque : Vrai est représenté par 1, Faux par 0. Comment insérer un symbole (Entrée, Sortie, conditions, etc.….) ? 1. Avec le curseur de la souris, sélectionnez dans le menu à gauche, le symbole nécessaire (ici : Entrée) 2. Faites glisser ce dernier dans l’algorithme. 3. A droite, vous obtenez un nouvel algorithme. Comment paramétrer une entrée ? L’icône Entrée lit le port spécifié (ou certains bits seulement du port) et place le résultat dans la variable spécifiée. Le logiciel propose plusieurs choix pour une entrée (voir image ci-contre) Dans cet exemple, le symbole SWITCH est choisi. A cette entrée correspondra une action sur un interrupteur. En bas de votre écran, l’entrée SWITCH choisie apparaît. Elle est nommée SWITCH(0) par défaut. A droite, vous avez un écran qui vous permet de connaître les propriétés de cette entrée. En cliquant sur les points …. à coté de connexions, vous accédez aux propriétés de cette entrée (voir ci-dessous à gauche). 4/10 Mes premiers pas avec FlowCode Accompagnement en classe de 1ère Par défaut, cette entrée est un interrupteur relié au port A du microcontrôleur. Bit 0 (zéro) signifie que l’on utilise l’entrée A0 du port A. Pour le moment, le microcontrôleur ne fait aucun lien avec cette entrée. Editons donc l’entrée de l’algorithme (voir ) Dans l’algorithme, en double cliquant sur cette entrée, j’obtiens les propriétés de celle-ci. Phase de lecture d’une entrée Nous allons ici affecter un nom de variable ( inter1) à l’interrupteur choisi précédemment. Pour cela, je clique sur « ajouter variable » et je crée une nouvelle variable, ici : inter1. Je valide et sélectionne « utiliser variable » 5/10 Accompagnement en classe de 1ère Mes premiers pas avec FlowCode J’en profite pour changer le nom affiché, nommé ici, interrupteur1. Pour le moment, je n’ai pas encore associé à cette variable « inter1 » une entrée du microcontrôleur. D’après la figure à gauche, je sais simplement que cette entrée est associée au port A du microcontrôleur. Phase de configuration du microcontrôleur ( utilisation des entrées physiques ) En double-cliquant à nouveau sur PORT A de l’algorithme, sur la figure à gauche, je décide (choix bit unique) que je vais associer l’entrée « inter1 » au port A et plus particulièrement à l’entrée A2 du microcontrôleur ( physiquement, cela correspond à une patte de ce dernier ) L’algorithme prend en compte ce paramétrage ( voir figure ci-contre à gauche). Je dois revenir aux propriétés de l’interrupteur SWICH(0). Comme vous le constatez, il est toujours connecté au port A mais à l’entrée A0 6/10 Accompagnement en classe de 1ère Mes premiers pas avec FlowCode Ce qui est fait maintenant : L’interrupteur 1 ( variable inter1) est associé au port A, entrée A2 du microcontrôleur. L’information extérieure de l’état de l’interrupteur est récupérée dans la variable interne du microcontrôleur « inter1 ». Remarque : Dans propriétés étendues du composant (ici l’interrupteur), il est possible de modifier le type de ce dernier, par exemple, le définir comme un bouton poussoir si c’est le cas. Comment paramétrer une sortie ? Dans l’exemple ci-contre, une led a été sélectionnée Les sorties physiques disponibles sont : Une sortie a été insérée dans Adressage de l’algorithme. lecture d’une sortie Comme pour les entrées, la sortie Led1 est associée à la variable sled. Cette sortie utilise le port B et plus particulièrement le bit B1 du port B. Voir exemple à droite. L’icône Sortie permet d’envoyer la valeur ou le contenu d’une variable au port et/ou aux bits spécifiés. 7/10 Accompagnement en classe de 1ère Mes premiers pas avec FlowCode L’algorithme devient : En cliquant sur les points ….. de connexion, je configure cette sortie : La led est ici connectée au port B1 du port B En éditant les propriétés du composant, je change ces caractéristiques ( ici, la led est un rectangle vert ) C’est terminé pour cette sortie. Comment paramétrer une prise de décision ? Dans cette configuration de l’algorithme (à gauche), en supposant que je teste l’état de l’interrupteur1, il ne se passera pas grand chose….. Traduisons graphiquement : SI inter1=1 ALORS mettre à 1 la sortie Led1 (variable sled) Même remarque pour l’algorithme à droite, une simulation ne permettrait pas de valider le déroulement. Remarque : la décision sera définie ci-dessous. Ici, l’algorithme présente le symbole de la décision par défaut Les icônes de décision vous permettent de tester une condition et d’effectuer certains traitements en fonction du résultat du test. Des icônes peuvent être placées dans l’une ou l’autre branche de sortie de l’icône décision. 8/10 Mes premiers pas avec FlowCode Accompagnement en classe de 1ère Comme précédemment, en double cliquant sur le symbole « prise de décision », je définis la condition du test. Ici, SI inter1=1 ALORS… L’icône de Calcul permet la modification des variables. Elle peut être utilisée pour vérifier des entrées ou créer des sorties. Insertion d’un calcul L’icône « calcul »permet de renseigner l’action . Ici, si la condition du test est vraie, la led est mise à 1 (sled=1) puis le port B1 du microcontrôleur est mis à 1. Dans notre cas, le programme est exécuté une seule fois et s'arrête, ce qui ne laisse pas la possibilité de manipuler l'interrupteur. On peut exécuter le programme pas à pas ( touche F8 ou touche shift F8 ) de manière à pouvoir observer chaque action et changer la position de l'interrupteur par exemple. Ou insérer une boucle de manière à exécuter le programme plusieurs fois. C’est l’objet de la suite….. 9/10 Mes premiers pas avec FlowCode Accompagnement en classe de 1ère Comment insérer une boucle de manière à exécuter le programme plusieurs fois ? Dans cet exemple, la condition est toujours vraie (White 1)= Tant que, le programme s'exécute sans arrêt. Les icônes Boucle sont utilisées pour répéter une tâche tant que la condition spécifiée est remplie. Notez que vous devrez ajouter une icône Calcul qui modifie la variable spécifiée dans la condition pour que cette condition ait une chance d’être satisfaite. Comment étudier le modèle ? Lancer la simulation 10/10