Vous êtes sur la page 1sur 21

11/10/2013

Plan du cours MC Cours Microcontrleurs 2013


Anthony DUVAL PolytechTours Dpartement lectronique et nergie 3A
2013 Anthony DUVAL 1

Introduction Dfinition dun microcontrleur Composition des microcontrleurs


Mmoires Priphriques: Timers, CAN, AUSART Configuration

Outil daide la programmation: lordinogramme Principaux langages de programmation:


Lassembleur Le C

Mthodes de programmation Microcontrleur et environnement

Anthony DUVAL

Introduction: Objectif du cours


Prsenter le fonctionnement et la structure gnrale des microcontrleurs Vous donner les outils permettant danalyser un systme base de microcontrleurs(C) et dapprcier son potentiel. Etre capable de mettre en uvre un systme autour dun microcontrleurs(C) et crire le programme de gestion de celui-ci.

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

Pourquoi utiliser un microcontrleur?


Simplification de carte lectronique: Une seul puce capable de remplacer des dizaines de fonctions logiques. Possibilit dutiliser une seule et unique carte pour diffrentes applications par simple reprogrammation. Facilit d amlioration dun produit par mise a jour du software de gestion (appel aussi firmware) Fonction de communication intressante pour interfaage homme machine ou change et traitement dinformations avec dautres cartes ou appareil (Automate, PC,).
Anthony DUVAL 7

Composition minimum dun microcontrleur


Microcontrleur Bus dadressage Processeur Mmoire Flash: Programme Ports E/S

Bus de donnes Mmoire RAM: Donns

Autres Priphriques

Anthony DUVAL

11/10/2013

Exemple de structure interne de C

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

Les diffrentes mmoires


La mmoire programme:
La mmoire programme est constitue de mots de 14 bits par exemple pour la srie 16, et de mots de 16 bits pour la srie 18. Une instruction remplie un mot de la mmoire programme. Selon le microcontrleur, cette mmoire peut tre efface (mmoire de type Flash ou EEPROM) ou inscrite de manire permanente (mmoire EPROM). Les microcontrleurs non rinscriptibles sont appele O.T.P. (One Time Programming).

Mmoire Programme du 16F737

La mmoire RAM: (Random Access Memory)


Toutes les donnes qui y sont stockes sont perdues lextinction. Cette mmoire contient tout les registres

La mmoire EEPROM: (Electrical Erasable Programmable Read Only Memory)


Elle permet de stocker des informations qui doivent tre conserves mme lors de la coupure de lalimentation du microcontroleur. Attention: Lcriture est assez longue est demande une procdure spcifique.
Anthony DUVAL 13 Anthony DUVAL 14

Mmoire Programme du 18F45K22

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.

Le PC: Program counter


Ce registre contient ladresse de la prochaine instruction raliser. Ainsi lors dune instruction de saut (GOTO), ladresse ou lon doit se rendre est crite dans le registre PC. Sinon, il sincrmente chaque instruction.
Anthony DUVAL 19

Anthony DUVAL

20

11/10/2013

Conditions ncessaire au fonctionnement dun C


La tension dalimentation doit tre suffisante (U>Umin constructeur et U>BORV si actif, voir bits de configuration) Niveau logique haut prsent sur la patte de RESET si utiliss. Reset du timer du watchdog a temps si chien de garde activ. Choix de la bonne horloge par rapport lenvironnement du C. Certains microcontrleurs disposent dune horloge interne mais ils sont souvent accompagns dun quartz externe permettant de choisir la frquence doscillation voulue avec une prcision accrue.

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:

Les ports numriques


Les ports numriques sont les entres/sorties simple des microcontrleurs, chaque patte appartenant un port numrique possde un niveau logique (1 ou 0) et peut tre lue ou crite indpendamment des autres. Elles sont paramtrables en entre pour tre lu ou en sortie pour tre crite. Un microcontrleur peut en possder plusieurs dizaines. En sortie, elles permettent de commander des priphriques tel que des LED, des relais, des buzzers. Elles permettent galement denvoyer des informations un afficheur LCD ou 7 segments. On peut les assimiler au "Sorties Tout Ou Rien sur un automate. En entre, elles permettent de lire ltat dun priphrique voisin ou de lire ltat dun bouton poussoir ou dun clavier. On peut les assimiler au Entres Tout Ou Rien sur un automate.

