0% ont trouvé ce document utile (0 vote)
24 vues63 pages

Cours

Le document présente différents types de circuits et systèmes programmables, notamment les ASIC, PLD, micro-contrôleurs, et les architectures CISC et RISC. Il aborde également l'évolution des processeurs selon la loi de Moore, les structures de bus, et les modes d'adressage des instructions. Enfin, il décrit les phases de démarrage des micro-contrôleurs et l'organisation de leur mémoire programme.

Transféré par

Said Oumansour
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
24 vues63 pages

Cours

Le document présente différents types de circuits et systèmes programmables, notamment les ASIC, PLD, micro-contrôleurs, et les architectures CISC et RISC. Il aborde également l'évolution des processeurs selon la loi de Moore, les structures de bus, et les modes d'adressage des instructions. Enfin, il décrit les phases de démarrage des micro-contrôleurs et l'organisation de leur mémoire programme.

Transféré par

Said Oumansour
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

è systèmes programmables

Les

Les circuits spécialisés ou ASIC (Application Specific Integrated Circuit) :

Les circuits spécialisés sont des circuits spécialisés dès leur conception pour une application
donnée.

Exemples : DSP (Digital Signal Processing), co-processeur arithmétique, processeur 3-D,


contrôleur de bus, ...

Source : Texas Instruments


Source : NVidia

Avantages : Inconvénients :

Très rapide ●
Faible modularité

Consommation moindre ●
Possibilité d'évolution limité

Optimisé pour une application ●
Coût
Les différents systèmes programmables
Les systèmes en logique programmée et/ou en logique programmable sont connus sous la
désignation de PLD (programmable logic device, circuit logique programmable)


FPGA (field-programmable gate array, réseau de portes programmables in-situ),

PAL (programmable array logic, réseau logique programmable),

...

Source : Altera Source : Altera

« Un circuit logique programmable, ou réseau logique programmable, est un circuit intégré logique qui
peut être reprogrammé après sa fabrication. Il est composé de nombreuses cellules logiques
élémentaires pouvant être librement assemblé.» (Wikipédia)

Avantages : Inconvénients :

Forte modularité ●
Mise en oeuvre plus complexe

Rapidité ●
Coûts de développement élevé
Les différents systèmes programmables

Les systèmes micro-programmés :

Les micro-contrôleurs sont typiquement des systèmes micro-programmés.

Micro-contrôleur Microchip
PIC16F690 en boîtier DIL20

Un micro-contrôleur est un :

« Circuit intégré comprenant essentiellement un microprocesseur, ses mémoires, et


des éléments personnalisés selon l'application. » (Arrêté français du 14 septembre
1990 relatif à la terminologie des composants électroniques.)
Un micro-contrôleur contient un microprocesseur.

Avantages : Inconvénients :

Mise en oeuvre simple ●
Plus lent

Coûts de développement réduits ●
Utilisation sous optimale
Deux types de processeurs


CISC : Complex Instruction Set Computer

Grand nombre d'instructions,


Type de processeur le plus répandu


RISC : Reduced Instruction Set Computer

Nombre d'instructions réduit


(sélection des instructions pour une exécution plus rapide)
Décodage des instructions plus rapide
Évolution et Loi de Moore

Intel Pentium 4 Northwood C (2002)


architecture interne 32 bits
fréquence d’horloge 2,4/3,4 Ghz
(bus processeur : 200Mhz)
plus de 42 millions de transistors, gravés en 0,13 µm
450 MIPS
Source : Intel

Source : Intel

Intel 8086 (1978)


architecture interne 16 bits
bus 16 bits
fréquence d'horloge 4,77/10 Mhz
16
39 000 transistors, gravés en 3µm Source : Wikipédia
0,33/0,75 MIPS
Évolution et Loi de Moore

Intel Core i7 Gulftown (2011)


architecture interne 64 bits
4/6 coeurs
fréquence d'horloge 3,46 Ghz
Fréquence de bus: 3,2 GHz
Fréquence de transfert des données 25.6 Gb/sec.
1,17 Milliards de transistors, gravés en 32nm
6000 MIPS

« The wall » :
limite industrielle et physique,
20 nm
Intel Pentium 4 Northwood C (2002)
architecture interne 32 bits performance / Watt consommé
fréquence d’horloge 2,4/3,4 Ghz
Fréquence de bus: 0,2 GHz
plus de 42 millions de transistors, gravés en 0,13 µm
450 MIPS
Les structures des systèmes micro-programmés


