cours 3a dee microcontroleur.pdf

21
11/10/2013 1 MC Cours Microcontrôleurs 2013 Anthony DUVAL Polytech’Tours Département électronique et énergie 3A 2013 Anthony DUVAL 1 Plan du cours Introduction Définition d’un microcontrôleur Composition des microcontrôleurs Mémoires Périphériques: Timers, CAN, AUSART Configuration Outil d’aide à la programmation: l’ordinogramme Principaux langages de programmation: L’assembleur Le C Méthodes de programmation Microcontrôleur et environnement Anthony DUVAL 2 Introduction: Objectif du cours Présenter le fonctionnement et la structure générale des microcontrôleurs Vous donner les outils permettant d’analyser un système à base de microcontrôleurs(µC) et d’apprécier son potentiel. Etre capable de mettre en œuvre un système autour d’un microcontrôleurs(µC) et écrire le programme de gestion de celui-ci. Cours: 3 séances de 2 heures. TP: 6 séances de 4 heures 2010 Anthony DUVAL 3 Organisation du module Introduction Qu’es-ce qu’un microcontrôleur? Un composant électronique qui exécute un programme enregistré en mémoire. Il est « le cerveau » sur une carte électronique et effectue des calculs numériques, des comparaisons, des tests à partir des mesures effectuées sur ses pattes configurées en entrées et envoi des signaux sur ses pattes configurées en sortie qui peuvent alors commander d’autres périphérique et dialoguer avec des systèmes. Où trouve t-on des microcontrôleurs? …………………………………………………………………………………………………………………….. Avec quel système de numération fonctionne t-il? …………………………………………………………………………………………………………………….. 2010 Anthony DUVAL 4

Upload: diavolo-rossonero-del-milan

Post on 25-Nov-2015

51 views

Category:

Documents


0 download

