Anthony DUVAL
Introduction
Ques-ce quun microcontrleur? Un composant lectronique qui excute un programme enregistr en mmoire. Il est le cerveau sur une carte lectronique et effectue des calculs numriques, des comparaisons, des tests partir des mesures effectues sur ses pattes configures en entres et envoi des signaux sur ses pattes configures en sortie qui peuvent alors commander dautres priphrique et dialoguer avec des systmes. O trouve t-on des microcontrleurs? .. Avec quel systme de numration fonctionne t-il? ..
Organisation du module
Cours: 3 sances de 2 heures. TP: 6 sances de 4 heures
2010
Anthony DUVAL
2010
Anthony DUVAL
11/10/2013
C: Systmes de numration
Il existe une multitude de systme de numration. Un microcontrleur est une unit numrique, il travaille en logique 2 tats. Cest pourquoi on utilise le systme binaire (2 tats, ltat haut (ou 1) et ltat bas (ou 0)). Il est alors indispensable de maitriser les 3 systmes de numration suivant pour la mise en uvre de microcontrleur: Le dcimal parce quil est notre systme familier pour numrer et compter. Not D Le binaire car toutes les actions, mmorisation et traitement dun microcontrleurs se fait en base 2. Not b Lhexadacimal parce quil permet de faciliter la lecture du binaire. Not h
Exemple: (5FC1)h plus lisible et plus facilement reproductible que: (0101111111000001)b
Microprocesseur Microcontrleur
Microprocesseur: Un microprocesseur est une unique puce sur laquelle est contenue: une unit arithmtique et logique (UAL) qui effectue les oprations. des registres qui permettent au microprocesseur de stocker temporairement des donnes : (piles). une unit de contrle qui commande l'ensemble du microprocesseur en fonction des instructions du programme. Microcontrleur: Un microcontrleur est une unique puce sur laquelle est contenue au minimum: Processeur Mmoire contenant le programme excuter. Mmoire RAM contenant les registres de donnes. Priphriques dentres/sorties. Peut fonctionner de manire autonome contrairement au microprocesseur qui ncessite dautres priphriques
6
Anthony DUVAL
Anthony DUVAL
Autres Priphriques
Anthony DUVAL
11/10/2013
Diffrents microcontrleurs
Un microcontrleur est dfinie en fonction de: La largeur de ses donnes en bits. Sa vitesse de calcul en MIPS (Million dinstructions par seconde). La complexit de son jeu dinstruction. (La complexit des calculs que le processeur peut effectuer en peu de cycles machines, Le nombre dinstructions diffrentes disponibles,) Les mmoires disponible et leurs tailles. (RAM, Flash, EEPROM,) Le type et le nombre dentres/sorties. Le boitier: TQFP, BGA, DIP, PDIP,. Les priphriques spcifiques quil possde. (PWM, Communication AUSART, SPI,) Il existe une multitude de fabricant de microcontrleurs.
Anthony DUVAL
Anthony DUVAL
10
Diffrents microcontrleurs
Quelques fabricants: Intel (80C51) Motorola (Srie 68HC11) ST Microelectronics (ST7) Atmel (Srie AVR) Parallax (Srie Basic Stamp) Arizona Microchip (Srie PIC) Renesas Texas instrument Nous allons nous intresser plus particulirement aux PICs de microchip, Simples de mise en uvre et accessibles (outils de dveloppements gratuits).
2010 Anthony DUVAL 11
Exemple: Le PIC16F737-I/SP
16 correspond la complexit du jeu dinstruction. La srie 16 correspond au milieu de gamme (instructions cods sur 14 bits). F correspond au type de mmoire programme:
C pour EPROM ou EEPROM (rinscriptible ou non selon cas) CR pour ROM (non rinscriptible) F pour Flash (rinscriptible)
737 correspond la rfrence du microcontrleur en lui-mme. I/SP correspond la vitesse max de lhorloge et au type de Boitier : SPDIP
Anthony DUVAL
12
11/10/2013
Mmoire RAM
Plusieurs pages. Attention tre dans la bonne page pour lire les donnes Voulues. Les adresses renseignes contiennent des registres utiliss pour les priphriques ou systmes internes au microcontrleur (registres SFR). Exemple: ADRESH ladresse 1Eh et ADRESL ladresse 9Eh Contiennent le rsultat aprs une conversion analogique numrique Les registres General Purpose Register sont utiliser pour stocker les variables.
Anthony DUVAL 16
2010
Anthony DUVAL
15
11/10/2013
Registres importants
Registres de configuration: Ils contiennent les bits de configuration appel aussi bits fusibles . Ces bits sont protgs pour ne pas tre crass malencontreusement dans le droulement du programme. Ils sont donc crit dans le micro pendant la programmation. Accumulateur(s): Registre W sur le Pic 16F737. Le Program Counter ou PC. Status: registre dtat. Il permet de changer de page mmoire Renseigne dun dpassement lors dopration Contient le rsultat lors dun test
Anthony DUVAL 17
Bits de configuration
Principaux points configurer:
Choix de loscillateur: Fonctionnement sur quartz, oscillateur interne, signal de synchro externe, Protection en lecture de la mmoire programme. Activation du chien de garde (watchdog). PWRT: PoWer Reset Timer. Temps de maintien en Reset au dmarrage du microcontrleur (mise sous tension). BORV: Brown Out Reset Voltage. Tension en dessous de laquelle le microcontrleur passe ou reste en Reset.
Anthony DUVAL
18
Registre Accumulateur(s)
Ces registres permettent de conserver temporairement les donnes de registres impliqus dans un calcul ou le rsultat dune opration en attendant le stockage dans le registre voulu. Ils sont par exemple ncessaires pour effectuer certaines instructions comme les additions est les soustractions. Neutres en langage volu car grer par le compilateur, il sont incontournable pour la programmation en assembleur (exemple: On charge la valeur additionner un registre dans un Accu avant de pouvoir effectuer le calcul). Les microcontrleurs possdent un ou plusieurs registres accumulateur.
Registre STATUS
Il permet de Grer diffrents vnements comme les dpassement lors dun calcul ou le changement de page mmoire lorsquil y en a plusieurs.
Anthony DUVAL
20
11/10/2013
HORLOGE/OSCILLATEUR
Lhorloge du microcontrleur est un organe indispensable qui permet le cadencement des oprations de traitement du composant. Il en existe une multitude de sortes. La frquence maximum utilisable dpend du microcontrleur, il faut donc se renseigner dans la documentation constructeur. La frquence dhorloge = frquence doscillation (fosc). La frquence de cycle (fcy) dun microcontrleur est le nombre dinstruction maximum quil peut excuter par seconde . Elle est un rapport de la frquence dhorloge. Par exemple sur les Pic de Microchip: fcy=fosc/4. Il faut 4 battements pour raliser un cycle. Le cycle machine (Tcy) correspond donc au temps dexcution dune instruction: Tcy=1/fcy.
2010
Anthony DUVAL
21
2010
Anthony DUVAL
22
HORLOGE/OSCILLATEUR
Circuit RC: le moins prcis mais aussi le moins cher. Rsonateur cramique: solution intermdiaire entre RC et quartz. Rsonateur quartz: trs prcis, plus cher. Horloge externe ou oscillateur autonome: plus robuste, la plus cher.
Oscillateur:
HORLOGE/OSCILLATEUR
4 modes doscillateurs disponibles: RC : Rsistance/capacit: LP : Low Power Crystal XT : Crystal/resonator HS : High Speed Crystal/resonator
Rsonateur:
Un rsonateur est un composant qui a la facult de rentrer en rsonance une frquence qui lui est propre (dpendante de sa taille dans le cas de quartz ou cramique) lorsque celui-ci est excit par un signal transitoire. Le signal ainsi obtenu est une sinusode.
2010
Un oscillateur est un composant lectronique qui lorsquil est aliment gnre un signal dhorloge mit en forme. Sa sortie est un signal carre 0-5V ou 0-3,3V.
Anthony DUVAL
23
2010
Anthony DUVAL
24
11/10/2013
OSCILLATEUR: exemple
Schma dhorloge utilisant un quartz ou un oscillateur cramique:
2010
Anthony DUVAL
25
Anthony DUVAL
26
Les timers
Un timer permet de compter des vnements indpendamment du droulement du programme. Lincrmentation du timer peut tre synchronise sur lhorloge principales de droulement du programme ou sur une horloge extrieure. Ils peuvent avoir plusieurs utilisation:
Gestion de la dure du programme principales. Mesure de temps entre deux vnements. Cadencement prcis dactions. Par exemple des mesures synchronises par rapport un vnement. Mesure dun nombre dvnements survenue.
Exemple:
Si TRISA=0b10011101 RA0,RA2, RA3,RA4,RA7 sont en entre. RA1,RA5,RA6 sont en sortie. Si TRISB=0 Tout le PortB (RB0 RB7) est configur en Sortie. Si TRISB=255 Tout le PortB (RB0 RB7) est configur en Entre.
Anthony DUVAL
Exemple dutilisation:
Horloge temps rel pour grer lheure et la date.
27
Anthony DUVAL
28
11/10/2013
Anthony DUVAL
29
Anthony DUVAL
30
2n
avec: +Vref=Tension de rfrence du convertisseur. Ualim ou tension prcise applique entre les pattes Vref du composant. +n=Nb de bits de conversions. Exemple: Vref=VDD=5V, n=10. Q=5/10244,9mV
Le rsultat de la dernire conversion est stocke dans les registres ADRESL et ADRESH. Deux registres sont ncessaires dans ce cas car le rsultat est cod sur plus de bits que nen possde le microcontrleur:
ADRESH: Bits de poids fort de la conversion. ADRESL: Bits de poids faible de la conversion.
Anthony DUVAL
31
Anthony DUVAL
32
11/10/2013
AUSART et communication
AUSART: ADDRESSABLE UNIVERSAL SYNCHRONOUS ASYNCHRONOUS RECEIVER TRANSMITTER Permet de crer facilement une communication srie avec un autre systme comme un PC ou un automate. Utilis pour de multiples liaison srie (RS232, RS485, USB, Bluetooth ). Il existe une multitude dautres moyens de communication intgr dans les Microcontrleurs:
SPI (4 fils): Communication srie simple pratique pour communiquer avec des priphriques externes comme des EEPROM, CAN, Convertisseur Numrique Analogique, principalement localis sur une mme carte lectronique. IC (2 fils): Inter Integrated Circuit. CAN (2 fils): Controller Area Network. Utilis principalement dans des milieux soumis perturbations, il permet de communiqu de manire fiable entre plusieurs systme distant.
Anthony DUVAL 33
Le Watchdog:
Le Watchdog ou chien de garde permet de dtecter lorsque le programme est entr dans une boucle infinie ou tout simplement lorsquil a plant . Il possde un timer qui lui est propre et qui sincrmente tout les cycles dhorloge indpendamment du programme. Lorsque que le programme est bloqu dans une boucle infinie ( plant ), le timer continue de sincrmenter. Lorsquil atteint une certaine valeur (programmable dans les bit de configuration pour dfinir un temps donn), il effectue un RESET (saut au reset vector ladresse 0x00) du microcontrleur et le programme reprend du dbut. Lorsque le watchdog est activ, il est alors ncessaire deffectuer un reset du timer du watchdog (CLRWDT :clear watchdog) intervalles rgulier dans le programme, sans quoi le microcontrleur effectuerait sans cesse des RESET.
Anthony DUVAL
34
Les interruptions
Provoquer par un vnement (changement dtat dun port, ), une interruption met entre parenthses le programme en cours pour lancer des instructions prioritaires. Une fois le programme interruptible termin, le retour au programme en cours avant lvnement est automatique. Attention prserver les registres de travail avant de lancer le programme sur interruption (Stockage dans dautres registres) et de les restaurer par la suite. Intrt: Elles permettent de traiter une action qui ncessite un vnement sans attendre que celui-ci est lieu. On peut ainsi effectuer dautres instructions au lieu de rester bloqu sur un test. Lorsque lvnement aura lieu, une interruption sera alors gnre et nous pourrons traiter laction en priorit.
Fin de la conversion.
Conversion Analogique Numrique avec interruption: Instructions Instructions programme programme =>Gain de temps Lancement dune conversion AN.
Traitement du rsultat
Anthony DUVAL
35
11/10/2013
Chaque interruption peut tre autorise ou non grce au bit xxIE prsent pour chaque module interruptible. Par exemple ADIE permet de grer linterruption dclenche par le convertisseur analogique numrique.
Anthony DUVAL
37
Anthony DUVAL
38
Ordinogramme: Dfinition
Lordinogramme (Flowchart en anglais) est un outil danalyse qui permet de reprsenter de manire graphique lenchanement logique des oprations effectuer pour raliser un travail. Il permet de:
Visualiser une succession logique doprations et de dcisions Faire apparatre des incohrences logiques dans un processus Aider llaboration dun processus Reprsenter lenchanement des oprations effectuer, par ordre chronologique Analyser la logique de construction Dcrire et reprsenter lenchanement des diffrentes tches d'un processus
10
11/10/2013
Ordinogramme: Exemple
Init
Principaux langages
Le processeur dun microcontrleur ne traite que des 1 et des 0 (langage machine). Exemple: pour incrmenter le registre ladresse 0x0f sur un PIC 16F737: 00 1010 1+Adresse du registre Soit: 00 1010 1000 1111 Une instruction simple peut alors devenir compliquer mettre en uvre et lire. Pour palier ce problme, des langages de programmation sont mis en place afin de faciliter leur utilisation. Les deux principaux langages que nous allons voqus sont: Lassembleur Le langage C
Action 1
Action 2
Action 3
Anthony DUVAL
41
Anthony DUVAL
42
Lassembleur
Alternative simple pour crire un programme car chaque instruction assembleur correspond le code opration (OpCode) crire dans la case mmoire programme. Il est donc un langage trs proche du microcontrleur. Les oprations de traitement (compilation) du programme avant limplantation dans la puce sont donc simples. Il ncessite une connaissance parfaite du jeu dinstruction associ au microcontrleur. Le codeur doit grer la position de son programme dans la mmoire et les adresses mmoires de ses variables en RAM. Il doit galement grer la stack, les bits de retenus lors de calcul, Lorsque vous changez de microcontrleur, le programme doit tre rcrit afin dtre compatible avec le jeu dinstruction du nouveau composant.
2010
Anthony DUVAL
43
Anthony DUVAL
44
11
11/10/2013
Anthony DUVAL
46
;Exemple programme assembleur ;Fais clignoter une LED dispose sur RA0 #include <P16F737.INC> ;fichier contenant les raccourcis aux registres ;Declaration des constantes et registre LED EQU R_I EQU R_J EQU R_K EQU ORG Init BSF BCF MOVLW b'11111110' MOVWF TRISA BSF BCF main BSF PORTA,LED CALL DELAY1S BCF PORTA,LED CALL DELAY1S GOTO main
Lassembleur: exemple
00h 20h 21h 22h 0x0005 ;constante LED=0
;Ecrire le programme partir de l'adresse 0x0005 ;initialisation entree sortie STATUS,RP0 ;Passage en page1 de la RAM STATUS,RP1 ;Defini RA0 en sortie et RA1->RA7 en entre STATUS,RP0 ;Passage en page0 de la RAM STATUS,RP1 ;Debut programme principale
Anthony DUVAL
47
12
11/10/2013
Les Pic en C
Langage C: Langage volu
Le code est indpendant du processeur. Les programmes sont plus facile relire et comprendre quavec lassembleur.
Anthony DUVAL
50
Variables: dclarations
Dclaration dune variable: Unsigned char A=2; //Dclaration de la variable A en 8 bits non signs est prpositionne 2. Char table[10]; //Dclaration dun tableau de 10 caractres. Variables globales et locales: Une variable de type locale est dfinie dans un programme et nest accessible que dans celui-ci. Une variable globale est dfinie en dehors de tout programme et est accessible de nimporte quel programme.
Pointeurs:
Un pointeur est une variable qui contient ladresse dune variable. Un pointeur est dclar par une * prcd du type de donne pointe
Anthony DUVAL
51
Anthony DUVAL
52
13
11/10/2013
Tableaux et chanes:
Un tableau est un regroupement de variables de mme type. Ex: int table[5]={254,12,54,35,2};
Le C: Oprateurs
Une chane de caractre est un tableau de type char qui se termine par 0. Ex: char affichage[]="bonjour:" Equivalent : char affichage[]={b,o,n,j,o,u,r,:,0}
Anthony DUVAL
53
Anthony DUVAL
54
Le C: Oprateurs
Le C:
Anthony DUVAL
55
Anthony DUVAL
56
14
11/10/2013
Le C:
Fonctions:
Une fonction est dfinie de la manire suivante: Type nom(type var1, type var2,) { instructions; .. return valeur; } Le type de la fonction correspond au type de donne quelle renvoie (valeur dans la fonction ci-dessus). Quand le type est void, cela signifie que la fonction ne renvoie pas de valeur. Il ny a dans ce cas pas de return.
Anthony DUVAL
57
Anthony DUVAL
58
Fonctions:
Exemples de fonction: int Adition(int a, int b) { int c; c=a+b; return c; }//Cette fonction additionne ses arguments et renvoi le rsultat. void AllumeLedR(void) { _LedR=1; }//Cette fonction valide simplement une sortie logique.
Anthony DUVAL 59
Fonctions:
La fonction principale du programme dans lequel le microcontrleur va sauter ds la mise en route sappel main: Programme main typique: Void main(void) { init(); //lance un sous programme. while (1) //Boucle infinie qui correspond la boucle programme { instructions du programme; } }//Fin programme principale.
Anthony DUVAL 60
15
11/10/2013
Fonctions: Dclaration
Pour pouvoir appeler une fonction, celle-ci doit tre dclare en dehors de tout autre fonction. Exemple de dclaration avec la fonction Adition (Diapo 59):
Le C:
Anthony DUVAL
61
Anthony DUVAL
62
Le C:
Le C:
Anthony DUVAL
63
Anthony DUVAL
64
16
11/10/2013
Le C:
Le C:
Linstruction break permet dinterrompre le switch sans effectuer les tests qui suivent. Cette instruction simplifie quand il y a beaucoup de if/else qui se suivent.
Anthony DUVAL 65 Anthony DUVAL 66
Le C: Compilateur
Comme nous lavons vu prcdemment, le programme est enregistr dans la mmoire du microcontrleur sous forme dune srie dinstructions codes sur 14 bits. Chacune de ces instructions fait partie du jeu dinstruction du microcontrleur utilis, et nont absolument rien de comparable avec notre code en langage C. Il faut donc retranscrire ce programme pour quil soit compos uniquement du jeu dinstruction appartenant notre composant et permettre de le programmer dans la mmoire de notre puce. Il existe des outils pour effectuer cette tche: Les compilateurs. Etant donn la diversit et les diffrences entre les diffrents microcontrleurs, un seul compilateur ne va couvrir quune quantit limit de rfrence. Chez Microchip, un compilateur diffrent est propos par famille de produit (le compilateur C16 pour la famille pic16, C18 pour pic18, C30 pour DSPIC30,)
2010 Anthony DUVAL 67
Programmer un PIC
Programmer un microcontrleur, cest crire le programme compiler dans la mmoire programme. 3 mthodes les plus rpandus:
Utiliser un programmateur simple. Utiliser un programmateur In-circuit. Utiliser un Bootloader et un bus de communication avec un ordinateur (USB, RS232,..)
Anthony DUVAL 68
17
11/10/2013
Attention: Les programmateurs maison ne fonctionneront pas tous directement sous MPLAB. Il est alors possible dutiliser dautres logiciel comme ICPROG.
Anthony DUVAL 69 Anthony DUVAL 70
Dbut P.P. Init Allumer LED Tempo 1s Eteindre LED Tempo 1s oui While (1)? non Fin
72
Anthony DUVAL
71
18
11/10/2013
Dbut Gestion LED NbPassageSPLED++ NbPassageSPLED >Y oui NbPassageSPLED=0 non LED=!LED Fin
non
Si Tcy=2us et que le Timer 0 est configur en mode 8 bits avec prescaler=1 et horloge driv de Fosc. Proposez un couple de valeur X et Y et dclarez la variable NbPassageSPLED. Autre proposition de gestion:
oui non
Anthony DUVAL
74
Anthony DUVAL
75
2010
Anthony DUVAL
76
19
11/10/2013
Quel(s) priphrique(s) du C pourrai(ent) utilis(s) par son environnement? Niveau logique lappui:_________ Niveau logique relch:__________
Niveau logique lappui:_________ Niveau logique relch:__________
2010
Anthony DUVAL
77
Anthony DUVAL
78
Pendant un temps dune dure de quelques millisecondes, ltat du bouton poussoir vu par le C peut tre incertain et plusieurs Appuis/Relchements peuvent tre interprt provoquant des ractions du programme non voulus (par exemple plusieurs incrmentation dune variable au lieu d1,). Solution: ne tester ltat du BP qu intervalle de temps suprieure au temps dincertitude (20ms par exemple) et neffectuer quune seule fois laction voulue par phase dAppuie/relchement.
Anthony DUVAL 79 2010 Anthony DUVAL 80
20
11/10/2013
sources
Datasheets constructeur Christian DUPATY (acadmie Aix marseille) Bigonoff
Anthony DUVAL
81
Anthony DUVAL
82
21