Les différents bus d'un système micro-programmés

« Un bus est un jeu de lignes partagées pour l’échange de mots numériques. »


(Traité de l’électronique, Paul Horowitz & Winfield Hill)

Définition : Un bus permet de faire transiter (liaison série/parallèle) des


informations codées en binaire entre deux points. Typiquement les informations
sont regroupés en mots : octet (8 bits), word (16 bits) ou double word (32 bits).

Caractéristiques d'un bus:



nombres de lignes,

fréquence de transfert.

« Largeur du bus »
8


Unidirectionnel


Bidirectionnel

Issu de la documentation technique


du PIC16F628
Structures des systèmes micro-programmés

Il existe 3 Types de bus :


Bus de données : permet de transférer entre composants des données,
ex. : résultat d'une opération, valeur d'une variable, etc.


Bus d'adresses : permet de transférer entre composants des adresses,
ex. : adresse d'une case mémoire, etc.


Bus de contrôle : permet l'échange entre les composants d'informations de
contrôle [bus rarement représenté sur les schémas].
ex. : périphérique prêt/occupé, erreur/exécution réussie, etc.
Définition : Une adresse est un nombre binaire qui indique un emplacement dans
une zone mémoire
Structures des systèmes micro-programmés


Structure de Von Neumann


Structure de Harvard

La différence se situe au niveau de la séparation ou non des mémoires programmes et données.


La structure de Harvard permet de transférer données et instruction simultanément, ce qui
permet un gain de performances.
Issu de la documentation technique du
PIC16F628
Les mémoires :

RAM (Random Access Mem.)


mémoire rapide qui permet
de stocker temporairement
des données.

ROM (Read Only Memory)


mémoire à lecture seule,
programmée à vie.

EEPROM

(Elec. Erasable Programmable


Read Only Memory)

mémoire lente qui permet de


stocker des données même
après coupure de l’alim.

PC (Program Counter)


Registre(case mémoire)


ALU


Multiplexeur


Décodeur d’instructions


horloge


Stack (pile)
LIFO (Last In First Out)
FIFO (First In First Out)

Registre (case mémoire)


ALU


PC (Program Counter)


Multiplexeur


Décodeur d’instructions


horloge


Stack (pile)

LIFO (Last In First Out)


FIFO (First In First Out)

Issu de la documentation
technique du PIC16F628

Ports d’entrées/sorties


USART
(Universal Synchronous Asynch.
ReceiverTransmitter)
interface de communication série,


CCP (Capture/Compare/PWM)
Modulation en largeur d'impulsions


Timer

Comparateur

CAN/CNA

Référence de tension

Module HF

Liaison USB, ...
Les éléments de choix
Caractéristiques électriques :
Architecture : ●
Fréquence d’horloge

ALU (8, 16, 32, 64 bits) ●
Tensions d’alimentation

Structure du processeur (Harvard, Von Neumann) ●
Consommation d’énergie, modes faible

Type de processeur (RISC, CISC) consommation d’énergie, ...

Taille des mémoires programme et donnée

Nombre de ports d’entrée/sortie Caractéristiques physiques :

Type de boîtier : DIL, PLCC, ...
Fonctionnalités :

Fonctions analogiques : CAN, CNA, Comparateur, ...

Fonctions de timing : Timer, Watchdog, ...

Fonctions de communication : UART (Communication
série), USB, I2C, ...

Facilité de programmation : In-Circuit Serial
Programming, Self Programming, ...

Mise en oeuvre, maintenance :



Coût de développement : outils de développement,
formation, ...

Suivi du micro-contrôleur : production suivie,
disponibilité, composant obsolète, ...

28
Source : Microchip
Instructions

Un jeu d’instruction est un ensemble d’opérations directement réalisables sur un


système micro-programmé donné.

Par exemple : le PIC18F4520 (RISC) possède un jeu d’instructions composé de 75


instructions. L’exécution d’une instruction peut nécessiter un ou plusieurs cycles
d’horloges suivant la complexité de l'instruction.

NOTE : Un cycle d’horloge correspond à une période de l’horloge (signal de


référence temporelle). La fréquence d’horloge est le nombre de cycles effectués
par une horloge en une seconde.
Instructions

Une instruction est composée au minimum de deux parties:

Instruction = OPCODE + opérande(s)

OPCODE (Operation CODE) : partie d’une instruction qui précise quelle


opération doit être réalisée

Extrait du datasheet (documentation technique) du PIC18F4520.


Pipeline et flot d’instructions

3 étapes pour l'exécution d'une instruction :



Lecture de l’instruction (1)

Décodage de l’instruction (2)

Exécution de l’instruction (3)

Temps
1 2 3

1 2 3

1 2 3

Création d’un pipeline => permet une exécution plus rapide des instructions

Temps
1 2 3

1 2 3

1 2 3
Les différents modes d'adressage
La nature et le nombre d’opérandes qui constituent une instruction déterminent le mode
d’adressage de l’instruction. On distingue 4 modes d’adressage principaux.

L‘adressage inhérent : il n’y a pas d’opérande !

ex : NOP, RESET, CLRWDT ;

Description de l'instruction RESET extraite de la notice


technique (le « datasheet ») du PIC 18F4520

'
Les différents modes d'adressage
La nature et le nombre d’opérandes qui constituent une instruction détermine le mode
d’adressage de l’instruction. On distingue 4 modes d’adressage principaux.

L’adressage immédiat : l’opérande est une valeur

ex : MOVLW 5Ah ;

Nombres de cycles nécessaires à l'exécution

Exécution de l'instruction (pipeline à 4 niveaux)


Les différents modes d'adressage
La nature et le nombre d’opérandes qui constituent une instruction détermine le mode
d’adressage de l’instruction. On distingue 4 modes d’adressage principaux.

L’adressage direct (étendu) : l’opérande est l’adresse (bits de


poids faibles de l'adresse complète) de la donnée dans la
page mémoire active.

ex : ADDWF 000Fh,

En mode direct étendu : on transmet l'adresse complète


Les différents modes d'adressage
La nature et le nombre d’opérandes qui constituent une instruction détermine le mode
d’adressage de l’instruction. On distingue 4 modes d’adressage principaux.


l’adressage indirect (indexé) : l’opérande est l’adresse d’un registre qui contient l’adresse de la
donnée.


En mode indirect indexé, on ajoute un décalage par rapport à l’adresse.

NOTE : Il existe de nombreux autres modes d’adressage (ex. implicite, inhérent, relatif) : leur nombre
varie en fonction du constructeur et du micro-contrôleur !
Structures des ports d’entrées/sorties

Un port d’entrées/sorties est par définition un port bidirectionnel.

De fait, il est donc nécessaire de configurer la direction du port (in ou out). Dans le
microcontrôleur, des registres spécifiques sont dédiés à la gestion de ces ports...

Extrait de la documentation technique du PIC18F4520 de Microchip.


Les registres

Un registre 8 bits est synonyme d'un


ensemble de 8 cases mémoire. De
nombreux registres sont utilisés pour
gérer le microcontrôleur.

Le registre W (accumulateur)

Le compteur programme (PC)

Le registre d’état (Flags)

Les registres de configuration :

les registres de directions pour les ports


d’entrées/sorties (TRIS, SFR), les registres de
gestion des interruptions, de gestion de la
mémoire (BSR, GPR, etc.)

ATTENTION : tous les registres du microcontrôleur ne sont pas représentés sur le schéma...
Par exemple : le registre d'état

Le registre d'état (Status Register) contient des bits d'informations sur les opérations arithmétiques
menées par l'ALU (ex., le dépassement de format après avoir demandé l'addition de deux valeurs 8
bits).
Phase de démarrage du micro-contrôleur

Suite à une opération de remise à zéro (RESET), le micro-contrôleur effectue une phase de
démarrage :

1/ RESET : il peut être déclenché par la mise sous tension du micro-contrôleur, la réception d’un
signal sur la broche RESET du micro-contrôleur, une instruction de RESET, ...

2/ Initialisation du micro-contrôleur : le micro-contrôleur effectue une temporisation afin de


garantir la stabilité des signaux d’horloge.

3/ Effacement des registres : le micro-contrôleur efface le contenu des registres (variable en


fonction du « mode de RESET » que vous effectuez).

4/ Lecture du vecteur RESET


Le micro-contrôleur lit l’adresse du programme principal dans la mémoire programme.

5/ Début de l’exécution du programme principal.


Organisation de la mémoire programme

Compteur de programme (PC)


le compteur de programme