TRANSCRIPT

  • 11/10/2013

    1

    MC

    Cours Microcontrleurs

    2013

    Anthony DUVAL

    PolytechTours

    Dpartement lectronique et nergie

    3A

    2013 Anthony DUVAL 1

    Plan du cours 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 2

    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.

    Cours: 3 sances de 2 heures.

    TP: 6 sances de 4 heures

    2010 Anthony DUVAL 3

    Organisation du module

    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?

    ..

    2010 Anthony DUVAL 4

  • 11/10/2013

    2

    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

    Anthony DUVAL 5

    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 manireautonome contrairement aumicroprocesseur qui ncessitedautres priphriques

    Anthony DUVAL 6

    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

    Anthony DUVAL 8

    Microcontrleur

    Processeur

    Mmoire Flash:

    Programme

    Ports

    E/S

    Mmoire RAM:

    Donns Autres Priphriques

    Bus dadressage

    Bus de donnes

  • 11/10/2013

    3

    Exemple

    de

    structure

    interne

    de C

    Anthony DUVAL 9

    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 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

    4

    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).

    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

    Mmoire Programme du 16F737

    Anthony DUVAL 14

    Mmoire Programme du 18F45K22

    2010 Anthony DUVAL 15

    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

  • 11/10/2013

    5

    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.

    Anthony DUVAL 19

    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.

    Registre

    STATUS

    Anthony DUVAL 20

    Il permet deGrer diffrents vnements comme les dpassement lors dun calcul ou le changement de page mmoire lorsquil y en a plusieurs.

  • 11/10/2013

    6

    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.

    2010 Anthony DUVAL 21

    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 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.

    2010 Anthony DUVAL 23

    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.

    Oscillateur:

    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.

    HORLOGE/OSCILLATEUR

    4 modes doscillateurs disponibles:

    RC : Rsistance/capacit:

    LP : Low Power Crystal

    XT : Crystal/resonator

    HS : High Speed

    Crystal/resonator

    2010 Anthony DUVAL 24

  • 11/10/2013

    7

    OSCILLATEUR: exemple

    Schma dhorloge utilisant un quartz ou un

    oscillateur cramique:

    2010 Anthony DUVAL 25

    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.

    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).

    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 27

    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 dutilisation:

    Horloge temps rel pour grer lheure et la date.

    Anthony DUVAL 28

  • 11/10/2013

    8

    Les timers: Composition

    Anthony DUVAL 29

    Les timers: registre associ

    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:

    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

    Anthony DUVAL 31

    n

    VrefQ2

    =

    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.

    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 32

  • 11/10/2013

    9

    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.

    Anthony DUVAL 35

    Les interruptions: Exemple

    Anthony DUVAL 36

    Lancement dune

    conversion AN.

    Attente fin de conversion

    Fin de la

    conversion.

    Traitement du rsultat

    Lancement dune

    conversion AN.

    Fin de la

    conversion .

    Gnration dune

    interruption.

    Traitement du rsultatInstructions programme

    Instructions programme=>Gain de temps

    Instructions programme

    Conversion Analogique Numrique sans interruption:

    Conversion Analogique Numrique avec interruption:

  • 11/10/2013

    10

    Droulement dune interruption

    Anthony DUVAL 37

    l

    Anthony DUVAL 38

    Chaque interruption peut tre autorise ounon grce au bit xxIE prsent pour chaquemodule interruptible. Par exemple ADIE permet de grer linterruption dclenchepar le convertisseur analogique numrique.

    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

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

    comprhension.Anthony DUVAL 39

    Ordinogramme: Principaux symboles

    Anthony DUVAL 40

    Appel dun sous programme

  • 11/10/2013

    11

    Ordinogramme: Exemple

    Anthony DUVAL 41

    Init

    Action 1 Action 2

    Action 3

    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

    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

    Lassembleur: Instructions sur octets

    Anthony DUVAL 44

  • 11/10/2013

    12

    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.

    Anthony DUVAL 47

    Lassembleur: exemple;Exemple programme assembleur

    ;Fais clignoter une LED dispose sur RA0

    #include ;fichier contenant les raccourcis aux registres

    ;Declaration des constantes et registre

    LED EQU 00h ;constante LED=0

    R_I EQU 20h

    R_J EQU 21h

    R_K EQU 22h

    ORG 0x0005 ;Ecrire le programme partir de l'adresse 0x0005

    Init ;initialisation entree sortie

    BSF STATUS,RP0 ;Passage en page1 de la RAM

    BCF STATUS,RP1

    MOVLW b'11111110'

    MOVWF TRISA ;Defini RA0 en sortie et RA1->RA7 en entre

    BSF STATUS,RP0 ;Passage en page0 de la RAM

    BCF STATUS,RP1

    main ;Debut programme principale

    BSF PORTA,LED

    CALL DELAY1S

    BCF PORTA,LED

    CALL DELAY1S

    GOTO main ;Fin programme principaleAnthony DUVAL 48

  • 11/10/2013

    13

    Les Pic en C

    Langage C: Langage volu

    Le code est indpendant du processeur.

    Les programmes sont plus facile relire et

    comprendre quavec lassembleur.

    Attention, ne pas confondre avec la

    programmation de type Objet vu en cours

    de JAVA.

    Anthony DUVAL 49

    Variables: Types de donns

    Type Longueur

    (octets)

    Domaine de valeurs

    Signed char 1 -128 127

    Unsigned char 1 0 255

    Signed int 2 -32768 32767

    Unsigned int 2 0 65535

    Long 4 0 4 294 967 295

    Unsigned long 4 -2 147 483 648 2

    147 483 647

    Float 4 3.4*10-38 3.4*1038

    Double 8 1.7*10-308 1.7*10308

    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.

    Anthony DUVAL 51

    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 52

  • 11/10/2013

    14

    Tableaux et chanes:

    Un tableau est un regroupement de variables de mme type.

    Ex: int table[5]={254,12,54,35,2};

    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

    Le C: Oprateurs

    Anthony DUVAL 54

    Le C: Oprateurs

    Anthony DUVAL 55

    Le C:

    Anthony DUVAL 56

  • 11/10/2013

    15

    Le C:

    Anthony DUVAL 57

    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 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

  • 11/10/2013

    16

    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):

    int Adition(int a, int b);

    Anthony DUVAL 61

    Le C:

    Anthony DUVAL 62

    Le C:

    Anthony DUVAL 63

    Le C:

    Anthony DUVAL 64

  • 11/10/2013

    17

    Le C:

    Anthony DUVAL 65

    Le C:

    Anthony DUVAL 66

    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.

    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

  • 11/10/2013

    18

    Programmer un Pic:

    Programmateurs simpleCes 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.

    Attention: Les programmateurs maison ne fonctionneront pas tous

    directement sous MPLAB. Il est alors possible dutiliser dautres logiciel

    comme ICPROG.

    Anthony DUVAL 69

    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.

    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 (Self-

    write) ou bien de lancer un programme depuis une mmoire externe.

    Anthony DUVAL 71

    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 72

    Tempo 1s

    Dbut P.P.

    Eteindre LED

    Tempo 1s

    Allumer LED

    Init

    While

    (1)?

    oui

    non

    Fin

  • 11/10/2013

    19

    Programme: Notion de temps

    Regardons maintenant un autre exemple:

    2010 Anthony DUVAL 73

    Gestion LED

    Dbut P.P.

    TMR0=0

    Init

    TMR0

    >= X?

    ouinon

    Fin

    While

    1?

    non

    oui

    Dbut Gestion LED

    NbPassageSPLED++

    NbPassageSPLED

    >Ynon

    oui

    Fin

    NbPassageSPLED=0

    LED=!LED

    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?

    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:

    2010 Anthony DUVAL 74

    Exemple: Microcontrleur in-situ

    Anthony DUVAL 75

    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?

    2010 Anthony DUVAL 76

    C in situ: Premire approche

  • 11/10/2013

    20

    C in situ: Premire approche

    Questions se poser devant un schma C (suite):

    Quelles pattes utiliss en entres? Niveau logique actif?

    Quelles pattes utiliss en sorties? Niveau logique actif?

    Quel(s) priphrique(s) du C pourrai(ent) utilis(s) par son

    environnement?

    2010 Anthony DUVAL 77

    C in situ: Boutons poussoir2 principales solutions de cblage:

    Anthony DUVAL 78

    Avec rsistance en pull-up:

    Niveau logique lappui:_________

    Niveau logique relch:__________

    Avec rsistance en pull-down:

    Niveau logique lappui:_________

    Niveau logique relch:__________

    Chronogramme dun appui sur un BP:

    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

    C in situ: Boutons poussoir

    Notion de rebonds

    Bouton poussoir: Gestion anti

    rebonds Dessiner un ordinogramme de gestion dun BP avec anti rebond:

    2010 Anthony DUVAL 80

  • 11/10/2013

    21

    Anthony DUVAL 81

    C in situ: Gestion de Clavier

    matricielLe principe de traitement consiste envoyer une info sur une ligne et de lire sielle arrive sur une colonne.

    On peut inverser ligne et colonne: criresur les colonnes et lire sur les lignes.)Le principe de traitement consiste envoyer une info sur une ligne et de lire sielle arrive sur une colonne.

    (On peut inverser ligne et colonne: criresur les colonnes et lire sur les lignes.)

    sources

    Datasheets constructeur

    Christian DUPATY (acadmie Aix marseille)

    Bigonoff

    Anthony DUVAL 82