weweewer - Didel SA
Pour apprendre à maîtriser un microcontrôleur, il faut connaître son répertoire d'
instructions et se familiariser avec différentes applications. ... Les exercices
aideront à clarifier chaque notion. .... Dans tous les microcontrôleurs PICs, un
registre appelé W (work register, registre de travail) joue un rôle de plaque
tournante.
Part of the document
|CH-1092 Belmont, Suisse | [pic] |
|Tel +41 21 728-6156, Fax 728-6157 | |
|Email info@didel.com, www.didel.com| |
Fichier www.didel.com/dev877/pd/intro/1Intro.doc RoDev877 - Environnement pour l'étude des microcontrôleurs
et l'écriture d'applications pour la famille PIC - Microchip
1ere partie - Introduction et premiers programmes 1. Initiation Ce premier chapitre s'adresse à des débutants qui ne connaissent que peu de
choses sur les microcontrôleurs. Il présente les notions de base
nécessaires pour comprendre quelques programmes simples et les tester dans
l'environnement RoDev877.
Le chapitre 2 détaille les instructions avec plusieurs exemples. Le
chapitre 3 est enfin intéressant, puisqu'il contient des programmes pour
faire bouger des moteurs et des servos. Le chapitre 4 permet vraiment
d'apprendre à programmer efficacement en utilisant des routines et tâches.
Le chapitre 5 complète avec des notions sur les capteurs et la mise au
point des programmes
1.1- Introduction Un ordinateur est formé d'un processeur qui décode les instructions, de
mémoire et de périphériques: écran, clavier, disque, imprimante, réseau. Un
microcontrôleur ne contient que le processeur, un peu de mémoire, et des
lignes entrées-sorties pour commander l'application. Il est programmé pour
une seule application, qui se met en route dès que la tension est
appliquée. Pour un ordinateur individuel (PC) fabriqué, des centaines de
microcontrôleurs sont insérés dans toutes sortes d'appareils, instruments
de mesure, gadgets, jouets. Une grande différence entre l'ordinateur et le
microcontrôleur est le respect du temps de réponse, que l'ordinateur ne
peut plus garantir à cause de la multiplicité des tâches et des
|couches de logiciel. Le microcontrôleur se| |
|distingue aussi par sa taille, de quelques|[pic] |
|mm2 à quelques cm2 et sa très faible | |
|consommation de puissance. | |
| | |
|1.2- Carte RoDev877 | |
| | |
|Pour apprendre à maîtriser un | |
|microcontrôleur, il faut connaître son | |
|répertoire d'instructions et se | |
|familiariser avec différentes | |
|applications. Les plus simples ne prennent| |
|que quelques instructions. Les plus | |
|complexes nécessitent de savoir bien | |
|structurer le logiciel et d'avoir | |
|sélectionné le processeur le mieux adapté.| |
|Pour les meilleures performances, il faut | |
|programmer en assembleur, le langage de | |
|base des processeurs. Les routines sont | |
|optimisées, appelées dans un programme | |
|principal. Les contraintes de temps de | |
|réponse sont vérifiables. L'utilisation du| |
|langage C facilite l'écriture des | |
|programmes au détriment de la taille | |
|mémoire et de la vitesse, mais une bonne | |
|compréhension de l'assembleur et des | |
|paramètres d'optimisation du compilateur | |
|permet une meilleure productivité dans | |
|l'écriture d'applications. | |
complexes. Ce document vise donc deux buts : savoir écrire des petites
applications ne nécessitant pas d'investissement coûteux, et avoir toutes
les notions nécessaires pour évoluer et apprendre à utiliser des outils
professionnels. La carte RoDev877 comporte un microcontrôleur 16F877A et des connecteurs
facilitant le câblage d'applications très variées. La programmation du
processeur se fait à partir d'un PC et de l'environnement SmileNG de
Sebastian Gerlach. Dans une première étape, les programmes sont téléchargés
via un câble série dans une zone réservée du processeur. Dans une 2e étape,
un programmateur de PIC permet .de programmer complètement le 16F877 et les
autres processeurs des familles 10F, 12F et 16F, après avoir déverminé
efficacement sur le 18F877 (voir xxx). L'ensemble de composants Rokit (http://www.didel.com/RokitOrder.xls) permet
de développer des applications comportant des moteurs, servos de
télécommande et capteurs, donc de créer des robots, automates et gadgets et
de les voir fonctionner. Réaliser une application originale nécessite de
savoir souder les composants électroniques. Un fer à souder est nécessaire
pour finir de monter le kit RoDev877 (les composants SMD sont déjà soudé).
Le fer à souder est aussi nécessaire pour le câblage des moteurs et
capteurs avec les bonnes longueurs de fil selon l'application. La
réalisation mécanique n'est pas documentée, elle dépend trop des
possibilités de réalisation locales. Mais des photos et un forum
faciliteront les échanges d'idées. |[pic] |[pic] |
|Commande de deux servos par un joystick |Robot simplement construit en |
|Explication sur le logiciel |balsa |
| |Explications sur la construction | 1.3- Instructions et programme Le principe de fonctionnement d'un processeur est très simple, quand on a
compris. Il faut toutefois comprendre beaucoup de choses en même temps,
difficiles à présenter dans un ordre logique. Les exercices aideront à
clarifier chaque notion.
Dans les grandes lignes, le processeur décode des instructions qu'il lit
dans la mémoire programme. Ces instructions décident des actions sur les
nombres (variables) et sur les lignes d'entrées-sorties. Dans un
microcontrôleur il y a une mémoire pour les instructions du programme, des
registres (mémoire pour les variables), une unité arithmétique et de
transfert et des entrées-sorties appelés ports.
Un registre, un port n'est pas différent d'une position mémoire: le but est
de mémoriser un état ou un nombre, et le programme décide comment cette
information est testée, modifiée, générée et transférée. Par exemple un
poussoir est lu sur un port, une tension sur un autre, et la température
est affichée sur un troisième port suite à une cascade d'opérations.
1.4- Binaire et hexadécimal Avant d'écrire un premier programme, il faut comprendre que les processeurs
ne savent que manipuler des bits ayant deux valeur : (zéro(, codé par une
tension basse (0 à 1V) et (un(, codé par une tension plus élevée (2V à
5V). Huit bits forment un octet et c'est l'élément sur lequel les
microcontrôleurs travaillent en général. Un octet peut être beaucoup de
choses: - un ensemble de bits commandant individuellement des lampes témoins et/ou
des interrupteurs (même mélangés) - des groupes de bits codant des états, par exemple |000 |Le robot avance en ligne droite |
|001 |Le robot tourne à droite |
|010 |Le robot tourne à gauche |
|011 |Le robot recule |
|1xx |Le robot est arrêté (xx signifie que l'on peut |
| |mettre 0 ou 1) | - des nombres Il y a plusieurs sortes de nombres et de codages. Les nombres entiers
binaires sont les plus simples. Avec 8 bits, on peut représenter les
nombres de 0 à 255 en décimal.
|Décimal|Binaire |Hexadécimal | |Décimal |Binaire |Hexadécimal|
|0 |00000000 |00 | |31 |00011111 | |
|1 = 20 |00000001 |01 | |32 = 25 |00100000 |20 |
|2 = 21 |00000010 |02 | |33 |00100001 | |
|3 |00000011 |03 | | | | |
|4 = 22 |00000100 |04 | |63 |00111111 | |
| | | | |64 = 26 |01000000 |40 |
|7 |00000111 |07 | |65 |01000001 | |
|8 |00001000 |08 | | | | |
|9 |00001001 |09 | |100 |01100100 |64 |
|10 |00001010 |0A | | | | |
| | | | |128 = 27 |10000000 |80 |
|14 |00001110 |0E | |129 |10000001 | |
|15 |00001111 |0F | | | | |
|16 =24 |00010000 |10 | |254 |11111110 |FE |
|17 |00010001 |11 | |255 |11111111 |FF | On remarque que les puissances de 2, (1,2,4,8,16,32,64,128) ont une
expression simple. Si on numérote les bits depuis la gauche, 7 6 5 4 3 2 1
0, le poids du bit de rang n est 2n. Ceci nous permettra de convertir le
binaire en décimal ou l'inverse, lorsque cela sera nécessaire
(100=64+32+4=2'110 0100=16'64). Remarquons encore que l'écriture
typographique de la puissance n'est pas compatible avec les éditeurs de
programmes, qui demandent d'écrire 2**4 au lieu de 24.
La lecture d'un nombre binaire n'est pas commode. On coupe le nombre
binaire en deux g