Pile (Stack)
une pile pour gérer les appels
programmes et les interruptions

Vecteur Reset
pointeur vers l’adresse mémoire du
début du programme principal

Vecteurs d'interruption
pointeur vers l’adresse mémoire du
programme à exécuter en cas
d’interruptions

Mémoire programme
zone mémoire réservée au stockage des
programmes écrits par l’utilisateur

Remarque : Un pointeur est une variable contenant une adresse mémoire.


Exécution d’une
instruction
Adressage inhérent
L’instruction ne comporte pas d’opérande et
agit implicitement sur un registre.

Exemples : SLEEP, RESET, NOP

Adressage immédiat
L’instruction comporte une opérande et agit
explicitement sur un registre

Exemples : ADDLW, MOVLW

Déroulement:
(1) Le compteur programme indique l’adresse
de l’instruction suivante dans la mémoire
programme. (2) L’instruction est lue et stockée
dans le registre d’instruction. (3) Puis elle est
décodée par le module de décodage et de
contrôle des instructions. (4) Finalement elle est
exécutée.
Exécution d’une
instruction
Adressage direct (étendu)

L’instruction comporte une opérande qui


indique l’adresse mémoire sur laquelle
s’effectue l’opération.

Exemples : CLRF (direct), MOVFF (étendu)