2010

Anthony DUVAL

25

Anthony DUVAL

26

Les ports numriques: Configuration


Chaque port possde son registre qui permet de configurer les diffrentes pattes correspondantes en entre ou en sortie. Sur les PICs, ces registres sappel TRIS suivit de la lettre correspondant au Port (TRISB pour le port B). Dans ce registre,
Un 1 logique configure la patte en entre (1 ou I pour Input). Un 0 logique configure la patte en sortie (0 ou O pour Output).

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

Les timers: Composition

Les timers: registre associ

Anthony DUVAL

29

Anthony DUVAL

30

Convertisseur Analogique Numrique (C.A.N.)


Permet de rcuprer limage de la tension prsente sur une patte du composant. Si convertisseur 10Bits, la valeur rcuprer est comprise entre 0 et 210 -1= 1023. Le Quantum: Tension correspondante 1lsb: Q = Vref

Le C.A.N.: Registres associs.


Il possde 3 principaux registres de configuration:
ADCON0: Il permet de configur la vitesse de conversion ainsi que la patte sur laquelle il faut effectuer la mesure. Il permet galement de dmarrer la conversion. ADCON1: Permet de choisir quelles pattes sont en Analogique et la source de la tension de rfrence. ADCON2: Permet de choisir le temps dacquisition.

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.

Les interruptions: Exemple


Conversion Analogique Numrique sans interruption: Instructions programme Attente fin de conversion Traitement du rsultat

Lancement dune conversion AN.

Fin de la conversion.

Conversion Analogique Numrique avec interruption: Instructions Instructions programme programme =>Gain de temps Lancement dune conversion AN.

Traitement du rsultat

Fin de la conversion . Gnration dune interruption.


Anthony DUVAL 36

Anthony DUVAL

35

11/10/2013

Droulement dune interruption


l

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

Ordinogramme: Principaux symboles

Appel dun sous programme

Raliser avant de rdiger un programme, il facilite le codage et la comprhension.


Anthony DUVAL 39 Anthony DUVAL 40

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.

Lassembleur: Instructions sur octets

2010

Anthony DUVAL

43

Anthony DUVAL

44

11

11/10/2013

Lassembleur: Instructions sur octets et arguments


Le rsultat issu dune instruction agissant sur un octet peut tre stocker plusieurs emplacement selon largument. Exemple: INCF 0x22,0 : Incrmente la valeur prsente ladresse 0x22 et place le rsultat dans la pile W. INCF 0x22,1 : Incrmente et remplace la valeur prsente ladresse 0x22.
Anthony DUVAL 45

Lassembleur: Instructions sur bits et sur valeur littrales

Anthony DUVAL

46

Lassembleur: Instructions sur bits et arguments


Un registre dispose de plusieurs bits (dpendant de la profondeur de calcul du microcontrleur). Pour dfinir le bit sur lequel on agit, on dfinit son rang. Exemple: BCF 0x22,5: passe le bit de rang 5 du registre ladresse 0x22 1.

;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

;Fin programme principale


Anthony DUVAL 48

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.

Variables: Types de donns


Type Signed char Unsigned char Signed int Unsigned int Long Unsigned long Float Double Longueur (octets) 1 1 2 2 4 4 4 8 Domaine de valeurs -128 127 0 255 -32768 32767 0 65535 0 4 294 967 295 -2 147 483 648 2 147 483 647 3.4*10-38 3.4*1038 1.7*10-308 1.7*10308

Attention, ne pas confondre avec la programmation de type Objet vu en cours de JAVA.


Anthony DUVAL 49

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:

int Adition(int a, int b);

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

Programmer un Pic: Programmateurs simple