Déroulement:
(1) Lecture de l’instruction dans la mémoire
programme à l'adresse pointée par le compteur
programme. (2) Lecture de l’instruction et
décodage. (3) Pour l’adressage direct, l’opérande
constitue la partie basse de l’adresse mémoire sur
laquelle s’effectue l’opération, la partie haute est
complétée avec le registre BSR. (3') Pour
l’adressage étendu, l’opérande est l’adresse
complète de la case mémoire sur laquelle
s’effectue l’opération. (4) Finalement l’instruction
est exécutée sur la case mémoire pointée.
Organisation de la mémoire données

BSR (Bank Select Register)

Permet de pré-sélectionner la page pour un accès


mémoire plus rapide.
=> notion de pagination de la mémoire

GPR (General Purpose Registers)

Espaces mémoires qui permet le stockage de


données temporaires (variable, ...)

Access Bank

pointeurs vers des zones mémoires

SFR (Special Function Registers)

Registres de contrôle et d’état pour les


périphériques (notamment...)
Pagination de la mémoire
« La pagination de la mémoire consiste à diviser la mémoire en blocs (pages) de longueur
fixe. » (Source : Comment Ça Marche)

Une adresse mémoire est alors divisée en deux parties :

Partie haute Partie Basse

Dans le cas d’une instruction avec adressage direct, on transmet seulement la partie basse
de l’adresse. Le micro-contrôleur utilise le registre BSR pour compléter l’adresse.

Attention !! En adressage
direct, on doit s’assurer que
l’on travaille dans la bonne
page mémoire.
67
Exécution d’une
instruction
Adressage direct (étendu)

L’instruction comporte une opérande qui


indique l’adresse mémoire sur laquelle
s’effectue l’opération.

Exemples : CLRF (direct), MOVFF (étendu)

Déroulement:
(1) Lecture de l’instruction dans la mémoire
programme à l'adresse pointée par le compteur
programme. (2) Lecture de l’instruction et
décodage. (3) Pour l’adressage direct, l’opérande
constitue la partie basse de l’adresse mémoire
sur laquelle s’effectue l’opération, la partie haute
est complétée avec le registre BSR. (3') Pour
l’adressage étendu, l’opérande est l’adresse
complète de la case mémoire sur laquelle
s’effectue l’opération. (4) Finalement
l’instruction est exécutée sur la case mémoire
pointée.
Exécution d’une
instruction

Adressage indirect (indexé)

L’instruction comporte une opérande


indiquant un pointeur, c.à.d. une adresse de la
case mémoire sur laquelle s’effectue
l’opération.

Exemples : ADDWF, INDF1, 1

Déroulement:
(1) Lecture de l’instruction dans la mémoire
programme à l'adresse pointée par le compteur
programme. (2) Lecture de l’instruction et
décodage. (3) La valeur de l’opérande indique
le pointeur à utiliser. (4) La valeur pointée est
lue (avec un éventuel décalage en mémoire). (5)
Finalement l’instruction est exécutée sur la
valeur pointée.
Conception d'un système embarqué

Formellement, la conception d'un système embarqué basé sur un microcontrôleur peut être
décomposée en 3 étapes distinctes.

(1) Le développement matériel s'appuie sur un cahier des charges, c.à.d. la définition des
fonctionnalités et des performances du système. Cette étape doit permettre de spécifier les
caractéristiques du microcontrôleur, de ses périphériques et de l'électronique associée.

(2) Le développement logiciel s'appuie sur l'étape précédente pour construire un algorigramme,
puis le code qui va être testé. Cette étape requiert que vous choisissiez le langage (assembleur
et/ou évolué) que vous utiliserez sur des bases objectives, par exemple de manière à optimiser
le temps de développement, la facilité de maintenance, le nombre d'opérations, etc.

(3) La phase de test doit être menée pour vérifier que le cahier des charges initial est bien rempli.
Cette phase de test « finale » n'empêche pas d'avoir mené des tests séparés lors des phases de
développement matériel et logiciel.
Chacune de ces trois étapes précédente peut être relativement complexe et mobiliser des moyens
financiers et humains conséquents. Par ailleurs, le test à une étape peut remettre en cause les choix fait
à une étape précédente : en pratique, on est donc plutôt confronté à un cycle de conception plutôt qu'à
un enchaînement parfaitement séquentiel !

Développement matériel
Développement logiciel

Tests du système complet


Le développement du logiciel

La construction d'un code machine exécutable s'appuie sur un certain nombre de composantes
(fichiers sources, librairies) qui suivent le diagramme organisationnel ci-dessous.

(1) Les fichiers sources écrits dans un langage


assembleur et/ou évolué doivent permettent au
système embarqué d'effectuer les tâches requises.

(2) Le compilateur et/ou l'assembleur a pour rôle de


convertir les instructions des sources en langage
machine.

(3) L'éditeur de lien permet de construire un


exécutable à partir des objets issus soit des sources
soit de librairies pré-existantes.
La programmation en Assembleur

Le langage Assembleur (abrégé ASM) est un langage de programmation de bas-niveau, qui fait la
correspondance entre des instructions en langage machine (mots binaires) et des symboles appelés
mnémoniques plus simples à utiliser.

Source : Microchip

Le langage Assembleur est un langage compilé, c'est à dire :

1. L’utilisateur écrit son programme en langage Assembleur. Ce fichier est assemblé pour traduire le
programme en langage machine (avec éventuellement des améliorations).

2. Le programme en langage machine est alors utilisé pour programmer le micro-contrôleur, c.à.d.
qu'il est transféré dans la mémoire (programme) pour être exécuté.
Les types d’instructions en Assembleur

A. Les instructions propres au micro-contrôleur :


Les instructions de transfert : movlw, movf, ...

Les instructions arithmétiques : decf, addwf, ...

Les instructions logiques : xorlw, andlw, ...

Les instructions de branchement : bz (branch if zero), bra (branch always), ...

B. Les instructions pré-processeur permettent au programmeur de donner des indications au


compilateur, elles sont destinées au PC et non pas au micro-contrôleur !

Il existe différents types d’instruction pré-processeur :


les instructions de contrôle : org = début du programme, end = fin du programme, etc. ;

les instructions conditionnelles : if, else, endif, etc. ;

les instructions relatives aux données : res = réservation d’espace mémoire, etc. ;

les instructions pour les macros
Algorigrammes

La description du programme par un algorigramme permet de :



gagner en efficacité lors de la phase de codage du programme,

d’optimiser la structure du programme,

de clarifier le fonctionnement du programme,

le rendre compréhensible à une personne extérieure.

Début, Fin,
Sous-programme
Interruption

Initialisation
Test d'une condition Faux

Instruction Vrai
Premier programme
en assembleur
Début

Broche 2 à 7 du PORTB en sortie


Broche 1 du PORTB en entrée
RAZ du PORTB
Broche 1 à 4 du PORTB en E/S numérique

Broche 1
du PORTB
à l'état haut ?

Broche 2 du PORTB Broche 2 du PORTB


à l'état haut à l'état bas
Structure d’un programme en assembleur
Dans un programme en assembleur, on peut distinguer une partie préliminaire qui est systématique
c.à.d. qui ne change pas d'un programme à l'autre.

;
; Filename : premier_programme.asm
;
; Description :Recopie de l'état de la broche 1 du PORTB
; sur la broche 2 du PORTB
;
list p=18f4520
; Définition du micro-contrôleur utilisé

#include <[Link]>
Début ; Définitions des emplacements mémoires des registres

; La configuration du micro-contrôleur est définie avec MPLAB


; (Logiciel de développement Microchip)
La première partie concerne l'en-tête qui définit, le plus clairement possible, la fonction du
programme ainsi que divers informations permettant de gérer l'historique du code (auteur, date
d'écritures et de modifications, numéro de version, etc.)

; Filename : premier_programme.asm
;
; Description : Recopie de l'état de la broche 1 du PORTB
; sur la broche 2 du PORTB
;

Début list p=18f4520


; Définition du micro-contrôleur utilisé

#include <[Link]>
; Définitions des emplacements mémoires des registres
; et configurations matérielles par défaut

#include <MA_CONFIG.inc>
; Modification des configurations matérielles par défaut
La déclaration du micro-contrôleur permet au compilateur de générer un code machine qui soit
compréhensible pour le microcontrôleur que vous souhaitez programmer.

;
; Filename : premier_programme.asm
;
; Description : Recopie de l'état de la broche 1 du PORTB
; sur la broche 2 du PORTB
;
list p=18f4520
Début ; Définition du micro-contrôleur utilisé

#include <[Link]>
; Définitions des emplacements mémoires des registres
; et configurations matérielles par défaut

#include <MA_CONFIG.inc>
; Modification des configurations matérielles par défaut
Une directive au pré-processeur demande l'inclusion d'un fichier de définition spécifique au
microcontrôleur qui définit certaines configurations matérielles par défaut et permet de simplifier
l'écriture des programmes,
; Filename : premier_programme.asm
; Description : Recopie de l'état de la broche 1 du PORTB
; sur la broche 2 du PORTB
list p=18f4520
Début ; Définition du micro-contrôleur utilisé

#include <[Link]>
; Définitions des emplacements mémoires des registres
; et configurations matérielles par défaut

#include <MA_CONFIG.inc>
; Modification des configurations matérielles par défaut
Extrait du fichier [Link] de défin propre au micro-contrôleur
;----- Register Files
PORTA EQU H'0F80'
PORTB EQU H'0F81'
PORTC EQU H'0F82'
PORTD EQU H'0F83'
PORTE EQU H'0F84'
LATA EQU H'0F89'
LATB EQU H'0F8A'
LATC EQU H'0F8B'
LATD EQU H'0F8C'
LATE EQU H'0F8D'
Une directive au pré-processeur supplémentaire peut être spécifiée de manière à modifier la
configuration par défaut établie dans [Link].

Note : pour savoir comment modifier ces configurations, il faut aller voir le fichier [Link].

; Filename : premier_programme.asm
;
; Description :Recopie de l'état de la broche 1 du PORTB
; sur la broche 2 du PORTB
;
list p=18f4520
Début ; Définition du micro-contrôleur utilisé

#include <[Link]>
; Définitions des emplacements mémoires des registres
; et configurations matérielles par défaut

; #include <MA_CONFIG.inc>
; Modification des configurations matérielles par défaut

Exemple de ce que pourrait être le fichier MA_CONF [Link]


;----- Utilisation de l'oscillateur
;----- en mode haute vitesse
CONFIG OSC = HS
On peut distinguer ensuite une seconde partie qui correspond à la configuration des éléments du
microcontrôleur qui entrent directement en jeu dans la fonction réalisée...

La première opération consiste systématiquement à initialiser le vecteur RESET. Notez que cette
étape n'a pas été notée dans l'algorigramme (ce qui pourrait être considéré comme une lacune...).

Broche 2 à 7 du PORTB en sortie


Broche 1 du PORTB en entrée
RAZ du PORTB
Broche 1 à 4 du PORTB en E/S numérique

org h'0000' ; initialisation du vecteur RESET


goto init

init clrf PORTB


movlw b'00000001'
movwf TRISB ; Configuration de la direction
; du PORTB. Broche 1 en entrée.
; Broche 2 à 8 en sortie
clrf LATB
movlw 0Fh
movwf ADCON1 ; Configuration des broches 1 à 4
; du PORTB en E/S numérique
La seconde opération correspond à la configuration du PORT B telle que décrite par
l'algorigramme... Cette configuration est directement fourni par le Datasheet du PIC 18F4520...

Broche 2 à 7 du PORTB en sortie


Broche 1 du PORTB en entrée
RAZ du PORTB
Broche 1 à 4 du PORTB en E/S numérique

org h'0000' ; initialisation du vecteur RESET


goto init

init clrf PORTB


movlw b'00000001'
movwf TRISB ; Configuration de la direction
; du PORTB. Broche 1 en entrée.
; Broche 2 à 8 en sortie
clrf LATB
movlw 0Fh
movwf ADCON1 ; Configuration des broches 1 à 4
; du PORTB en E/S numérique
Fonctions intégrées du PIC 18F4520

Les microcontrôleurs intégrent des fonctionnalités qu'il est souvent utile de connaître
pour gagner du temps de développement. Par exemple, le PIC18F4520 intègre les
« modules » suivants :


Les compteurs ................................................................... Timer

Les modules « Capture Compare PWM » ............................. CCP

Les comparateurs ................................................................. Comparator

Les modules de conversion analogique/numérique .............. CAN/CNA

Les chiens-de-garde ........................................................ Watchdog

Les différents modes de gestion de l'alimentation
La fonctionnalité « Timer »

Les timers sont des registres incrémentés à chaque réalisation d’un événement, la
valeur de ces registres pouvant être pré-positionnée à une valeur initiale.

Les événements qui commandent l'incrémentation sont



un cycle d’horloge, c'est la fonction « timer » ;

un front montant sur une broche en entrée, c'est la fonction « counter ».

Il en découle que le module timer peut remplir les fonctions suivantes,


Utilisation « timer » : permet de fournir une référence temporelle à partir de l’horloge du
micro-contrôleur, notamment dans le cadre d’applications temps réel.

Utilisation « counter » : sert à compter un nombre d’événements asynchrones sur une
broche d’entrée du micro-contrôleur.
Illustration par un exemple simple...

Cahier des charges :


On cherche à utiliser le « module timer » du microcontrôleur pour faire clignoter
une LED connectée sur le port RB1. La période est fixée à une fréquence de 1 Hz.

Une méthode générale...

(1) Lire dans la documentation (data-sheet) la section traitant du module.

(2) Déduisez-en les registres à configurer lors de la phase d'initialisation.

(3) Construisez l'algorigramme préalable à l'écriture du programme.

(4) Écrivez le programme assembleur, testez-le et débuggez-le...


Extrait du data-sheet du PIC18F4520, p. 123-125

106
Extrait du data-sheet du PIC18F4520, p. 123-125
Capture, Compare, PWM

Les modules CCPM possède trois modes de fonctionnement :


capture
Le mode capture déclenche une action si un événement pré-déterminé apparaît (ex :
changement d’état sur une broche). Utilisé avec les timers, ce module peut compter
les temps d'arrivées.


compare
Le mode compare effectue une comparaison permanente entre le contenu d’un timer
et une valeur donnée pour déclencher une action si ces contenus sont égaux.


Pulse width modulation (PWM)
Le mode PWM génère un signal rectangulaire de fréquence et de rapport cyclique
choisis par l’utilisateur.
Illustration par un exemple simple...

Cahier des charges :


On cherche à utiliser le « module CCP » du microcontrôleur pour générer un signal
rectangulaire sur la broche RC2. La période du PWM est fixée à une fréquence de
600 Hz et le rapport cyclique à 0,5.

Questions :

(1) Expliquez comment les modules CCP1 et TIMER2 fonctionnent ensemble pour
produire un signal rectangulaire de période et de rapport cyclique donné.

(2) Identifiez les registres à initialiser et les valeurs associées.

(3) Construisez l'algorigramme et écrivez le programme assembleur.


Les comparateurs

Les comparateurs permettent de comparer le signal analogique présent sur un


broche du micro-contrôleur à une valeur de référence.

Cette valeur de référence peut être


soit un signal analogique dont on fait l'acquisition sur une
autre broche du micro-contrôleur (convertisseur analogique -
numérique),


soit une tension de référence générée en interne par le micro-
contrôleur à l’aide du module de génération de tension de
référence.
Ce principe de fonctionnement décrit ci-contre permet typiquement d'effectuer une
commande de type tout-ou-rien (TOR).
Illustration par un exemple simple...

Cahier des charges :


On reprend le cahier des charges posé pour faire clignoter un LED branché sur RB0
(cf., illustration du module TIMER [Link]) mais on cherche maintenant à ajuster la
fréquence de clignotement en fonction d'une tension présentée sur la broche RA3 du
microcontrôleur. La fréquence sera de 300Hz si la tension est de inférieure à VDD/2 et
de 600 Hz si elle est supérieure à VDD/2.

Questions :

(1) On utilise une référence interne de tension pour générer la valeur de VDD/2.
Expliquez comment le module de tension de référence peut être configuré pour cela.
Expliquez ensuite comment le module de comparaison peut être utilisé pour
réaliser le cahier des charges.

(2) Identifiez les registres à initialiser et les valeurs associées.

(3) Construisez l'algorigramme et écrivez le programme assembleur.


Module de conversion
analogique/numérique

Le module de conversion analogique/numérique permet de convertir le signal


analogique présent sur une broche du micro-contrôleur en un signal numérique.

Les paramètres à prendre en compte pour la numérisation d’un signal sont


la pleine échelle du module de conversion A/N
Indique la plage de tension admissible en entrée du module.


la dynamique
Indique le nombre de bits utilisés pour coder une valeur
analogique en numérique.


la fréquence d’échantillonnage

Notes : (1) la pleine échelle et la dynamique permettent de calculer la résolution en tension du module
de conversion A/N ; (2) la fréquence d'échantillonnage doit respecter le (fameux) « théorème de
Shannon » ; cf cours de traitement du signal.
Illustration par un exemple simple...

Cahier des charges :


On reprend le cahier des charges posé pour générer un signal rectangulaire avec le
module PWM mais on cherche maintenant à ajuster en continu la fréquence de
manière à ce qu'elle soit proportionnelle à la tension présentée sur la broche RA0.
Pour permettre l'ajustement en continu de la tension, on déclenchera la conversion
par interruption du TIMER0 automatiquement tous les 1/100 secondes.

Questions :

(1) Lisez la documentation et expliquez le fonctionnement du CAN sur la base de la


figure 19-1. Reprenez la relation entre la valeur du registre PR2 qui gère la
fréquence et calculez les valeurs extrêmes de fréquence atteignables. Déduisez
de ce qui précède la valeur du prescaler pour obtenir des fréquences prises entre
244 Hz et 60 Khz. La relation entre la conversion et la fréquence est-elle
linéaire ? Sachant que le CAN est un convertisseur 10 bits et que PR2 est un
registre 8 bits, quels sont les bits du CAN que vous allez utiliser ? Quel sera
l'inconvénient éventuel ?
Illustration par un exemple simple...

Questions :

(1) Identifiez les registres à initialiser et les valeurs associées.

(2) Construisez l'algorigramme et écrivez le programme assembleur.


Le « chien de garde » (Watchdog)

Une watchdog (WDT) est un dispositif de protection pour éviter que le micro-
contrôleur ne se bloque. Une watchdog effectue un redémarrage du système (RESET) si
une action définie n’est pas effectuée dans un délai donné.

Concrètement, l’utilisateur affecte une valeur à un registre (Watchdog Postscaler), qui


définit une durée temporelle (timeout). Périodiquement le micro-contrôleur va
incrémenter un registre (Watchdog counter). Si ce registre est plein (overflow), le micro-
contrôleur effectue un re-démarrage.

Pour que le micro-contrôleur ne redémarre pas, le programme doit périodiquement ré-


initialiser le registre (Watchdog counter).
Les différents modes de fonctionnement

En plus du mode de fonctionnement par défaut (Primary Run Mode), les micro-
contrôleurs possèdent de nombreux autres modes de fonctionnement. L'existence de ces
modes vise principalement à réduire la consommation d'énergie qui est une contrainte
forte pour les systèmes embarqués.

On notera principalement trois modes de fonctionnement :


run mode --- mode de fonctionnement par défaut du micro-contrôleur, toutes les
fonctions sont activées, la consommation d'énergie est maximale.


sleep mode --- le micro-contrôleur est placé en mode sommeil, la consommation
d'énergie est minimale, le micro-contrôleur peut-être réveillé par une interruption,


IDLE mode --- le processeur du micro-contrôleur est arrêté, plus aucune instruction
n'est exécutée, l'utilisateur peut choisir de désactiver des fonctions du micro-contrôleur
afin de diminuer la consommation d'énergie. Les fonctions activées restantes fonctionnent
normalement et peuvent réveiller le micro-contrôleur par une interruption.

Vous aimerez peut-être aussi