Ces programmateurs faible cot ncessite disoler le microcontrleur de son circuit dutilisation pour le programmer. Certains comme le PICSTART sont commercialiss par microchip, mais il est trs facile de sen fabriquer un avec peu de matriel.

Programmer un Pic: Programmateurs In-circuit


Ce types de programmateurs permet de programmer le PIC directement dans son lment (carte final dutilisation). Il vite ainsi les manipulations rptes qui risquent dendommager le microcontrleur: Dcharges lectrostatiques et casses des pattes de connexion. Il permettent galement de programmer les micros souds en surface (CMS ou SMD) qui ne sont pas dmontables Ces programmateurs permettent souvent le dbogage de programme en situation relle.

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

Programmer un Pic: Utilisation dun Bootloader


Un bootloader est un petit programme qui est dj implanter dans le microcontrleur. Celui-ci permet de grer une communication avec un ordinateur et dcraser une partie de la mmoire programme par ce quil reoit. On utilise alors une liaison srie (RS232 ou USB) pour envoyer le programme. Lenvoi du programme dans le PIC se fait cette fois encore In-Circuit. Inconvnients: le bootloader doit tre implant dans le PIC par lintermdiaire dun programmateur. Cette opration est nanmoins ne faire quune seule fois. Tout les microcontrleurs ne peuvent pas fonctionner avec un Bootloader. Il doit tre capable dauto crire dans leur mmoire programme (Selfwrite) ou bien de lancer un programme depuis une mmoire externe.

Programme: Notion de temps


A droite, un exemple de droulement dun programme simple permettant de faire clignoter une LED la seconde. Un microcontrleur ne peut effectuer quune seule instruction en mme temps. Les sous programmes de temporisation sont composs de suffisamment dinstructions qui ne ralise aucune action pour faire perdre du temps au processus et gnrer ainsi une attente. Pendant la dure dexcution dun tel sous programme, aucune autres actions ou programmes ne peut tre effectus. Si Tcy=2us, 500000 instructions auraient pu tre raliss pendant chaque tempo.
2010 Anthony DUVAL

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

Programme: Notion de temps


Regardons maintenant un autre exemple:
Dbut P.P. Init TMR0=0 Gestion LED TMR0 >= X? oui While 1? Fin
2010 Anthony DUVAL 73 2010

Programme: Notion de temps


Daprs-vous quel peut tre lintrt dune telle gestion par rapport la prcdente? Quel est la principale rgle a respecter pour que celle-ci fonctionne correctement?

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

Exemple: Microcontrleur in-situ

C in situ: Premire approche


Questions se poser devant un schma C: Quelle type dhorloge est utilis? Quelle est la frquence doscillation? Quelle est la frquence de cycle? Le temps de cycle?

Quelle est la tension dalimentation du C?

Anthony DUVAL

75

2010

Anthony DUVAL

76

19

11/10/2013

C in situ: Premire approche


Questions se poser devant un schma C (suite): Quelles pattes utiliss en entres? Niveau logique actif?

C in situ: Boutons poussoir


2 principales solutions de cblage:
Avec rsistance en pull-up: Avec rsistance en pull-down:

Quelles pattes utiliss en sorties? Niveau logique actif?

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

C in situ: Boutons poussoir Notion de rebonds


Chronogramme dun appui sur un BP:

Bouton poussoir: Gestion anti rebonds


Dessiner un ordinogramme de gestion dun BP avec anti rebond:

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

C in situ: Gestion de Clavier matriciel


Le principe de traitement consiste envoyer une info sur une ligne et de lire si elle arrive sur une colonne. On peut inverser ligne et colonne: crire sur les colonnes et lire sur les lignes.) Le principe de traitement consiste envoyer une info sur une ligne et de lire si elle arrive sur une colonne. (On peut inverser ligne et colonne: crire sur les colonnes et lire sur les lignes.)

sources
Datasheets constructeur Christian DUPATY (acadmie Aix marseille) Bigonoff

Anthony DUVAL

81

Anthony DUVAL

82

21

Vous aimerez peut-être aussi