SYSTEMES A MICROCONTROLEURS

175
EN-NAHLI MOHAMMED FORMATEUR :OFPPT ISTA RI FES MAROC SYSTEMES A MICROCONTROLEURS Version 4 05/10/2015

Transcript of SYSTEMES A MICROCONTROLEURS

Page 1: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED FORMATEUR :OFPPT ISTA RI FES MAROC

SYSTEMES A MICROCONTROLEURS

Version 4

05/10/2015

Page 2: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 2

Table de matières

Table de matières .............................................................................................................................. 2

Chapitre 1. Introduction aux microprocesseurs. ................................................................... 5

1. Logique câblée et logique programmée :..................................................................... 5

1.1. Logique câblée : ................................................................................................................ 5

1.2. Logique programmée : ..................................................................................................... 5

1.3. Intérêt de la logique programmée : ............................................................................ 5

1.4. Le microprocesseur : c’est quoi ?................................................................................. 6

1.5. Unité arithmétique et logique (UAL ou ALU) ........................................................... 6

2. Exemple d’une UAL : Circuit 74181 ............................................................................ 7

2.1. Le circuit intégré............................................................................................................. 7

2.2. Structure interne ............................................................................................................ 7

2.3. Table de fonctions .......................................................................................................... 8

2.4. Comment exécuter une série de fonctions ................................................................ 9

3. Architecture d’un système à microprocesseur. ...................................................... 10

3.1. Le microprocesseur. ...................................................................................................... 10

3.2. La mémoire ...................................................................................................................... 10

3.3. Les entrées/sorties ...................................................................................................... 12

3.4. Les bus ............................................................................................................................. 12

4. Architecture interne d’un microprocesseur. ............................................................ 13

4.1. Exemple 6809 MOTOROLA ........................................................................................ 14

4.2. Exemple 8080 INTEL ................................................................................................... 18

4.3. Conception d’un système à p :................................................................................... 19

5. COMPLEMENT ................................................................................................................... 20

5.1. Analyse d’un boitier mémoire ..................................................................................... 20

5.2. Association de plusieurs boîtiers mémoire : ........................................................... 20

5.3. Les interfaces avec les périphériques : ................................................................... 21

5.4. Modes d’échange du p avec la mémoire : ...................................................... 22

Chapitre 2. Généralités sur les microcontrôleurs. ............................................................ 24

1. Qu’est ce qu’un microcontrôleur ? .............................................................................. 24

2. Intérêt des microcontrôleurs ....................................................................................... 25

3. Exemple de familles de microcontrôleurs. ............................................................... 25

Page 3: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 3

4. L’architecture type Von Neumann : ............................................................................... 26

4.1. Principe de l’architecture Von Neumann .................................................................. 26

4.2. Exemple le 68HC11 ........................................................................................................ 26

4.3. Schéma fonctionnel du 68HC11A8 ............................................................................ 27

4.4. Description du schéma fonctionnel ........................................................................... 29

5. L’architecture type Harvard : Exemple les PICs de microchip ................................. 30

5.1. Principe de l’architecture HAvard ...................................................................... 30

5.2. Exemple : microcontrôleurs famille Microchip .................................................... 30

5.3. Structure interne chez Microchip : cas du PIC 16F84 ...................................... 31

Chapitre 3. LES MICROCONTROLEURS DE LA FAMILLE MICROCHIP ................... 33

1. Présentation de la famille MICROCHIP .................................................................. 33

2. LE PIC16F84A ................................................................................................................... 36

2.1. Aspect externe ......................................................................................................... 37

2.2. Architecture interne ............................................................................................... 37

2.3. La mémoire PROGRAMME (FLASH PROGRAM MEMORY) ........................... 38

2.4. La mémoire RAM ...................................................................................................... 41

2.5. Le jeu d’instruction du PIC16F841 .................................................................... 47

2.6. Les modes d’adressage ........................................................................................... 48

2.7. Les ports d’entrées sorties standards .............................................................. 49

2.8. Le module Timer TIMER0 .................................................................................... 51

2.9. La mémoire de données EEPROM ........................................................................ 52

3. Le PIC 16F877A .................................................................................................................... 53

3.1. Structure interne. ......................................................................................................... 54

3.2. Les fonctionnalités communes avec PIC16F84A .................................................... 57

3.3. Le port parallèle ............................................................................................................ 63

3.4. Le port de communication série SSP ....................................................................... 66

3.5. Le port de communication série asynchrone USART ........................................... 73

3.6. Le TIMER compteur programmable .......................................................................... 87

3.7. Le module capture / compare /PWM ........................................................................ 92

3.8. Le convertisseur analogique numérique .................................................................... 97

3.9. Le comparateur de tension ........................................................................................ 102

4. Le PIC 18FXX ...................................................................................................................... 104

Page 4: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 4

Chapitre 4. MICROCONTROLEURS DE LA FAMILLE ATMEL.................................... 118

1. Le microcontroleur ATMEL ......................................................................................... 118

2. Le microcontroleur ATMEL ......................................................................................... 119

3. La carte de développement ARDUINO ................................................................... 151

Chapitre 5 : Applications ............................................................................................................... 175

Page 5: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 5

Chapitre 1. Introduction aux microprocesseurs.

1. Logique câblée et logique programmée :

1.1. Logique câblée :

Un système de logique câblée est conçu à l’aide des circuits intégrés logiques

accomplissant une ou plusieurs fonctions logiques et arithmétiques. La logique

câblée relève du matériel (hardware).

Pour modifier la fonction réalisée par une logique câblée il faut modifier la

structure du câblage.

1.2. Logique programmée :

L’apparition des microprocesseurs sur le marché permet de concevoir tout

autrement un système logique. Le microprocesseur est un circuit intégré issu de

la technologie d'intégration à très grande échelle VLSI (Very-Large-Scale Integration)

et qui est capable de réaliser toutes les fonctions logiques et arithmétiques.

A l’aide des instructions (mots binaires), on configure le microprocesseur pour

réaliser une fonction donnée. Ainsi pour réaliser un ensemble d’opérations, il faut

donner une suite d’instructions appelée programme. Une telle logique est dite

logique programmée et qui correspond au logiciel (software).

La modification de la fonction réalisée par une logique programmée est possible

par la simple modification du logiciel.

Le concepteur d’un système à microprocesseur devra alors bien connaître le

microprocesseur et son jeu d’instructions.

1.3. Intérêt de la logique programmée :

logique câblée :

- Rapidité : temps de réalisation d’une opération correspond au temps de

propagation des signaux et au temps de réponse du système.

- Souplesse : pas de souplesse.

logique programmée :

- Souplesse : il suffit de modifier le programme pour modifier ou faire

évoluer une tâche.

- Facilité de mise au point : utilisation des systèmes de développement

évolués pour la mise au point de programmes. Cas de la programmation

graphique.

Page 6: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 6

1.4. Le microprocesseur : c’est quoi ?

Il s’agit d’un ou plusieurs circuits LSI / VLSI qui réalisent des fonctions de

traitement. Les fonctions utiles sont intégrées sur une seule "puce" de silicium.

Sa composante principale de traitement s’appelle unité arithmétique et logique.

1.5. Unité arithmétique et logique (UAL ou ALU)

L'ALU est un circuit logique (logique câblée) conçu pour effectuer un certain

nombre de fonctions (opérations) logiques et arithmétiques.

A, B , F , R, D registres binaires

A et B représentent des opérandes sous forme binaires.

F un code binaire qui représente la fonction (opération) à effectuer.

R le résultat sous forme binaire de l’opération sélectionnée par F et

effectivement effectuée.

D ensemble de bits dits d’état ou Drapeaux

On peut résumer les opérations effectuées par l'ALU ainsi:

Les opérations d'ordre logique comme la conjonction logique OU, la

disjonction ET, la négation NON, les opérations de comparaison (< , > , = ,

décalage à droite, décalage à gauche …, etc).

Les opérations arithmétiques comme l'addition, la soustraction, la

multiplication, la division, les opérations en point flottant.

Les opérations arithmétiques impliquent généralement deux nombres à l'entrée,

comme par exemple les opérations de comparaison et la plupart des opérations

logiques. On appelle opérandes les deux nombres impliqués dans une opération

parce qu'on agit sur eux à l'aide d'un opérateur. Lorsque l'opérateur agit sur

Page 7: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 7

deux opérandes, on dit qu'il s'agit d'un opérateur binaire ou dyadique. S'il agit

sur un seul opérande, on dit qu'il est unaire ou monoadique. La négation (NON)

est un exemple d'opérateur monoadique.

2. Exemple d’une UAL : Circuit 74181

2.1. Le circuit intégré.

2.2. Structure interne

Page 8: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 8

2.3. Table de fonctions

Page 9: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 9

2.4. Comment exécuter une série de fonctions ?

On note :

INSTRUCTION : un code binaire composé du code fonction et du code d’une

opérande ou de deux opérandes.

PROGRAMME : une suite ordonnée d’instructions.

Puisque L’UAL ne peut exécuter qu’une et une seule instruction à la fois, la

conception d’un circuit programmable nécessite une solution pour les contraintes

suivantes :

Le programme ou la série des codes d’instructions doit être logé (sauvegardé)

quelque part.

Solution : Utiliser une mémoire adressable. Chaque instruction sera logée à une

adresse précise.

L’exécution d’un programme nécessite de pointer l’adresse mémoire du début du

programme (1), d’acheminer le code instruction vers les registres A , B , F. puis

donner l’ordre d’exécution. Et une fois l’instruction est exécutée il faut passer à

l’instruction suivantes.

Page 10: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 10

Solution :

Utiliser un registre dit COMPTEUR PROGRAMME . sa valeur va servir pour

pointer l’adresse de la case mémoire de la prochaine instruction à exécuter

(écriture sur le bus d’adresse. Voir loin).

Installer un mécanisme d’incrémentation du dit compteur de programme par une

horloge et de pouvoir modifier sa valeur selon une condition donnée.

(Branchement)

Utiliser des registres supplémentaires pour faciliter le transfert de données.

D’autres contraintes doivent êtres résolues (voir suite).

3. Architecture d’un système à microprocesseur.

Bus de données (n lignes)

Mémoire

Unité centrale de

traitement

microprocesseur

Entrées/Sorties

Bus de contrôle

Bus d'adresses m lignes

3.1. Le microprocesseur.

C’est l'implantation en un seul boîtier, d'une unité centrale de traitement de

données CPU et d’une unité arithmétique et logique ALU. Son principal travail est

de fournir aux autres éléments, qui lui sont raccordés, la synchronisation

nécessaire et fonctionnelle du traitement des informations qui lui sont

acheminées.

Autrement dit répondre aux entrées pour produire des sorties d'une façon

déterminée par une séquence d'instructions stockées dans une mémoire

(programme).

3.2. La mémoire

Page 11: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 11

Zone de stockage des programmes exécutables et des données à traiter. Il

existe deux types de mémoires avec des variantes pour chaque type.

3.2.1. Mémoire morte ROM (Read Only Memory)

C'est une mémoire de lecture, elle contient le programme (système

d’exploitation). Son contenu n’est pas perdu si le système n'est plus alimenté.

La ROM contient toujours un programme de chargement initial (moniteur) pour

permettre le fonctionnement du système dès la mise sous tension.

Les variantes des ROM sont :

PROM :(Programmable Read Only Memory) qui ne peut être programmée

qu'une seule fois.

EPROM :peut être effacée et reprogrammée plusieurs fois et peut être lue à

l'infini. Les EPROM possèdent une fenêtre transparente permettant le

passage de rayons ultraviolets nécessaires à l'effacement. La programmation

de l'EPROM nécessite de la positionner physiquement sur un appareil dédié à

cette opération (programmateur).

EEPROM : (Electrical Erasable Programmable Read-Only Memory) peut être

effacée électriquement, sans qu'il soit nécessaire de la retirer du montage

qui l'utilise.

3.2.2. Mémoire vive :RAM (Random Access Memory)

C'est une mémoire de lecture et d’écriture. Le contenu de ce type de mémoire

est perdu lorsque l'on coupe l'alimentation. La mémoire vive (RAM) est soit

chargée avant utilisation soit en cours de l’utilisation.

Les variantes des RAM sont :

RAM statique SRAM

Un bit mémoire d'une RAM statique (SRAM) est composé d'une bascule. Tant

que le circuit est alimenté, l'information est sauvegardée. Chaque bascule

contient 6 transistors.

RAM dynamique : DRAM

Page 12: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 12

Une RAM dynamique stocke un bit d'information sous la forme d'une charge

électrique. Elle utilise pour cela l'effet capacitif de certaines fonctions des

semi-conducteurs (capacité grille substrat d'un transistor MOS).

Une Cellule mémoire d'une RAM dynamique occupe 4 fois moins de place que

celle d'une RAM statique.

Cependant, la charge stockée dans le condensateur élémentaire fuit (résistance

de fuite) et au bout de quelques millisecondes, elle est presque entièrement

perdue (décharge du condensateur).

Pour préserver cette information, il faut la rafraîchir toutes les 2 ms : cycle de

lecture et d’écriture qui rétablit l'information.

3.3. Les entrées/sorties

Se sont des circuits d’interfaces avec l’environnement du système. Permettent

au microprocesseur de communique avec le monde extérieur et, évidemment,

avec l'utilisateur.

Plusieurs variantes existent :

Interfaces parallèles : échange de plusieurs bits à la fois.

Interfaces séries : l’échange des mots binaires se fait bits par bit.

Interfaces de conversions analogiques numériques ou numériques analogiques.

Interfaces spécialisées tel que la gestion des claviers, les contrôleurs

d’écrans, les interfaces de communication…..

3.4. Les bus

Évidemment, pour que le système fonctionne, il doit y avoir une communication

entre le microprocesseur, la mémoire et les entrées/sorties. Cette

Page 13: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 13

communication est réalisée à l'aide de trois bus qui regroupent les signaux, selon

leur fonction.

Le Bus est un ensemble de fils électriques (cuivre) où apparaît une information

binaire (0 ou 1) c'est à dire (0V ou 5V) sur chaque fil.

Le bus de données

Il permet de véhiculer des données du microprocesseur vers un composant ou

d'un composant vers le microprocesseur. Il est donc bidirectionnel.

Le nombre de fils de ce bus varie suivant les microprocesseurs (8 / 16 / 32 / 64

bits). Dans la littérature, les différents fils de ce bus sont appelés D0, D1, ...,

Dp-1 si le bus est composé de "p" fils.

Le bus d’adresses

Il s'agit d'un bus unidirectionnel (16 bits pour un 6809), émanant du

microprocesseur et se propageant vers les dispositifs qu'il peut adresser. Le

code binaire présent sur le bus permet d'atteindre (pointer) une case mémoire

ou un registre spécifique.

Si un ordre d’écriture est fourni sur le bus de contrôle, la valeur de la donnée

présente sur le bus de donnée est alors écrite dans la case pointée.

Si un ordre de lecture est fourni sur le bus de contrôle, la valeur de la donnée

présente dans la case pointée est alors écrite sur le bus de donnée, et par

conséquent celle-ci peut être récupérée sur un registre.

Le bus de contrôle

C'est un groupe de lignes issues de ou allant vers le microprocesseur et reliant

ce dernier à d'autres dispositifs. Son rôle est de véhiculer les signaux destinés à

assurer la synchronisation et la commande de l'ensemble du système. Par

exemple, la ligne Reset et R/W (lecture/écriture), les lignes d'interruptions et

l'horloge appartiennent à ce bus.

Quelques signaux particuliers permettent de faire certaines commandes

particulières du p, par exemple une initialisation, une commande d’interruption

de traitement, une commande d’attente momentanée avant une entrée de donnée.

4. Architecture interne d’un microprocesseur.

Page 14: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 14

4.1. Exemple 6809 MOTOROLA

Il est composé de plusieurs registres et d'une unité arithmétique et logique.

Rôle des registres

PC

U

S

Y

X

A

B

CCDP

ALU

D {

16

Registre

d'instruction

Contrôle des

interruptions

Contrôle

des Bus

Horloge

vccvss

A0-A15DO-D7

8

/RESET

/NMI

/FIRQ

/IRQ

/DMAR/W

/HALT

BA

BS

XTAL

EXTAL

MRDY

EQ

Page 15: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 15

X - Registre d'index

Y - Registre d'index

U - Pointeur de pile de l'utilisateur

S - Pointeur de pile du système

PC - Compteur de programme

A - Accumulateur B - Accumulateur

D

DP

E F H I N Z V C

Registres pointeurs

Compteur de programme

Accumulateurs

Registre de page direct

CC - Registre de condition

Page 16: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 16

Les registres d'index X et Y (16 bits chacun)

Les registres d'index sont employés avec le mode d’adressage indexé. Ils

servent généralement au traitement d'un bloc mémoire et sont utilisés pour

pointer les données en mémoire. On peut, par exemple, effacer un bloc mémoire

ou déplacer le contenu d'une région mémoire.

Les pointeurs de piles U et S (16 bits chacun)

Ce sont des registres de 16 bits qui servent à pointer l'adresse des données

temporaires dans une région mémoire appelée pile. Le 6809 possède deux

pointeurs de piles; le registre S est le pointeur de pile du système tandis que le

registre U, est le pointeur de pile de l'utilisateur. Le pointeur de pile S est

automatiquement utilisé pendant les appels de sous-routines ou les interruptions

alors que le pointeur U est contrôlé exclusivement par le programmeur.

Le compteur de programme ou PC

Ce registre de 16 bits agit comme un compteur binaire à seize (16) bits avec une

valeur de départ programmable. On lui spécifie la valeur de départ par

l'intermédiaire d'une commande. L'utilisateur peut aussi, à l'intérieur de son

programme, changer le contenu du PC par une instruction de branchement. Le

rôle de ce registre est exclusivement de signaler au microprocesseur à quel

endroit se situe la prochaine instruction à exécuter. Dans la recherche de

l'instruction par le microprocesseur, le contenu du PC est mis sur le bus

d’adresses et au même moment, un signal de lecture est généré permettant ainsi

à la donnée, contenue dans la case mémoire adressée, de se propager à travers le

bus de données vers le microprocesseur pour être traitée. De façon automatique,

le PC s'incrémente de 1 après que le CPU ait reçu la donnée de manière à pointer

la prochaine instruction.

Les accumulateurs

Le MC6809 possède 2 accumulateurs : l'accumulateur A et l'accumulateur B. Ce

sont des registres de 8 bits servant à traiter des données. Toutes les opérations

arithmétiques ou logiques se font par l'intermédiaire des accumulateurs et de

l'ALU. Le MC6809 a la particularité de pouvoir combiner les deux accumulateurs

A et B pour en former un seul de seize bits, appelé accumulateur D, permettant

ainsi la réalisation d’opérations sur 16 bits. Lorsque les accumulateurs A et B

sont jumelés pour obtenir l'accumulateur D, les 8 bits les plus significatifs

proviennent de l'accumulateur A tandis que les 8 bits les moins significatifs, de

l'accumulateur B.

Le registre de page direct

Supposons que la plage mémoire de 64K octets est répartie en 256 pages de 256

octets, ce qui fait un total de 64K. Le registre de page permet d'indiquer quelle

Page 17: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 17

page parmi les 256 pages est accessible. Ce registre peut être modifié avec une

valeur désirée. Il est implicitement utilisé lorsque le CPU exécute une instruction

dans le mode d'adressage direct. Ce registre est automatiquement remis à zéro

lors d’une réactivation matérielle reset.

Le registre de condition

Ce registre permet de connaître les résultats d'une opération effectuée par

l'ALU. Le bit Z, mis à 1, indique que le résultat donne zéro; le bit N, mis à 1,

indique que le résultat est un nombre négatif, etc. Les bits de ce registre sont

mis à jour après l'exécution de certaines instructions. Le registre de condition

est utilisé pour prendre des décisions et de réaliser des sauts conditionnels dans

un programme.

Le registre de condition

7 6 5 4 3 2 1 0E F H I N Z V C

Position des bits

Carry = bit de reportoVerflow = bit de dépassementZero = bit indiquant un résultat de 0Negatif = résultat < 0Irq = masque de l'interruption IRQHalf carry = bit de demi reportFirq = masque d'interruption FIRQEntire flag = indicateur d'empilement

Nom des drapeaux

Page 18: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 18

4.2. Exemple 8080 INTEL

AH AL AX

BX BH BL

CX CH CL

DX DH DL

SP

BP

SI

DI

IP

CS

SS

DS

ES

BUS interne

Unité arithmétique et logique

Génération adresses

Tampon

File d'attente

PSW

Unité de commande

BUS externes

Unité d'exécution

Unité d'interface

bus (BIU)

MICROPROCESSEUR 8088

Registres opérationnels

Registres d'adressage

Pointeur d'instruction

Registres de segments

Registre d'état

Page 19: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 19

4.3. Conception d’un système à p :

Il faut distinguer les deux parties :

étude du matériel :

- le p proprement dit

- la mémoire

- les interfaces d’entrée/sortie

l’étude du logiciel :

Ensemble des programmes nécessaires pour le bon fonctionnement du

système à p ainsi ce qui concerne l’étude et la mise au point de ces

programmes.

Page 20: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 20

5. COMPLEMENT

5.1. Analyse d’un boitier mémoire

Parmi les connexions qui sortent d’un boitier, on trouve :

- Les connexions d’alimentation : Vcc=+5V et Gnd=0V

- Les connexions d’adresses (A0 à An-1) : le nombre de mots mémoire contenus

dans un boitier (capacité) est de 2n.

- Des connexions de données (D0 à Dm-1) : le nombre de ces fils correspond au

nombre de bits de chaque mémoire.

- Des connexions de contrôle, permettant de commander une lecture ou une

écriture d’une donnée de la mémoire.

- Une ou plusieurs entrée de sélection (CS), permettant de sélectionner un

boitier parmi plusieurs.

Pour accéder à ce boitier, il faut :

- Sélectionner le boîtier

- Présenter l’adresse du mot sur les fils d’adresse ;

- Commander l’opération désirée (lecture ou écriture) ;

- L’information pourra alors transiter par l’intermédiaire des fils de données.

5.2. Association de plusieurs boîtiers mémoire :

o Extension de la capacité : Pour augmenter La capacité de la mémoire, on associe plusieurs boîtiers. Le bus

de donnée est commun à tous les boitiers. Certaines lignes du bus d’adresses

sont décodées pour pouvoir sélectionner un seul boitier à la fois.

On utilise en général des décodeurs d’adresses pour différencier les boitiers.

2n mots de m bits

A0 ------- An-1

CS

OE

R/W

D0 ------- Dm-1

Page 21: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 21

o Longueur des mots : Pour augmenter la longueur des mots (taille du bus de données), on associe

plusieurs boitiers avec le même bus d’adresse en les sélectionnant en même

temps pour chaque opération de lecture où d’écriture. chaque boitier possède ses

propres lignes de données. Ainsi le nombre de lignes qui composent le bus de

données est égal au total des lignes.

Exemple :

o Réaliser une mémoire de 1K x 8 bits avec des boitiers de 1K x 4 bits. o Réaliser une mémoire de 2 KO à partir de boîtiers mémoire de 1KO o Réaliser une mémoire de 4KO, pour un microprocesseur ayant un bus

d’adresse de 16 bits, à l’aide de boîtiers mémoire de 1KO. Cette zone commencera à l’adresse $0000.

5.3. Les interfaces avec les périphériques :

5.3.1. interfaçage : Une interface est un organe nécessaire entre le p et le périphérique et ce pour

assurer une compatibilité :

Au niveau du type de transmission (série ou parallèle) ;

Au niveau du code ;

Au niveau de la vitesse de transmission ;

Au niveau logique (adaptation de tension).

5.3.2. Adressage des périphériques : Pour adresser un périphérique il faut :

Sélectionner le boîtier d’interface (CS) ;

Sélectionner l’un des deux ou trois tampons disponibles par boîtier (port).

Cet adressage se fait bien entendu par le bus d’adresse. Toutefois, deux

possibilités sont offertes :

Entée/sortie par instructions mémoires : Dans ce cas on considère le port comme une position mémoire, il suffit donc de

réserver une adresse mémoire pour chaque port et de commander la lecture d’un

périphérique comme celle d’une mémoire, de même pour l’écriture.

Page 22: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 22

C’est une solution simple que tous les processeurs offrent et qui est souvent

désignée par «Memory Mapped I/O».

Entrée/sortie par instruction E/S : Certains processeurs ont deux autres signaux pour commander une lecture ou

une écriture dans un périphérique. Ceci libère des positions mémoires en un

nombre non négligeables.

Cette structure est assez souvent désignée par «Isolated I/O».

5.4. Modes d’échange du p avec la mémoire :

5.4.1. Échange synchrone : Le p va chercher en mémoire les adresses ou les données, il communique donc

sans arrêt avec la mémoire soit pour une écriture, soit pour une lecture. Le

temps pour une opération de lecture ou d’écriture est connu, fixe et

caractéristique du p, c’est le temps de cycle, qui est également appelé cycle

mémoire. Durant un tel cycle. Cela suppose que la mémoire soit au moins aussi

rapide que le p. Dans ce cas le p gère les échanges avec la mémoire en

synchronisme avec l’horloge du p : c’est le mode synchrone.

5.4.2. Échange asynchrone : Si la mémoire a un temps d’accès supérieur au temps de cycle du p, les échanges

se font alors avec un autre mode, qui comprend à une demande de service du p à

la mémoire.

5.4.3. Modes de commande des transferts E/S : Un transfert E/S peut se faire selon 3 modes :

Mode programmé avec ou sans test d’état :

Les transferts e/s sont prévus à des moments bien précis dans le programme

utilisateur. C’est donc le p qui a l’initiative de commander le transfert et ceci

par la rencontre d’une instruction de transfert : il s’agit du mode programmé.

Une amélioration possible consiste à aller tester l’état libre ou occupé du

périphérique avant d’effectuer le transfert.

Page 23: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 23

Mode interruptible :

Les transferts peuvent également s’effectuer à l’initiative du périphérique et

non plus du p. Ainsi, le périphérique envoi une demande d’interruption au p qui

répond par l’envoi d’un signal pour indiquer qu’il a reçu la demande, termine

l’exécution de l’instruction en cours de traitement et se mettra à la disposition

du périphérique.

Accès direct à la mémoire :

Lorsqu’un périphérique a un nombre important d’informations à échanger, le

transfert par interruption est long. Un mode de transfert E/S particulier est

alors possible : c’est l’accès direct à la mémoire. Le périphérique peut alors

échanger directement avec la mémoire, les bus d’adresses, de données et de

commande étant déconnectés du p par leur mise à l’état haute impédance.

Page 24: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 24

Chapitre 2. Généralités sur les microcontrôleurs.

1. Qu’est ce qu’un microcontrôleur ?

Un microcontrôleur est un circuit intégré qui rassemble sous le même boitier les

éléments essentiels d'un ordinateur à savoir :

Le processeur UAL et l’unité de contrôle.

La mémoire morte pour le programme.

La mémoire vive pour les données.

Les circuits d’interfaces d'entrées-sorties avec les périphériques.

Des circuits de ressources auxiliaires (TIMER, CAN…..).

Les microcontrôleurs se caractérisent par un plus haut degré d'intégration, une

plus faible consommation électrique, un coût réduit par rapport aux systèmes à

microprocesseurs polyvalents utilisés dans les ordinateurs personnels.

Les microcontrôleurs sont fréquemment utilisés dans les systèmes embarqués,

comme les contrôleurs des moteurs automobiles, les télécommandes, les

appareils de bureau, l'électroménager, les jouets, la téléphonie mobile, etc.

Une étude menée en l’an 2004 montre qu’en moyenne, un foyer américain héberge

environ 240 microcontrôleurs.

Page 25: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 25

Des modèles de voitures récentes sont équipés par plusieurs dizaines de

microcontrôleurs.

2. Intérêt des microcontrôleurs

La plus grande partie des systèmes électroniques complexes utilisés de nos jours

sont des systèmes embarqués : téléphones mobiles, horloges, baladeurs,

récepteurs GPS, électroménager, automobile, transport aérien/maritime/fluvial.

Les systèmes embarqués se démarquent des systèmes informatiques

traditionnels selon plusieurs aspects :

Ils sont soumis à des contraintes de taille (intégration), de consommation

électrique (autonomie) et de coût importantes (grande série) ;

Ils sont en général assignés à une tâche bien précise. La taille des

programmes et la quantité de mémoire (vive et morte), dont ils disposent,

sont modestes (face à un micro-ordinateur) ;

Ils doivent communiquer avec des dispositifs d'entrées-sorties (IO) :

boutons, relais, résistances variables, optocoupleurs, moteurs électriques,

LED, circuits intégrés logiques, etc. ;

Ils n'ont parfois aucun dispositif d'interface homme-machine : ni clavier,

ni écran, ni disque, ni imprimante, etc. Par exemple, le contrôleur

d'injection de carburant du moteur d'une automobile est totalement

invisible pour le conducteur.

3. Exemple de familles de microcontrôleurs.

la famille Atmel AT91 ;

la famille Atmel AVR (utilisée par des cartes Arduino) ;

la famille Intel 8051, qui ne cesse de grandir ; de plus, certains

processeurs récents utilisent un cœur 8051, qui est complété par divers

périphériques (ports d’E/S, compteurs/temporisateurs, convertisseurs

A/N et N/A, chien de garde, superviseur de tension, etc.) ;

l’Intel 8085, à l'origine conçu pour être un microprocesseur, a en pratique

souvent été utilisé en tant que microcontrôleur ;

le Freescale 68HC11 ;

la famille des PIC de Microchip ;

la famille des ST6, ST7, STM8, ST10, STR7, STR9, STM32 de

STMicroelectronics ;

la famille PICBASIC de Comfile Technology;

la famille MSP430 de Texas Instruments ;

la famille 8080, dont les héritiers sont le microprocesseur Zilog Z80

(désormais utilisé en tant que contrôleur dans l'embarqué) et le

microcontrôleur Rabbit ;

Page 26: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 26

4. L’architecture type Von Neumann :

4.1. Principe de l’architecture Von Neumann

Les programmes et les données partagent la même mémoire.

Les instructions et les données transitent sur un même bus de données.

4.2. Exemple le 68HC11

L'appellation MC 68HC11 regroupe une famille de microcontrôleurs fabriqués par

l'industriel américain Motorola. Toutes les versions ont le même cœur de circuit

(68HC11A8) Les différences portent essentiellement sur la quantité de mémoire

et sur le nombre d'entrées/sorties disponibles. Il existe plus de 40 versions

différentes, avec des boîtiers allant de 40 broches pour le 68HC711D3 à 88

broches pour le 68HC711P2.

Le MC 68HC11 est un microcontrôleur 8 bits (pouvant toutefois effectuer des

opérations sur 16 bits) de technologie HCMOS, alimenté sous 5V. Il est

architecturé autour d’une unité centrale CISC (Complete Instruction Set

Computers) de 145 instructions de type 6809. Ses modes de fonctionnement,

ses multiples entrées/sorties et sa facilité d'utilisation l'ont rendu très

populaire dans le monde de l'électronique numérique.

Page 27: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 27

La référence du constructeur donne sous une forme codée des informations sur

la technologie, le boîtier etc. Un aperçu des caractéristiques de cette famille se

trouve présenté sous une forme résumée dans le tableau suivant.

4.3. Schéma fonctionnel du 68HC11A8

Mémoires

programmes

Mémoires

données

Références ROM EEPROM RAM Commentaires

MC68HC11A8 8K 512 256 Base de la famille

MC68HC11A1 - 512 256 A8, avec ROM inhibée

MC68HC11A0 - - 256 A8, avec ROM et EEPROM

inhibées

MC68HC811A8 8K EEPROM 512 256 Emulateur du A8

MC68HC11E9 12K 512 512 A8 avec plus de mémoire

MC68HC11E1 - 512 512 E9 avec ROM inhibée

MC68HC11E0 - - 512 E9 avec ROM et EPROM

inhibées

MC68HC711E9 12K EPROM 512 512 E9 avec EPROM pour petites

séries

MC68HC11D3 4K - 192 Pas de convertisseur A/D

MC68HC711D3 4K EPROM - 192 Pas de convertisseur A/D

MC68HC11F1 - 512 1K Bus non multiplexé et ports en

plus

MC68HC11L6 16K 512 512 A8 avec port en plus

MC68HC11G5 16K - 512 Timer et compteur

supplémentaires

Page 28: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 28

Page 29: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 29

4.4. Description du schéma fonctionnel

Autour de L'unité centrale 68HCll proprement dite on trouve :

De la mémoire. Elle se subdivise au maximum en trois blocs distincts dont la

taille et la présence varient selon les références du circuit.

o La RAM ou mémoire vive, de 256 octets au moins est toujours

présente.

o La ROM ou mémoire morte peut être présente ou absente. Lorsqu'elle

est présente, elle peut être du type ROM programmable par masque

(lors de la fabrication du circuit) ou du type EPROM (programmable par

l’utilisateur). Dans ce dernier cas, cette mémoire EPROM peut être non

effaçable (programmable une fois) ou effaçable type EEPROM

(programmable et effaçable électriquement). Dans tous les cas, cette

mémoire destinée au programme ne doit pas être confondue avec la

petite EEPROM visible sur ce synoptique qui est destinée aux données.

Un certain nombre de ports parallèles baptisés port A à port E (F, G suivant

les versions). Ils peuvent être bidirectionnels ou unidirectionnels selon le cas.

Certaines lignes de ces ports sont également partagées avec d'autres

ressources internes et ne sont donc pas nécessairement accessibles

directement en permanence. Ainsi par exemple le port E est commun avec le

convertisseur analogique/digital.

Des entrées / sorties séries sont aussi disponibles et peuvent fonctionner en

mode synchrone ou asynchrone selon que l'on utilise la SPI ou la SCI.

Un module de timers est également disponible. Il comporte plusieurs timers

très évolués ainsi qu'un accumulateur d'impulsions.

Une horloge temps réel et un "chien de garde" ou COP (pour Computer

Operating Properly) destiné à surveiller le fonctionnement du

microcontrôleur.

Un convertisseur analogique/digital à huit entrées complète cette panoplie de

ressources internes déjà bien riche.

Toute la logique nécessaire, tant au traitement des interruptions qu'à la

génération de l'horloge est évidemment intégrée dans le 68HCll dont la mise en

œuvre matérielle est ainsi fort simple puisque, dans de nombreux cas, un quartz

(généralement 8Mhz) et une cellule R-C pour le Reset sont les seuls composants

externes indispensables pour le pilotage de cette logique.

Remarquez aussi en partie basse du schéma fonctionnel que le circuit peut

fonctionner selon deux modes : un mode "single chip" ou circuit seul et un mode

"expanded" ou étendu qui lui permet alors d'adresser des circuits externes

Page 30: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 30

comme n'importe quel microprocesseur ordinaire. Dans ce dernier cas, les lignes

des ports B et C se transforment en lignes d'adresses et de données.

5. L’architecture type Harvard : Exemple les PICs de microchip

5.1. Principe de l’architecture HAvard

L’architecture de type Harvard est une conception qui sépare physiquement la

mémoire de données et la mémoire programme. L’accès au deux mémoires

s’effectue via deux bus distincts.

Les instructions et les données sont clairement différenciées et sont véhiculées

sur des bus différents.

La structure Harvard permet ainsi de faire fonctionner des programmes plus

rapidement par comparaison avec les microcontrôleurs qui utilisent une

architecture interne dite de Von Neumann.

5.2. Exemple : microcontrôleurs famille Microchip

Page 31: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 31

Microchip propose des microcontrôleurs 8 bits, 16 bitset 32 bits. Certaines

versions existent en ROM d'autres en EEPROM, ou encore en mémoire Flash,

mais toutes les familles existent en versions OTP.

Microchip a été la première société à utiliser la technologie RISC (Reduced

Instruction Set Computer) ou circuit à jeu d'instructions réduit (35

instructions) et une structure dite Harvard dans leurs microcontrôleurs. Ces

innovations ont permis de grandes avancées.

L'utilisation d'une architecture RISC contribue à accroître la vitesse

d'exécution des programmes par opposition à l'architecture traditionnelle dite

CISC (Complex Instruction Set Computer).

Les principales caractéristiques du RISC sont les suivantes :

Un petit nombre d'instructions élémentaires.

Exécution d'une instruction en un cycle d'horloge instruction (qui peut

être différente de l'horloge processeur).

Une structure de pipe line qui permet au circuit d'exécuter une

instruction et de charger la suivante en même temps.

Voici les principales différences entre les familles de microcontrôleurs à unité

centrale 8 bits :

- PIC12CXXX : boîtier 8 broches et jeu d'instruction sur 12 ou 14 bits

- PIC16C5X : boîtier de 18, 20 ou 28 broches, jeu d'instruction sur 12 bits

- PIC16CXXX : convertisseur analogique/numérique intégré d'une capacité

de 12 bits, boîtier de 18 à 68 broches, jeu d'instruction sur 14 bits

- PIC17CXXX : jeu étendu d'instructions sur 16 bits

Les versions à unité centrale 16 bits sont référencés PIC18CXXX. Elles

présentent un jeu de 68 instructions toutes exécutables en un cycle d'horloge.

5.3. Structure interne chez Microchip : cas du PIC 16F84

Cette structure sera détaillée par la suite de ce cours.

Page 32: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 32

Page 33: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 33

Chapitre 3. LES MICROCONTROLEURS DE LA FAMILLE MICROCHIP

Présentation de la famille MICROCHIP

PIC10 8 références

PIC12 20 références

PIC16 153 références

PIC18 220 références

PIC24F 132 références

PIC24H et PIC24E 65 références

dsPIC30 24 références

dsPIC33F et dsPIC33E 195 références

La variété des références mises sur le marché est due aux domaines

d’application.

Brochage 6 à 100 pins

Capacité mémoire 0,5 k à 256K

Type de mémoire FLASH OTP ROM SANS ROM

PIC10

PIC16

PIC18

PIC24F

PIC24H

dsPIC30

dsPIC32

PIC32

PIC12 Performance

Fonctionnalités

8 bits

16 bits

32 bits

Page 34: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 34

Type d’interfaces intégrés : (interfaces de communication USART , SSI ,

USB , bus CAN, Ethernet,.. ), CAN , PWM , gestion LCD, commande

moteurs…..

Page 35: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 35

Page 36: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 36

LE PIC16F84A

Voir le fichier de référence Microchip : \PIC16F84A Microchip

Voir le fichier: \PIC16F84A résume français (Pour un résumé en Français)

Voir le fichier : \PIC16F84A BIGONOFF part1-R6 (document complet en

français)

Page 37: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 37

1. Aspect externe

2. Architecture interne

Page 38: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 38

3. La mémoire PROGRAMME (FLASH PROGRAM MEMORY)

La mémoire programme offre 1024 cases mémoires de 14b bits chacune.

(1kx14bits). Chaque case possède sa propre adresse. Les adresses sont souvent

exprimées en hexadécimale et vont de Hx00 à Hx3FF. Le contenu de chaque

case représente une instruction.

Le registre PC « program counter» ou compteur programme permet de générer

l’adresse de la prochaine instruction à exécuter.

Le contenu de la case pointée par le compteur programme est placé dans le

registre d’instruction avant qu’il soit acheminé vers l’UAL pour l’exécution.

La valeur du compteur programme est automatiquement incrémentée après

chaque exécution d’une instruction ou bien modifié par l’instruction elle-même.

Le vecteur reset hx0000

Page 39: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 39

A la mise sous tension ou à la demande d’une initialisation du microcontrôleur, la

valeur hx0000 est écrite dans le conteur programme. La case d’adresse hx000

s’appelle vecteur RESET. Le programmeur doit y écrire la première instruction

de son programme.

Le vecteur d’interruption hx0004

Une interruption est une suspension de la tache en cours (tache principale) suite

à un événement dans le but d’exécuter une tache secondaire liée à cet

événement. La tâche suspendue est reprise une fois la tache secondaire est

exécutée.

Exemple : lorsqu’on tape une touche d’un clavier, le microprocesseur suspend la

tache en cours pour scruter le clavier et décoder la touche qui a été tapée.

Le PIC16F84A possède 5 sources d’interruptions. (voir loin), une interruption

peut être soit autorisée soit masquée.

Lorsqu’une interruption autorisée est valide on a :

o Un drapeau relatif à la source d’interruption qui est mis à 1.

o Le contenu du compteur programme PC est placé dans la pile.

o La valeur hx0004 est placée dans le PC.

o Le microcontrôleur exécute l’instruction à l’adresse hxOOO4 puis poursuit

l’exécution du programme selon la logique programmée (programme

d’interruption).

o A la rencontre de l’instruction RETFI, la valeur placée dans la pile est

restituée dans le PC. Ceci va permettre la poursuite de l’exécution de la

tache principale là ou elle a été suspendue.

L’utilisateur doit sauver l’état du registre d’état avant d’exécuter le programme

d’interruption et de le restituer avant la reprise de la tache qui a été suspendue.

La pile

Dans le cas général des microprocesseurs, une pile est un espace mémoire

destiné à sauvegarder/ restituer l’état des registres. Une pile est soit de type

LIFO (Last IN first OUT) soit de type FIFO ( first IN first OUT)

La pile du PIC16F84A est de type LIFO, elle possède 8 niveaux, donc un total de

8 programmes imbriqués à ne pas dépasser.

L’oscillateur.

Page 40: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 40

L’horloge est nécessaire au fonctionnement du PIC16F84A. Elle peut être

externe ou interne avec 4 modes d’oscillateurs.

Externe :

Interne avec résonateur céramique ou cristal (mode HS ; XT ; LP)

Interne avec circuit (mode RC)

Cycle d’exécution d’une instruction

Un cycle instruction Tcy est décomposé en 4 cycles ( 4 étapes Q1 à Q4) du

signal fourni par l’oscillateur.

Etape Q1 : décodage de l’instruction (ou NOP).

Etape Q2 : lecture (ou NOP).

Etape Q3 : calcul (ou NOP).

Etape Q4 : écriture (ou NOP).

Donc fcy = fosc /4

Circuit de RESET à la mise sous tension

Page 41: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 41

Voir la documentation du microchip pour les options de RESET.

4. La mémoire RAM

Page 42: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 42

On constate que cette mémoire est séparée en deux pages (Bank 0 et Bank ). De

plus, on remarque que tant pour la page 0 que pour la page 1, les premiers octets

sont réservés ( SFR pour Special File Register ). Ces emplacements sont en

effet utilisés par le microcontrôleur pour configurer l’ensemble de son

fonctionnement. On les appelle « registres spécifiques » et nous verrons au

chapitre suivant leurs rôles.

Le bus d’adresse qui permet d’adresser la RAM est composé de 7 fils ce qui veut

dire qu’il est capable d’adresser 128 emplacements différents. Or, chaque page

de la RAM est composée de 128 octets, le bus d’adresse ne peut pas donc

accéder aux deux pages, c’est pourquoi on utilise une astuce de programmation

qui permet de diriger le bus d’adresse soit sur la page 0, soit sur la page 1. Cela

est réalisé grâce à un bit d’un registre spécifique (le bit RP0 du registre

STATUS ) dont nous verrons le fonctionnement plus loin.

.4.1. Les registre à usage générale :GPR

La RAM de données proprement dite se réduit donc à la zone notée GPR

(Registre à usage générale ) qui s’étend de l’adresse 0Ch ( 12 en décimale )

jusqu’à 4Fh ( 79 en décimale ) soit au total 68 registres en page 0 et autant en

page 1, mais on constate que les données écrites en page 1 sont redirigées en

page 0 cela signifie qu’au final l’utilisateur dispose uniquement de 68 registres

(donc 68 octets de mémoire vive) dans lesquels il peut écrire et lire à volonté en

sachant qu’à la mise hors tension, ces données seront perdues.

.4.2. Les registres spéciaux SFR

Les registres spécifiques permettent de configurer le PIC, nous allons les

détailler un à un et voir comment on peut accéder à la page 0 ou la page 1

Page 43: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 43

adresse 00 et 80 ,INDF .

Cette adresse ne contient pas de registre physique, elle sert pour l’adressage indirect.

adresse 01 , TMR0 .

Contenu du Timer (8 bits). Il peut être incrémenté par l’horloge (fosc/4) c'est à dire

tous les 4 coups d'horloge ou par un signal d’horloge présent sur la broche RA4.

adresse 02 et 82 , PCL .

8 bits de poids faibles du compteur programme PC. Les 5 bits de poids forts (13-8)

sont dans PCLATH.

Page 44: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 44

adresse 03 et 83 , STATUS Registre d’état .

Les cinq bits de poids faible de ce registre sont en lecture seule, ce sont des témoins

(drapeaux ou flag en anglais) caractérisant le résultat de l’opération réalisée par l’UAL.

Le bit RP0 est lui en lecture /écriture et c’est lui qui permet de sélectionner la page

dans la mémoire RAM .

Si RP0=0 : on accède à la page 0 et si RP0=1 on accède à la page 1 .

Au reset, seul le bit RP0 de sélection de page est fixé ( RP0=0 : page 0 )

TO/ (Time Out) : débordement du timer WDT

PD/ : (Power Down) caractérise l’activité du chien de garde WDT

Z (zéro) résultat nul pour une opération arithmétique et logique.

DC (digit carry) retenue sur un quartet ( 4 bits )

C (carry) retenue sur un octet ( 8 bits ).

adresse 04 et 84 , FSR .

Registre de sélection de registre : contient l’adresse d’un autre registre. Permet

l’adressage indirect.

adresse 05 , PORTA .

Ce registre contient l’état des lignes du port A ( voir chapitre sur les ports ).

adresse 06 , PORTB .

Ce registre contient l’état des lignes du port B ( voir chapitre sur les ports ).

adresse 08 , EEDATA .

Contient un octet lu ou à écrire dans l’EEPROM de données.

RP0

Page 45: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 45

adresse 09 , EEADR .

Contient l’adresse de la donnée lue ou écrite dans l’EEPROM de données.

adresse 0A et 8A, PCLATH .

Voir l’adresse 02 PCL.

adresse 0B et 8B , INTCON .

Sert pour configurer et contrôler les 4 interruptions

Masques des interruptions :

GIE : (Global Interrupt Enable) : masque global d’interruption.

EEIE : (EEProm Interrupt Enable) autorise l'interruption venant de l'EEPROM.

T0IE : (Timer 0 Interrupt Enable) autorise l'interruption provoquée par le

débordement du TIMER0

INTE: ( Interrupt Enable) autorise l’interruption provoquée par un changement d'état

sur broche RB0/INT

RBIE: (RB Interrupt Enable) autorise les interruptions provoquées par un changement

d'états sur l'une des broches RB4 à RB7.

Si ces bits sont mis à 1 , ils autorisent les interruptions pour lesquels ils sont dédiés .

Drapeaux des interruptions :

T0IF : (Timer 0 Interrupt Flag) débordement du timer

INTF ( Interrupt Flag) interruption provoquée par la broche RB0/INT

Page 46: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 46

RBIF ( RB Interrupt Flag) interruption provoquée par les broches RB4-RB7.

adresse 81 , OPTION

8 bits (tous à 1 au RESET) affectant le comportement des E/S et du timer .

RBPU/ (RB Pull Up) Résistances de tirage à Vdd des entrées du port B ( voir le détail du

fonctionnement au chapitre port ).Si RBPU/=0 les résistances de pull-up sont

connectées en interne sur l'ensemble du port B.

INTEDG (Interrupt Edge) sélection du front actif de l’interruption sur RB0/INT ( 1

pour front montant et 0 pour front descendant ).

TOCS ou RTS (Real Timer Source) sélection du signal alimentant le timer 0 : 0 pour

horloge interne, 1 pour RA4/T0CLK

TOSE ou RTE (Real Timer Edge) sélection du front actif du signal timer ( 0 pour front

montant).

PSA (Prescaler assignment) 0 pour Timer 0 et 1 pour chien de garde WDT.

PS2..0 (Prescaler 210 ) sélection de la valeur du diviseur de fréquence pour les timers.

adresse 85 , TRISA . Direction des données pour le port A : 0 pour sortie et 1 pour

entrée ( voir chapitre sur les ports ).

adresse 86 , TRISB . Direction des données pour le port B : 0 pour sortie et 1 pour

entrée ( voir chapitre sur les ports ).

Page 47: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 47

5. Le jeu d’instruction du PIC16F841

Le PIC16F84A dispose de 35 instructions. Chaque instruction est codée sur 14

bits. Afin de comprendre la fonction de chaque instruction, la notation adoptée

pour les données et les adresses manipulées par les instructions est la suivante :

f représente un registre (0x00 à 0x7F)

b représente un numéro de bit en sachant que 0 correspond toujours au bit

de poids faible et 7 au bit le plus à droite dans le registre

k représente une donnée aussi appelé littéral (constante codée sur 8 bits)

w registre de travail

x non significatif. 0 ou 1

Page 48: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 48

.5.1. Instructions sur bits

Se sont des instructions qui manipulent directement des bits d’un registre ou

d’une case mémoire.

.5.2. Instructions sur constantes

.5.3. Instructions sur variables

Se sont des instructions qui manipulent des données sous forme d’octets.

.5.4. Sauts et appels de sous programmes.

Se sont des instructions qui provoquent la rupture dans la séquence du

déroulement du programme. La valeur K indique la destination du saut.

6. Les modes d’adressage

Immédiat : la valeur de l’opérande est fournie directement, elle fait

partie de code de l’instruction.

Page 49: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 49

Direct : l’instruction utilise une adresse de la ram (SFR ou GPR) qui

contient de la donnée à traiter.

Indirect : l’opérande de l’instruction représente l’adresse de l’adresse

mémoire qui contient la donnée à traiter. Le PIC16F84A utilise les

registres FSR et INDF pour l’adressage indirect. (voir TD)

7. Les ports d’entrées sorties standards

Le PIC16F84A possède deux ports d’entrées / sorties.

PORTA avec 5 lignes notées RA0 à RA4.

PORTB avec 8 lignes notées RB0 à RB7.

Les registres TRISA et TRISB permettent de configurer le sens des broches.

Chaque ligne peut être configurée soit en entrée soit en sortie indépendamment

des autres broches.

Structure interne des broches RA0 à RA3

Structure interne de la broche RA4

Page 50: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 50

La broche RA4 à la particularité d’être de type « drain ouvert ». Une résistance

du rappel doit être branchée entre la broche et VDD en cas d’utilisation en

sortie.

Structure interne des broches RB0 à RB3

Une résistance PULL-UP peut être activée ou désactivée. (voir TP gestion des

boutons poussoirs).

Page 51: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 51

La broche RB0 peut être configurée pour déclencher une interruption.

Structure interne des broches RB4 à RB7

Une résistance PULL-UP peut être activée ou désactivée. (idem que RB0 à RB3).

Un changement d’état sur une des 4 broches peut déclencher une interruption.

(Voir TD/TP clavier).

8. Le module TIMER0

C’est un compteur 8 bits :

Il s’incrémente soit par une horloge interne (fosc/4) soit par une horloge

externe appliquée sur la broche RA4 du PORTA. Le choix se fait par le bit TOSC

du registre OPTION_REG.

Dans le cas de la source externe on peut choisir le sens du front qui fait

incrémenter le compteur.

Page 52: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 52

Un pré diviseur ( prescaler) peut être inséré avant le timer0. La valeur de la pré

division est configurée par les bits PS2…PS0 du registre OPTION_REG.

Lorsque le compteur déborde (passage de la valeur de 0xFF à 0x00) le bit

drapeau TOIF est mis à 1 et une interruption est déclenchée s’elle est

autorisée. (Voir TP)

9. La mémoire de données EEPROM

L’accès à cette mémoire se fait à l’aide des registres suivant.

EEADR contient l’adresse de la case à lire ou à y écrire.

EEDATA contient la donnée lue ou écrite.

EECON1 contrôle de l’écriture ou de lecture.

EECON2 (non implémenté physiquement)

L’écriture dans une case de l’EEPROM n’étant pas rapide, le PIC16F84A peut

être configurée pour déclencher une interruption à la fin de l’écriture dans une

case mémoire.

Page 53: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 53

Le PIC 16F87XA

Voir le fichier de référence Microchip : \PIC16F87XA microchip

Pour les résumés en français : voir l’un des fichiers :

\PIC16F876-877 resume1 français

\PIC16F876-877 resume2 français

\PIC16F87X resume3 français

Pour une documentation complète en française : voir le dossier de BIGONOFF

\BIGONOFF_PIC16F87XA

Page 54: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 54

1. Aspect externe.

Il existent sous d’autres formes de boitiers PLCC , TQFP, QFN ,PDIP…..

Page 55: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 55

2. caractéristiques

Ces types de microcontrôleurs utilisent une UAL identique à celle du PIC16F84A

avec un jeu d’instructions de 35 instructions, mais avec plus de fonctionnalités.

Les principales caractéristiques sont :

une mémoire programme de type EEPROM flash jusqu’à 8K mots de 14 bits.

Une RAM de données jusqu’à 368 octets.

Une mémoire EEPROM jusqu’à 256 octets.

Ports d’entrées sorties A, B , C , D et E.

Convertisseur analogique numérique 10 bits jusqu’à 8 canaux.

Port série USART avec mode asynchrone (RS232) ou synchrone.

Port série synchrone SSP supportant la norme I2C.

Trois TIMERS programmables.

Deux modules de comparaison et de capture CCP1 et CCP2.

Un chien de garde.

Jusqu’à 15 sources d’interruptions.

Programmation par mode ICSP (in circuit serial programming).

Possibilité d’accéder à la mémoire programme par le programme.

Jeux d’instructions de 35 instructions.

Horloge jusqu’à 20 Mhz.

Page 56: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 56

3. Structure interne.

PIC16F873A / 876A

Page 57: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 57

PIC16F877A / 874A

Seul le PIC16F877A sera traité par la suite du cours.

Page 58: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 58

4. Organisation de la mémoire programme du PIC16F877A

La cartographie de la mémoire programme est linéaire, les adresses vont de

0000h à 1FFFh (8K mots de 14 bits), avec un seul vecteur d’interruption 0004h

et une pile de 8 niveaux.

Le jeu d’instruction est le même que celui étudié pour le PIC16F84A.

Page 59: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 59

5. Organisation de la mémoire RAM

La sélection d’une zone Bank se fait par les bits RP1 :RP0 du registre STATUS

Page 60: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 60

6. Les registres Spéciaux

Se sont des registres utilisés par l’unité centrale et les modules périphériques

pour le contrôle des opérations. Ils sont implantés dans la RAM statique.

Pour les détails de chaque registre voir la documentation de référence de

microchip.

Page 61: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 61

Les registres spéciaux (suite)

Page 62: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 62

7. Les ports du PIC16F877A

Le PIC16F877A possède 5 ports :

PPORTA : 6 broches RA0 à RA5

PPORTB : 8 broches RB0 à RB7

PPORTC : 8 broches RC0 à RC7

PPORTD : 8 broches RD0 à RD7

PPORTE : 3 broches RE0 à RE2

La figure ci-dessous montre que certaines broches possèdent des fonctions

multiples.

Le port A

Les 5 broches peuvent être configurées en E/S simples ou bien servir comme :

Entrée du TIMER0 (RA4).

Entrées analogiques (RA0, RA1, RA2,RA3, RA5).

Entrées de références pour le convertisseur analogique numérique

(RA2,RA3).

Sorties des comparateurs RA4/C1OUT et RA5/C2OUT

Il faut noter que RA4 est à drain ouvert.

Page 63: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 63

Le Port B

Dispose de 8 broches utilisées en entrées sorties simples ou servir comme suit :

RB3/PGM, RB6/PGC , RB7/PGD programmation ICS/ICD.

RB0 entrée d’interruption matérielle.

RB4 à RB7 entrées d’interruption sur changement d’état.

Page 64: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 64

Le port C

Possède 8 broches d’entrées sorties simples qu’il partage avec :

Le TIMER1

La liaison SPI/I2C

L’USART

Le module de capture.

Le port D et E

Les deux ports utilisent la même structure.

Le port parallèle D est un port de communication parallèle, il est complètement

piloté par le port E :

Page 65: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 65

Page 66: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 66

8. Le port de communication série MSSP (Master Synchronous Serial

Port)

Permet d’échanger les données en mode série synchrone avec d’autres

équipements comme les mémoires EEPROM séries, les convertisseurs A/N série,

les capteurs, l’horloge en temps réel, les modules d’affichage….

Il peut fonctionner en deux modes :

Mode SPI (Serial Peripheral Interface)

Mode I2C (Inter Integrated circuit).

.8.1. Mode SPI

Le port de communication de type SPI utilise:

Une entrée de données série (SDI Serial Data Input) : broche RC4

Une sortie de données série (SDO Serial Data Output) : broche RC5

Une entrée sortie horloge (SCK Serial ClocK) : broche RC3

Une entrée optionnelle de sélection du microcontrôleur en cas de plusieurs

esclaves (SS Slave Select) : broche RA5.

On donne ci-dessous l’exemple de la réception de l’octet 1001 1010. La

synchronisation et les niveaux varient d’un circuit à l’autre.

Page 67: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 67

On donne ci-dessous le schéma bloc du module MSSP du PIC16F877A

L’octet à transmettre est écrit dans le registre SSPBUF, cette donnée est

recopiée automatiquement dans le registre SSPSR (registre de sérialisation non

accessible au programmeur) dès que celui-ci est disponible.

La sérialisation commence par la sortie du bit 7 sur la ligne SDO et le décalage

de tous les bits. Le bit 0 peut alors recevoir un bit depuis la ligne SDI en même

temps que la sortie du bit7. Le mécanisme se poursuit jusqu’à ce que les 8 bits de

l’octet soient transmis et un octet est alors reçu dans le registre SSPSR, puis

Page 68: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 68

celui-ci est copié automatiquement dans le registre SSPBUF accessible au

programmeur.

Il est évident que du coté récepteur c’est le même processus qui se déroule.

Remarque :

Toute émission s’accompagne automatiquement d’une réception, et

réciproquement toute réception nécessite une émission. L’octet non

nécessaire (reçu ou émis) est sans signification est appelé « dummy ».

La broche SDO conserve l’état qu’elle avait lors de la dernière émission.

Mode SPI Master : C’est le maitre qui envoie le signal d’horloge et c’est lui

qui décide de l’instant de la transmission.

Si l’on désire un transfert unidirectionnel mais en utilisant une seule ligne,

il faut alors connecter SDI à SDO et de placer SDO en haute impédance

lors de la réception d’un octet pour ne pas influencer la ligne lors de la

réception.

En cas d’un maitre connecté à plusieurs esclaves, il faut procéder à la

sélection de l’esclave. Ceci est possible par l’utilisation de simples broches

configurées en sorties.

Page 69: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 69

Registres associés au module SPI

SSPSAT en mode SPI master.

b7 : SMP (0= milieu 1 =fin). Ce bit détermine à quel moment du cycle

d’horloge il faut effectuer la capture du bit présent sur la ligne SDI.

b6 :CKE clock edge select (0 repos vers actif, 1 actif vers repos). Determine

la transition de l’horloge qui place le bit sur la ligne SDO.

b0 :Buffer Full ( 0= registre buffer vide, 1= registre buffer plein sgnifi

octet reçu). Ce bit est à lecture seule , pour l’effacer il faut lire le registre

SSPBUF.

SSPCON1 en mode SPI master.

Page 70: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 70

b5 :SSPEN SSP Enable ( 1= module SSP en service : broches SDI SDO

SCK déconnectées du port C cependant il faut configurer la direction des

broches par le registre TRISC).

b4 :CKP Clock Polarty (donne le niveau de l’état de repos : 0= niveau

bas 1= niveau haut).

b2 :SSPM3 SSP mode bit 3

b2 :SSPM3 SSP mode bit 2

b1 :SSPM3 SSP mode bit 1

b0 :SSPM3 SSP mode bit 0

Les bits drapeaux :

Bit SSPIF du registre PIRB est mis à 1 dès que l’échange d’informations

est terminé. Il est aussi possible de configurer une interruption dans ce cas.

Bit BF du registre SSPSAT est mis à 1 dès qu’une donnée est reçue est

inscrite dans le registre SSPBUF. Ce bit est effacé par lecture de SSPSAT.

Mode SLAVE

Registre SSPSTAT en mode SPI Slave.

b7 doit être positionné à 1 (lecture en milieu du cycle).

b6 CKE CKE clock edge select (0 repos vers actif, 1 actif vers repos).

b0 drapeau buffer plein.

Si le registre SSPBUF est plein et n’est pas lu, la prochaine réception d’un octet

donne une erreur « overflow » l’octet ne sera pas alors transféré dans SSPBUF.

Il sera donc perdu. En mode Slave il faut lire chaque octet reçu pour ne pas

arrêter la réception.

Registre SSPCON en mode SPI Slave.

Page 71: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 71

b7 WCOL Write COlision detect bit ( indique qu’il ya écriture dans le

registre SSPBUF alors qu’un octet est en cours de transmission)

b6 SSPOV SSP receive overflow indicator bit (1= perte de l’octet recu)

b5 SSPEN SSPEnable (1 module SSP en service)

b4 CKP Clock polarity select bit (donne le niveau de l’état de repos).

b3 SSPM3 SSPmode bit 3

b2 SSPM2 SSPmode bit 2

b1 SSPM1 SSPmode bit 1

b0 SSPM0 SSPmode bit 0

Les bits SSPmode donnent le mode de fonctionnement. Ici plus question de

vitesse de transmission puisque celle-ci est déterminée par le maitre.

Page 72: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 72

Synthèse :

Initialisation du mode SPI Master.

On initialise le bit SMP (moment de capture de la donnée : milieu ou fin du cycle). On in initialise le bit CKP en fonction de l’état de repos de ligne d’horloge (polarité). On sélectionne le bit CKE selon le front d’horloge souhaité pour l’écriture d’un bit sur

SDO.

On choisit la vitesse de l’horloge suivant SSPMX

On met le module en service par le bit SSPEN.

On configure SCK et SDO en sortie et SDI en entrée (registre TRISC)

Le démarrage de l’émission et la réception simultanée commence par l’écriture d’un octet

dans le registre SSPBUF.

La fin de l’émission (et donc de la réception) est signalée par le bit drapeau BF.

Initialisation du mode SPI SALVE.

On in initialise le bit CKP en fonction de l’état de repos de ligne d’horloge (polarité). On sélectionne le bit CKE selon le front d’horloge souhaité pour l’écriture par le maitre

d’un bit sur SDI.

On choisi la misse en service ou non de SS via SSPMX.

On met le module en service par le bit SSPEN.

On configure SDO en sortie et SDI et SCK en entrée (registre TRISC)

On configure SS (RA) en entrée via TRISA et ADCON1.

Le démarrage de transfert commence lors de la première transition de SCK (si CKE=0) ou

lors du front descendant de SS (si CKE=1).

La fin du transfert est signalée par le bit BF ou en gérant le bit drapeau SSPIF si

l’interruption est autorisée.

Page 73: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 73

.8.2. Mode I2C (Inter Integrated Circuit)

L bus I2C permet de relier plusieurs équipements et de leur offrir le pouvoir

d’échanger des informations en mode série synchrone. Ses principales

caractéristiques sont :

Communication bidirectionnelle sur 2 lignes (SDA et SCL) + masse.

Une adresse unique pour chaque équipement.

Bus multi-maitre avec détection des collisions et arbitrage.

Echange de données sur 8 bits à 100 Kbps, 400 Kbps et 3.2Mbps.

Filtrage intégré : réjection des parasites.

Avant de traiter la technique de communication sur le bus I2C, il est important

de montrer le principe des sorties à collecteur ouvert (ou drain ouvert)

permettant de relier plusieurs sorties qui communiquent sur une même ligne.

La figure ci-dessous montre l’exemple de 3 équipements reliés sur le même bus.

3 fils sont nécessaires pour la communication.

Page 74: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 74

SDA signal de données.

SCL signal d’horloge.

GND ou VSS

Pendant une communication, l’un des circuits est un maitre. C’est lui qui gère

l’horloge et contrôle les séquences de la transmission. L’autre est l’esclave, il

subit l’horloge du maitre mais il peut émettre ou recevoir des données sur la

ligne SDA.

Chaque esclave possède une adresse.

Le maitre initie la communication par l’envoi de l’adresse de l’esclave avec qui il

veut communiquer, celui-ci reconnait son adresse et répond, les autres restent

muets.

Pour prendre le contrôle du bus, il faut que celui-ci soit libre (SDA et SCL= 1).

Lorsqu’un circuit prend le contrôle du bus il en devient le maitre. C’est lui qui

gère le signal d’horloge et c’est lui qui initie l’échange des données.

Voici ci-dessous comment s’effectue l’échange.

START condition

SDA passe à 0 tandis que SCL est encore à 1

Transmission d’un bit

On place le bit à transmettre sur la ligne SDA, ensuite on envoie une impulsion

d’horloge sur la ligne SCK (SCL). C’est cette impulsion qui informe le slave qu’il

doit lire la donnée sur SDA.

Page 75: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 75

Stop condition

A la fin d’une séquence d’échange, le master génère un stop condition après

lequel le bus devient libre. Pour cela à partir de l’état SDA=0 et SCK=0 le master

commence par placer SCL à 1 et place ensuite SDA à 1.

NB :

Une séquence de transmission peut contenir plusieurs Start conditions avant de

rencontrer un stop condition synonyme de fin de transmission.

L’acknowledge

C’est un accusé de réception. Il est placé sur la ligne SDA par le circuit qui

recroit juste après la réception du 8ème bit. C’est l’émetteur qui le lit.

En conclusion : voici la trame d’échange d’un octet. Ceci nécessite 9 bits.

Page 76: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 76

Puisque on peut brancher plusieurs composants sur le bus I2C, il est utile de

définir une adresse pour chacun. Le master démarre une séquence d’échange en

envoyant les bits qui composent l’adresse (7bit , le standard supporte 10bits)

suivis d’un bit R/W qui indique au slave le mode émission ou réception.

Adresses

Plusieurs composants peuvent être connectés sur le même bus, l’adressage du

destinataire du message est réalisé par logiciel. Seul l’esclave ayant l’adresse

celle envoyée par le maitre va répondre.

La première norme I2C limitait la taille des dresses à 7 bits. Actuellement on

peut étendre l’adresse sur 10 bits.

Certaines adresses sont réservées pour des commandes spécifiques.

B’0000 0000’ adressage simultané de tous les périphériques.

B’0000 0001’ accès aux composants CBUS (ancêtre de I2C).

B’0000 0010’ réservée pour d’autres systèmes de bus.

B’0000 0011’ réservée pour utilisation futur.

B’0000 01xx’ pour les composants de haute vitesse.

B’1111 11xx’ réservée pour utilisation future.

B’1111 1xy0’ permet de préciser une adresse sur 10 bits. les bits xy vont

représenter les deux bits du poids fort associés avec un octet reçu pour

former 10 bits.

Page 77: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 77

Structure d’une Trame

Une transmission commence par un Start Condition (S).

Ensuite l’adresse sur 7 bits complétée par un bit R/W ou 10 bits (R /W doit

être 0 dans ce cas).

chaque octet envoyé est accompagné d’un accusé de réception (ACK).

Trame avec une adresse sur 7 bits.

Trame avec une adresse sur 10 bits.

Chronogrammes dans le cas de 10 bits.

Le bit R/W est 0 (écriture) puisque l’esclave doit lire le deuxième octet.

Pour lire, le maitre doit envoyer un « repeat start » condition puis envoyer le

premier octet d’adresse mais avec R/W=1.

Page 78: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 78

Page 79: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 79

En résumé :

Écriture avec adresse sur 7 bits

le maitre envoie le start condition S.

le maitre envoie l’octet de l’adresse avec R/W à0 (écriture)

l’esclave réponde par ACK.

Le maitre envoie le premier octet de la donnée.

L’esclave répond par ACK

…..

Le maitre envoi le dernier octet de la donnée.

L’esclave répond par ACK ou par NOACK.

Le maitre envoie le stop condition.

Remarque : l’esclave peut envoyer un NOACK pour signaler d’arrêter l’envoi des données (mémoire

pleine ou erreurs.).

Lecture

Le maitre envoie le start condition.

Le maitre envoie le premier octet de l’adresse.

L’esclave réponde par ACK.

L’esclave envoie le premier octet de la donnée.

Le maitre répond par ACK.

….

L’esclave envoi le Nème octet de la donnée.

Le maitre envoie NOACK pour signaler la fin du transfert. ( noter que c’est le maitre qui

décide de maitre fin à la réception)

Le maitre envie un stop condition.

Page 80: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 80

Le module MSSP en mode I2C du PIC16F877A

Horloge SCL broche RC3/SCK/SCL à configurer en entrée.

Donnée SDA broche RC4/SDI/SDA à configurer en entrée.

Le module permet de :

Gérer le mode esclave, maitre et multi maitre.

Générer et détecter le start et le stop condition.

Générer et reconnaitre les signaux ACK.

Générer NOACK en cas de problème logiciel.

De gérer le mode d’adressage sur 7 bits ou 10 bits.

D’utiliser toutes les vitesses de transfert compatibles.

Rôle des registres :

SSPSR registre à décalage transmission / réception.

SSPBUF registre tampon pour l’écriture de la donnée à envoyer ou la lecture

de la donnée reçue.

Page 81: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 81

SSPSTAT.

Bit SMP : filtre activé ou non (0 activé)

Bit CKE : 0 pour niveaux d’entrées compatibles avec I2C.

Bit D_A : indique si le dernier octet reçu ou transmis est une donnée (1) ou une adresse

(0).

Bit P : indicateur dernier événement détecté est un stop condition (1).

Bit S : indicateur dernier événement détecté est un start condition

Bit R_W :En I2C maitre ce bit indique si un transfert est en cours (1). En I2C

esclave il indique l’état du bit R/W du premier octet qui suit le start condition.

Bit UA : indicateur utilisé uniquement par l’esclave sur adresse 10 bits. Prévient quand il

faut mettre l’adresse à jour en mode I2C.

Bit BF : indicateur registre SSPBUF plein (1) en réception. Sert aussi comme indicateur

pour l’état de la transmission.

SSPCON

SSPADD

Possède deux fonctions selon le mode maitre ou esclave

Page 82: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 82

En mode esclave c’est le registre qui contient l’dresse du PIC. Si l’adresse utilise

10 bits, alors il faut placer les 2 bits du poids for dans SSPAD, le bit UA du

registre SSPSTAT vous prévient de placer les bits du poids faible pour

compléter l’adresse.

En mode maitre, ce registre permet de déterminer la valeur de la fréquence

d’horloge.

SSPCON2

Page 83: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 83

Synthèse.

Séquence Mode MSSP en mode I2C maitre

Configurer le module MSSP.

Envoyer un Start condition.

Envoyer l’adresse de l’eclave concerné avec b0=0 (écriture).

Envoyer la donnée à écrire.

Envoyer repeated start condition (SR).

Envoyer l’adresse de l’esclave concernée avec b0= 1 (lecture).

Lancer la lecture.

Envoyer un NOACAK pour fin de reception.

Envoyer un stop condiion.

MSSP en mode I2C esclave 7 bits (SSPMx = 0110)

Séquence de réception d’une adresse :

Placer l’adresse de l’esclave dans le registre SSPADD. Le bit b0 à 0. Le

module du PIC surveille alors la ligne.

Si l’adresse émise par le maitre n’est pas celle de l’esclave, il n’y aura aucune

réaction de l’esclave. Si l’adresse est celle de l’esclave alors on les

événements suivants :

L’adresse sera transmise dans le registre SSPBUF.

Le bit BF est positionné pour indiquer que le buffer est plein.

Le bit SSPIF est aussi positionné et une interruption est possible.

Le bit D_A du registre SSPSTAT est mis à 0 (adresse présente).

Le bit R_W sera mis à 0 (écruiture).

L’accusé de réception ACK est généré.

Il faut alors lire SSPBUF (même si ce n’est pas utile). Si non la prochaine donnée

ne sera pas traitée.

Séquence de réception d’une donnée

La réception d’un octet de donnée est similaire à la réception d’un octet

d’adresse. La seule différence est au niveau du bit D_A (positionné pour

indiquer que l’octet est une donnée).

Page 84: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 84

Réception d’adresse en mode lecture

L’esclave reçoit un repeat start condition après l’adresse mais avec R/W

=1.

L’adresse sera transférée dans SSPBUF avec R/W =1.

Le bit SSPIF sera positionné et une interruption aura lieu.

Le bit D_A du registre SSPSTAT est mis à 0 (adresse présente).

Le bit R_W est mis à 1.

L’accusé de réception ACK est généré.

Emission d’un octet

Une fois l’esclave détecte que le maitre avait besoin d’une donnée, il met

automatiquement le bit CKP à 0. Ceci place la ligne SCL à 0 et donc génère une

pause le temps nécessaire à écrire la donnée dans SSPBUF. Le bit CKP doit être

placé à 1 pour libérer la ligne SCL et permettre au maitre de recevoir la donée.

Le bit BF est positionné après écriture dans SSPBUF et remis à 0 une fois

l’octet est totalement transmis.

MSSP en mode I2C esclave 10 bits

Écriture

L’esclave Reçoit le bit start condition.

Puis reçoit le premier octet d’adresse avec R/W=0.

Génère ACK.

Reçoit le second octet d’adresse.

Génère ACK.

Reçoit le premier octet.

…….

Lecture :

L’esclave Reçoit le bit start condition.

Puis reçoit le premier octet d’adresse avec R/W=0.

Génère ACK.

Reçoit le second octet d’adresse.

Génère ACK.

Reçoit le repeated start condition.

Page 85: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 85

Reçoit le premier octet d’adresse avec R/W =1.

Génère ACK.

Envoie le premier octet demandé.

…..

Page 86: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 86

9. Le port de communication série asynchrone USART

Une liaison série permet de faire dialoguer 2 équipements en sérialisant les bits

des données.

La trame d’une émission en mode série asynchrone est donnée ci-dessous :

La trame est composée de :

1 bit START.

5 à 8 bits DATA (donnée), poids faible en tête.

1 bit de vérification de parité qui permet de détecter les erreurs de

transmission sur la ligne.

Un , un et demi, ou 2 bits STOP (T, (3/2)T, ou 2T)

Lorsqu’il n’ya pas de transmission sur la ligne celle-ci est à l’état haut.

La vitesse de communication (en baud) doit être la même pour les deux

machines. (En mode asynchrone, chaque machine dispose de son générateur de

vitesse de communication. Il est donc impossible d’avoir les mêmes valeurs de

fréquence. Le programmeur doit veiller à ce que l’écart n’influence pas des

erreurs de transmission)

La norme RS232 utilise des signaux en +/- 12v pour la transmission

(+12V=niveau logique "0" et - 12V= niveau logique "1"). Elle peut exploiter des

lignes supplémentaires pour le contrôle de la transmission.

Le module USART du PIC16F877A dispose des fonctionnalités suivantes :

Fonctionnement en FULL DUPLEX (émission et réception des données en

même temps).

Page 87: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 87

Communication compatible avec la norme RS232 moyennement une adaptation

des niveaux. Il est commode d'utiliser le circuit MAX232 pour effectuer la

translation des niveaux de la logique (0/+5V) vers la transmission (+12V/-12V)

si l’on désire faire communiquer un microcontrôleur avec un équipement qui

dispose d’un port RS232.

La communication se fait sur la broche RC6/TX (transmission) et la broches

RC7/RX (réception). Les deux broches doivent êtres configurées en entrées

(oui en entrées).

La vitesse de communication est fixée par le registre SPBRG et le bit

TXSTA.BRGH.

La parité n’est pas gérée d’une façon matérielle. En cas de besoin elle doit

être gérée par logiciel.

La configuration et le contrôle de la communication se fait par les registres

TXSTA et RCSTA.

L’accès au port en lecture se fait par le registre RCREG, l’écriture se fait

par le registre TXREG.

.9.1. Transmission d’un caractère de 8 bits

Séquence d’émission d’un caractère.

Configurer la broche TX/RC6 en entrée.

Configurer le registre TXSTA (exemple mode 8 bits, valider mode

asynchrone BRGH)

Initialiser le registre SPBRG pour définir la vitesse de transmission.

Configurer l’interruption (validée ou masquée : TXIE).

Valider le port avec le bit RCSTA.SPEN

Page 88: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 88

(*) Vérifier que le registre de transmission est vide (par interruption si

validée si non il faut tester le bit drapeau PIR1.TXIF).

Placer la donnée à transmettre dans le registre TXREG. La donnée est alors

placée automatiquement dans le registre à décalage dès que celui-ci est libre

puis les bits sont sérialisés.

Recommencer depuis (*) tant qu’on a des données à transmettre.

.9.2. Réception d’un caractère de 8 bits

Séquence de réception d’un caractère

Configurer la broche RX/RC7 en entrée.

Configurer le registre SPBRG pour définir la vitesse de transmission.

Masquer ou valider l’interruption.

Configurer le mode asynchrone (bit BRGH du registre TXSTA).

Configurer le registre RCSTA (validation du port, mode 8 bits, validation de

réception en continu).

(*)Attendre l’interruption ou tester le drapeau RCIF qui passe à 1 pour

annoncer la fin de la réception d’un octet.

Lire la donnée reçue dans le registre RCREG.

Recommencer à partir de (*).

Page 89: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 89

10. Les modules TIMER.

TIMER0

Le TimerO est identique à celui du PIC16F84A, c’est un compteur 8 bits

d’impulsions externes (broche RA4) ou internes (base du temps interne fosc/4)

avec pré division par 2, 4, 8 ,…. , 256.

Le timer0 peur être configuré pour générer une interruption lorsque sa valeur

déborde.

Le s registres associés au timerO sont :

OPTION_REG

INTCON bit <2 à 5>

TIMERO

Page 90: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 90

TIMER1

C’est un compteur de 16 bits qui fonctionne sur le même principe que celui du

TIMER0. Les 16 bits sont ceux des registres TMR1H :TMR1L

Le bit TMR1ON active ou désactive le timer1.

Le bit TMR1CS sélectionne la source d’horloge (0 interne 1 externe RC0)

Le bit /T1SYNC permet de choisir si l’horloge du timer1 est synchronisée

ou non sur l’horloge de microcontrôleur.

Les bits T1CKPS1 :T1CKPS0 permettent de choisir la valeur de

présélection du signal d’horloge. 4 valeurs sont possibles.

Le bit TMR1IF est un bit d’état qui passe de 0 à 1 lorsque le timer1

passe de FFFF à OOOO. Ce bit doit être remis à 0 par logiciel.

Page 91: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 91

TIMER2

C’est un compteur 8 bits, l’horloge est interne (fosc/4), celle-ci peut être pré

divisée ou nom. Les bits T2CKPS1 :T2CKPS0 permettent de choisir la valeur de

la prévision (1 ,4 ,16).

Le registre du TIMR2 est comparé au registre PR2. Si ces deux registres sont

égaux alors une impulsion d’horloge est générée (TMR2 output) et le contenu du

timer2 est remis à 00h. Le signal généré peut être pré-divisé par le

« postscaler ». les valeurs de division sont 1 ,2 , 3, ,,, 16

Page 92: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 92

11. Le module CCP1 et CCP2 (capture / compare /PWM)

Ces deux modules peuvent fonctionner dans l’un des trois modes suivants :

Mode capture : sert pour la mesure du temps.

Mode comparaison : sert pour générer des événements périodiques.

Mode PWM : sert pour générer des signaux à largeur d’impulsion modulée.

Ces modules sont associés aux broches RC2/CCP1 et RC1/T1OSI/CCP2.

Les modules CCP1 et CCP2 utilisent le timer 1. Les modes capture et comparaison

utilisent le timer1, le mode PWM utilise le timer2.

Le mode capture (Timer1)

Ce mode permet de mémoriser la valeur de timer1 dans les registres

CPP1RH :CPP1RL ou CPP2RH :CPP2RL quand un événement se produit sur l’une des

broches CCP1 ou CCP2.

Le transfert peut avoir lieu :

A chaque front montant.

A chaque front descendant.

Tous les 4 fronts montants.

Tous les 16 fronts montants.

Page 93: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 93

Registres CCP1CON et CCP2CON (x=1 ou 2)

A la fin de la capture, le bit drapeau CCPx1F est positionné, une interruption est

déclenchée si elle a été validée.

Remarques:

Pour déclencher la capture par un signal externe, il faut configurer la broche

RCx associée en entrée.

La capture peut être déclenchée par programme, dans ce cas il faut

configurer RCx en sortie pour pouvoir modifier l’état par programmation.

Avant de modifier le mode capture il faut masquer l’interruption CCPxI pour

éviter une interruption indésirable.

Page 94: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 94

Le mode comparaison

Ce mode permet de comparer en permanence le registre CCPR1 au TMR1. Quand

il ya égalité le drapeau CCPxIF est mis à 1 et différentes actions sont accomplies

selon le mode défini par les bits CCPxM3 : CCPxM0

Page 95: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 95

Le mode PWM

Il s’agit de générer un signal carré de fréquence fixe et du rapport cyclique

variable.

Page 96: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 96

Supposons CCP vaut 0 et Le TIMER2 compte.

TMR2 arrive à la valeur PR2.

Au cycle suivant, TMR2 passe à 0 et l’état de CCPx passe à 1.

En même temps, la valeur programmée comme consigne est copiée dans le

registre final de comparaison.

(TMR2 + 2 bits) arrive à la valeur de la seconde consigne (8bits+ 2 bits) ,

CCPx passe à 0.

Tmr2 arrive à la valeur PR2 et au cycle suivant TMR2 passe de nouveau à 0 et

CCPx passe à 1 et le cycle continu.

Page 97: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 97

12. Le convertisseur analogique numérique

Le PIC16F877A dispose de 8 entrées analogiques multiplexées vers un seul

convertisseur analogique numérique à approximations successives de résolution

10 bits.

Registre ADCON1

Permet la configuration du module convertisseur analogique numérique.

Le type du résultat.

Horloge du convertisseur.

La configuration des broches.

Page 98: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 98

Le bit ADFM permet de choisir entre deux types de justification pour le

résultat.

Page 99: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 99

Le registre ADCON0

Ce registre permet de définir l’horloge de conversion, de choisir le canal à

convertir et de placer le convertisseur en fonctionnement.

Page 100: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 100

Pour convertir une voie analogique il faut suivre les étapes suivantes :

Configurer les broches d’entrées analogiques et la référence de la tension

analogique. (ADCON1)

Sélectionner le canal à convertir (ADCON0)

Sélectionner l’horloge de conversion (ADCON0 et ADCON1)

Activer le module de conversion (ADCON0).

Configurer l’interruption (si désirée) mettre ADIF=0,ADIE =1 =PEIE =GIE

Attendre la stabilité du signal.

Démarrer la conversion par la mise à 1 du bit GO:/DONE du registre

ADCON0.

Page 101: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 101

Attendre la fin de la conversion (par la technique du Polling par test du statut

GO:/DONE=0 ou bien présence de l’interruption).

Lire la valeur du résultat de la conversion dans les registres

ADRESH :ADRESL.

Pour la prochaine conversion il faut reprendre les mêmes étapes.

Page 102: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 102

13. Le comparateur de tension

Le module comparateur contient deux comparateurs analogiques indépendants.

Les entrées des comparateurs sont multiplexées.

8 possibilités d’utilisation.

Les registres associés aux comparateurs sont donnés ci-dessous :

Page 103: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 103

Page 104: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 104

Le PIC 18FXX

1. Exemple de circuits : caractéristiques

Les PIC18FXXX sont des microcontrôleurs 8 bits de la famille microchip avec

des instructions codées sur 16 bits.

Pour les PIC16FXX, une instruction est codée sur 14 bits et mémorisée en une

seule adresse mémoire de largeur 14 bits. Au contraire pour les PIC18FXX, une

instruction est codée sur 16 bits et mémorisée sur deux emplacements mémoires

de 8bits chacun (2 adresses).

Une instruction se trouve à l’adresse paire avec le poids fort à l’adresse impaire.

Page 105: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 105

Les principales caractéristiques sont :

Plus de 10 modes d’oscillateurs

7 modes de gestion de l’alimentation.

Présence d’un circuit de multiplication de 8 bits x8 bits.

Plusieurs sources d’interruptions.

Chaque port des entrées sorties possède 3 registres TRISX PORTX et LATx

Page 106: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 106

2. Exemple de structure interne

Page 107: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 107

Page 108: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 108

3. Organisation de la mémoire programme

L’intégrité de la mémoire programme est accessible sans gérer les modifications

du registre PCLATH comme dans le cas des PIC16F

Instructions de sauts

Une instruction du saut possède trois formes :

Saut absolu.

Exemple : goto destination

L’instruction goto est codée sur 16bits, la destination est codée sur 16

bits.

Saut relatif long.

Exemple : bra distance

Page 109: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 109

On donne la distance du saut par rapport à l’emplacement de l’instruction

suivante (instruction située immédiatement après bra).

La distance est exprimée sur 11 bits et codée en complément à 2. Les valeurs

limites de la distance est donc -1024 et +1023

(L’adresse de destination = l’adresse courante +2 + 2*distance)

Saut relatif court.

Un saut relatif court utilise une destination relative codée sur 8 bits. Ceci

permet un déplacement de -128 à 127.

Le registre de travail WREG

Il s’agit du registre de travail (comme W pour les PIC16FXX) à la différence que

WREG est maintenant accessible comme tous les registres FSR c’est-à-dire on

peut effectuer des opérations directement sur ce registre (décalage rotation ..).

Page 110: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 110

4. Organisation de la mémoire de données :

La mémoire de données et divisée en 15 banques. Mais les instructions du

PIC18FXXX permettent d’écrire des programmes sans changement de banques

comme dans le cas des PIC16FXX.

Page 111: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 111

5. Les registres spéciaux de configuration

Page 112: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 112

6. Les modes d’adressage

Adressage immédiat (litéral) : la valeur de l’opérande est fournie

directement après l’instruction.

Exemple : movlw 0X55

Adressage direct de type banked

C’est le même adressage utilisé par les PIC16FXX. Il faut passer d’un bank à un

autre par la modification de certains bits (statut pour pic16xx).

Page 113: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 113

La syntaxe pour le PIC18FXX est un peu différente. On ajoute directement une

valeur ‘banked’ à l’instruction. Cette valeur va sélectionner la banque.

Exemple : movf varaible,w, banked

Adressage direct en access bank

Movf variable,w,a

Si a=0 Accès à 96 octets de la ram en bank0 et 160 octets de bank 15.

Si a=1 le registre BSR indique la bank utilisée de l’instruction .

Adressage à accès direct long

Les OIC18FXXX disposent des instructions qui permettent d’accédre à

l’intégrité de l’espace RAM sans avoir besoin de changer de banques. Ces

instructions sont codées sur 32 bits et contiennent l’adresse complète de la

variable de façon explicite.

Adressage indirect simple

L’adressage indirect permet de d’accéder à une adresse pontée par un registre.

Les PIC18FXX disposent de 3 registres d’accès indirect (contre 1 pour

pic16fxx).

Les registres d’indirection sont nommés FSR0, FSR1 ,FSR2 . chaque registre est

en fait composé de 2 octets contenant le poids faible et le poids fort de

l’adresse.

Le PIC18FXXX dispose de plusieurs variantes de l’adressage indirect :

Adressage indirect simple

Adressage indirect post-décrémenté (décrémentation après indirection)

Adressage indirect post-incrémenté (incrémentation après indirection)

Adressage indirect pré-incrémenté (incrémentation avant indirection)

Adressage indirect pré-indexé (un offset en plus de l’indirection).

Page 114: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 114

7. Jeu d’instruction

Le jeu d’instructions de cette famille comporte au moins 75 instructions.

Format générale des instructions

Page 115: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 115

Table des instructions

Page 116: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 116

Page 117: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 117

Page 118: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 118

Chapitre 4. LES MICROCONTROLEURS DE LA FAMILLE ATMEL

Documentation sur les microcontrôleurs ATMEL

Voir les fichiers de référence ATMEL

\Atmel-2549-8-bit-AVR-Microcontroller-ATmega640-1280-1281-2560-

2561_datasheet

\Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-

168A-168PA-328-328P_datasheet_Complete

Pour une documentation en Français voir les fichiers :

\AtMega32_Document bases_Francais_ a exploiter

\AtMega32_Assembleur_francais_ a exploiter

Page 119: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 119

1. Exemple de modèles de microcontrôleurs ATMEL

.1.1. Aspect externe/ exemple atmega 2560

Page 120: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 120

.1.2. Exemple de structure interne

Le cœur des microcontrôleurs AVR est une unité arithmétique riche en jeux

d’instructions (131 instruction). Pour rappel microchip 16F8771 possède 35

instructions.

32 registres spéciaux travaillent en collaboration directe avec l’UAL.

Selon la version, les ports d’E/S sont nommés PORTA, PORTB, PORTC ..…

jusqu’à PORTL.

Page 121: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 121

Dans la suite du cours on va traiter le circuit ATMEGA 2560

Page 122: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 122

2. Plan de la mémoire de l’ATmega2560

La série ATMEGA utilise trois types de mémoires, la mémoire programme

FLASH, la mémoire de données SRAM et la mémoire morte EEPROM.

.3.1. La mémoire programme

Permet de stoker et de faire fonctionner le programme. La capacité dépend du

circuit utilisé.

.3.2. La mémoire morte

De type EEPROM contient la configuration du programme et les données qui

seront sauvées pendant la perte d’alimentation électrique.

.3.3. La mémoire de données

Contient les 32 registres de travail, les 64 registres de commande et la

mémoire SRAM pour les variables du programme.

Page 123: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 123

3. Les registres de travail (accumulateurs)

32 registres du travail (équivalents au registre W de microchip) collaborent avec

l’UAL.

Page 124: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 124

4. Tableau des registres E/S

Page 125: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 125

Page 126: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 126

5. Le jeu d’instructions

Page 127: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 127

Page 128: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 128

Page 129: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 129

Page 130: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 130

6. Les modes d’adressage.

Les instructions de cette famille de microcontrôleurs possèdent plusieurs modes

d’adressage :

Mode adressage direct simple registre (Rd)

L’opérande de l’instruction est le contenu d’un registre Rd. Rd est codé sur 5 bit

donc 32 possibilités.

Mode Accès direct à deux registres : opérateurs (Rr et Rd).

Le résultat est placé dans Rd.

Mode Adressage direct des entrées sorties

Mode Adressage direct des données

K représente une adresse, elle est exprimée sur deux octets. La donnée de

l’opérande est pointée par l’adresse k.

Adressage indirect (X Y Z)

L’adresse de l’opérande est obtenue par le contenu du registre X , Y, Z

Adressage indirect avec déplacement (q)

Page 131: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 131

L’adresse de l’opérande est obtenue par la valeur du registre (X, Y ,Z) + q

Adressage indirect avec pré-décrémentation (-X ,-Y ,-Z)

L’adresse de l’opérande est obtenue par la valeur du registre (X, Y ,Z)

décrémentée de 1. (Décrémentation puis indexation).

Adressage indirect avec post-incrémentation (X ,Y ,Z)

L’adresse de l’opérande est obtenue par la valeur du registre (X, Y ,Z). Le

contenu du registre est automatiquement incrémenté de 1 après l’exécution de

l’instruction.

Adressage de la mémoire programme : instructions LPM, ELPM , SPM

Les 15 bits du poids fort du registre Z forment l’adresse d’une constante

(octet) de la mémoire programme. On note ZLSB le bit du poids faible de Z.

Pour l’instruction LPM : Si le bit ZLSB =0 , l’opérande est l’octet poids faible de

l’adresse . Si ce bit est à 1 alors l’opérande est l’octet du poids fort.

Pour l’instruction SPM : ZLSB doit être à 0.

Si l’instruction ELPM est utilisée alors le registre RAMPZ est utilisé pour

étendre l’adresse composée par Z.

Page 132: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 132

Adressage de la mémoire programme avec post incrémentation : instructions

LPM Z+ ELPMZ+

L’adresse de l’octet constante dans la mémoire est spécifiée par le contenu du

registre Z.

Instruction PLMZ+ : ZLSB permet la sélection de l’octet poids faible (si 0) ou le

poids fort (si 1).

Instruction EPLMZ+ le registre RAMPZ sert pour étendre l’adresse.

Le registre Z est incrémenté par 1 après l’exécution de l’instruction.

Adressage direct de la mémoire programme avec les instructions JMP et

CALL

L’exécution du programme continue à l’adresse spécifiée par la valeur immédiate

composée des 22 bits après le code de l’instruction. Càd la nouvelle valeur du

compteur programme est fourni les 22 bits.

Adressage indirect avec les instructions IJMP et ICALL

Page 133: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 133

La nouvelle valeur dans le compteur programme est fournie par la valeur du

registre Z.

Adressage relatif pour les instructions RJMP et RCALL

La nouvelle valeur du compteur programme PC est PC+ k +1

K étant une valeur comprise entre -2048 et 2047

Les instructions de branchement conditionnelles

Une instruction de branchement conditionnelle permet de faire un saut ou non

selon l’état d’un bit du registre d’état. (voir jeux d’instructions).

Page 134: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 134

7. Les interruptions

Un vecteur d’interruption représente l’adresse de début du programme associé à

cette interruption.

On donne ci-dessous la liste des vecteurs d’interruptions classés par ordre

décroissant d’importance.

Page 135: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 135

Le vecteur RESET possède la priorité la plus grande. Un programme doit

correspondre à une interruption. Si une interruption n’est pas utilisée il faut

alors faire un branchement sur un programme générique qui contient une

instruction RETI.

On montre ci-dessous un exemple de déclaration des vecteurs d’interruptions.

Page 136: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 136

Page 137: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 137

8. Les PORTS d’entrées sorties

Les microcontroleurs ATMEL possèdent des PORTs d’entrées sorties pour

communiquer avec les périphériques. Ces ports sont multifonctionnels et

configurables broches à broches.

Ports en mode E/S numériques (TOR)

Pour contrôler le mode de fonctionnement de chaque broche, 3 registres sont

mis à disposition pour chaque port

DDRx registre de direction (mode entrée sortie.

PORTx registre de données (donnée à lire ou à écrire).

PINx registre d’état (donnée disponible).

X représente le nom du port (A ; B ; C ; ….)

On donne ci-dessous les configurations possibles

Page 138: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 138

Page 139: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 139

9. Le comparateur logique

Permet de comparer les niveaux de tension entre la broche positive AIN0 et la

broche négative AIN1. Lorsque U AIN0 > U AIN1 la sortie du comparateur ACO

passe à 1.

Ce module peut être utilisé pour déclencher la fonction de capture d’entréedu

TIMER / compteur1. Il peut aussi générer une interruption.

L’utilisateur peut choisir le front montant ou descendant de ACO pour

déclencher l’interruption.

L’entrée AIN1 peut être l’une des entrées analogiques de l’ADC.

Le comparateur utilise un registre propre au module ACSR et partage deux

autres registres avec d’autres modules SFIOR et ADMUX.

Page 140: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 140

10. Le convertisseur analogique numérique

Le module de conversion analogique numérique est de type à approximations

successives et de résolution 10 bits.

8 à 16 entrées analogiques (selon le circuit) peuvent êtres multiplexées.

Le convertisseur possède des entrées différentielles normales et des entrées

différentielles avec un gain programmable.

La tension de référence peut être externe ou interne.

A compléter selon le besoin

Page 141: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 141

11. Les TIMERS

.12.1. Le pré diviseur des TIMER0 et TIMER1

Le timer / compteur0 et Le timer / compteur1 partagent le même prédiviseur,

mais le fonctionnement des deux modules est différent.

Page 142: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 142

.12.2. Le TIMER0/ COMPTEUR0 8 bit

Ce module permet d’effectuer le comptage du temps, d’événements et de

générer des signaux.

C’est un compteur 8 bits avec les particularités suivantes :

Remise à zéro du compteur sur comparaison (rechargement automatique).

Générateur de signaux type PWM

Générateur de fréquence.

Compteur d’événements externes.

Horloge à 9 bits avec prédiviseur

Source d’interruption sur débordement ou comparaison.

Page 143: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 143

Le registre compteur TCNT0 est un compteur de 8 bits, incrémenté et comparé

en permanence au registre OCR0. il peut générer des actions sur la sortie OCO

(PB3).

La source d’horloge peut être interne via le prédiviseur ou externe sur la broche

T0 (PB0) ou absente (Timer inactif) si aucune source n’est choisie.

Le registre TCCR0 permet de choisir un mode de fonctionnement parmi 4.

Mode Normal

Ce mode est identique à celui traité pour les PIC.

Mode Timer à remise à zéro sur comparaison (CTC)

Le compteur s’incrémente selon la source d’horloge configurée. Lorsque sa valeur

est égale à la valeur dans le registre OCR0 le compteur est remis à zéro et le

drapeau OCF0 est mis à 1 pour déclencher une interruption.

Page 144: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 144

Mode modulation de largeur d’impulsion rapide PWM R (FAST PWM)

Ce mode permet de produire des impulsions de largeur variable en fonction de la

valeur dans le registre WGM01 :0.

Le bit OC0 (PB3) est mis à 1 au début du comptage puis il est mis à 0 lors de la

comparaison du registre TCTN0 et du registre OCR0.

Pour faire varier la période il suffit de modifier la valeur initiale de compteur

après chaque interruption.

Page 145: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 145

Mode PWM correct (PWMC)

Ce mode utilise le compteur dans les deux sens. Quand la valeur définie dans le

registre OCR0 est atteinte, la sortie OCO est inversée et le compteur repart à

l’envers. Quand il arrive à la vamleur 00 la valeur de OC0 est à nouveau changée.

Les registres associés

Page 146: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 146

.12.3. Le timer1/ compteur1 à 16 bits

Permet le cadencement précis des programmes, la gestion des événements, la

génération des signaux.. 15 modes sont disponibles avec ce module.

Ses principales caractéristiques sont :

Une conception 16 bits

Trois unités de comparaison indépendantes.

trois comparateurs

Page 147: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 147

Une unité de capture à faible bruit.

Comparateur avec remise à zéro automatique.

Générateur de modulation de phase en largeur d’impulsion correct.

Générateur d’onde PWM périodique.

Compteur d’événement externe.

Quatre sources indépendantes d’interruption.

Page 148: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 148

12. L’interface série synchrone SPI

Page 149: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 149

13. L’interface série USART

Page 150: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 150

14. L’interface I2C

Page 151: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 151

Chapitre 5. La carte de développement ARDUINO

1. Introduction

Le système Arduino simplifie la façon de travailler avec les microcontrôleurs,

tout en offrant plusieurs avantages :

Pas cher : les cartes Arduino sont relativement peu coûteuses comparativement

aux autres plateformes.

Multi-plateforme : Le logiciel Arduino, écrit en Java, tourne sous les

systèmes d'exploitation Windows, Macintosh et Linux. La plupart des systèmes à

microcontrôleurs sont limités à Windows.

Un environnement de programmation clair et simple: L'environnement de

programmation Arduino (= le logiciel Arduino) est facile à utiliser pour les

débutants, tout en étant assez flexible pour que les utilisateurs avancés puissent

en tirer profit également.

Logiciel Open Source et extensible : Le logiciel Arduino est publié sous

licence open source, disponible pour être complété par des programmateurs

expérimentés. Le langage peut être aussi étendu à l'aide de librairies C++, et les

personnes qui veulent comprendre les détails techniques peuvent reconstruire le

passage du langage Arduino au langage C pour microcontrôleur AVR sur lequel il

est basé. De la même façon, vous pouvez ajouter du code du langage AVR-C

directement dans vos programmes Arduino.

Matériel Open source et extensible : Les cartes Arduino sont basées sur

les microcontrôleurs Atmel ATMEGA8, ATMEGA168, ATMEGA 328, etc... Les

schémas des modules sont publiés sous une licence Creative Commons, et les

concepteurs de circuits expérimentés peuvent réaliser leur propre version des

cartes Arduino, en les complétant et en les améliorant.

Page 152: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 152

2. Le matériel

Il existe plusieurs versions de cartes Arduino. On donne ci-dessous deux

exemples de cartes.

La carte Arduino UNO : C'est la révision

la plus récente de la carte de base

Arduino USB. Elle se connecte sur

l'ordinateur avec un câble USB standard

et contient tout ce dont vous avez besoin

pour programmer et utiliser la carte. Elle

peut être complétée avec toute une

variété de circuits : des cartes-filles

personnalisées avec des caractéristiques

spécifiques.

La carte Arduino Mega2560 : La version

de la Mega est sortie en même temps que

la carte UNO. Cette version est basée

sur l'ATmega2560 qui dispose de deux

fois plus de mémoire, et utilise également

l'ATMega 8U2 pour la communication

USB-vers-série

Par la suite on va exploiter la carte Arduino Mega2560

Page 153: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 153

Carte Arduino Mega 2560

La carte Arduino Mega 2560 est une carte à microcontrôleur basée sur un

ATmega2560 (voir fiche technique).

Cette carte dispose :

de 54 broches numériques d'entrées/sorties (dont 14 peuvent être utilisées

en sorties PWM (largeur d'impulsion modulée),

de 16 entrées analogiques (qui peuvent également être utilisées en broches

entrées/sorties numériques),

de 4 UART (port série matériel),

d'un quartz 16Mhz,

d'une connexion USB,

d'un connecteur d'alimentation jack,

d'un connecteur ICSP (programmation "in-circuit"),

et d'un bouton de réinitialisation (reset).

D’une mémoire programme flash de 256 KB dont 8KB utilisés par le

bootloader.

D’une mémoire RAM de 8 KB.

D’une mémoire EEPROM de 4 KB.

D’une Horloge de 16 MHZ.

Page 154: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 154

L’alimentation électrique.

Microcontrôleur ATmega2560

Tension de fonctionnement 5V

Tension d'alimentation (recommandée) 7-12V

Tension d'alimentation (limites) 6-20V

Intensité maxi disponible par broche

E/S (5V)

40 mA (ATTENTION : 200mA cumulé

pour l'ensemble des broches E/S)

Intensité maxi disponible pour la sortie

3.3V 50 mA

Intensité maxi disponible pour la sortie

5V

Fonction de l'alimentation utilisée - 500

mA max si port USB utilisé seul

La carte Arduino Mega 2560 peut-être alimentée soit via la connexion USB (qui

fournit 5V jusqu'à 500mA) ou à l'aide d'une alimentation externe. La source

d'alimentation est sélectionnée automatiquement par la carte.

L'alimentation externe (non-USB) peut être soit un adaptateur secteur (pouvant

fournir typiquement de 3V à 12V sous 500mA).

La plage idéale recommandée pour alimenter la carte est entre 7V et 12V.

Les broches d'alimentation sont les suivantes :

VIN. La tension d'entrée positive lorsque la carte Arduino est utilisée avec

une source de tension externe (à distinguer du 5V de la connexion USB ou

autre source 5V régulée). Vous pouvez alimenter la carte à l'aide de cette

broche, ou, si l'alimentation est fournie par le jack d'alimentation, accéder à

la tension d'alimentation sur cette broche.

5V. La tension régulée utilisée pour faire fonctionner le microcontrôleur et

les autres composants de la carte. Le 5V régulé fourni par cette broche peut

provenir soit de la tension d'alimentation VIN via le régulateur de la carte, ou

bien de la connexion USB (qui fournit du 5V régulé) ou de tout autre source

d'alimentation régulée.

3V3. Une alimentation de 3.3V fournie par le circuit intégré FTDI (circuit

intégré faisant l'adaptation du signal entre le port USB de votre ordinateur

et le port série de l'ATmega) de la carte est disponible : ceci est intéressant

pour certains circuits externes nécessitant cette tension au lieu du 5V).

L'intensité maximale disponible sur cette broche est de 50mA

Page 155: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 155

GND. Broche de masse (ou 0V).The power pins are as follows:

Le bootloader est un programme préprogrammé une fois pour toute dans

l'ATméga et qui permet la communication entre l'ATmega et le logiciel Arduino

via le port USB, notamment lors de chaque programmation de la carte.

Les entrées et sorties numériques

Chacune des 54 broches numériques de la carte Mega peut être utilisée soit

comme une entrée numérique, soit comme une sortie numérique, en utilisant les

instructions pinMode(), digitalWrite() et digitalRead() du langage Arduino. Ces

broches fonctionnent en 5V. Chaque broche peut fournir ou recevoir un maximum

de 40mA d'intensité et dispose d'une résistance interne de "rappel au plus"

(pull-up) (déconnectée par défaut) de 20-50 KOhms. Cette résistance interne

s'active sur une broche en entrée à l'aide de l'instruction digitalWrite(broche,

HIGH).

De plus, certaines broches ont des fonctions spécialisées :

Communication Serie:

Port Serie Serial : 0 (RX) and 1 (TX);

Port Serie Serial 1: 19 (RX) and 18 (TX);

Port Serie Serial 2: 17 (RX) and 16 (TX);

Port Serie Serial 3: 15 (RX) and 14 (TX).

Utilisées pour recevoir (RX) et transmettre (TX) les données séries de niveau

TTL. Les broches 0 (RX) et 1 (TX) sont connectées aux broches correspondantes

du circuit intégré ATmega8U2 programmé en convertisseur USB-vers-série de la

carte, composant qui assure l'interface entre les niveaux TTL et le port USB de

l'ordinateur.

Interruptions Externes:

Broches 2 (interrupt 0), 3 (interrupt 1), 18 (interrupt 5), 19 (interrupt 4), 20

(interrupt 3), et 21 (interrupt 2).

Ces broches peuvent être configurées pour déclencher une interruption sur un

niveau bas, sur un front montant ou descendant, ou sur un changement d’état.

Voir l'instruction attachInterrupt() pour plus de détails.

Page 156: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 156

Impulsion PWM (largeur d'impulsion modulée):

Broches 0 à 13. Fournissent une impulsion PWM 8-bits à l'aide de l'instruction

analogWrite().

SPI (Interface Série Périphérique):

Broches 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). Ces broches supportent la

communication SPI (Interface Série Périphérique) disponible avec la librairie

pour communication SPI. Les broches SPI sont également connectées sur le

connecteur ICSP qui est mécaniquement compatible avec les cartes Uno,

Duemilanove et Diecimila.

I2C:

Broches 20 (SDA) et 21 (SCL). Supportent les communications de protocole I2C

(ou interface TWI :Two Wire Interface - Interface "2 fils"), disponible en

utilisant la librairie Wire/I2C . Noter que ces broches n'ont pas le même

emplacement que celui sur les cartes Uno, Duemilanove ou Diecimila.

LED DE TEST:

Broche 13. Il y a une LED incluse dans la carte connectée à la broche 13. Lorsque

la broche est au niveau HAUT, la LED est allumée, lorsque la broche est au

niveau BAS, la LED est éteinte.

Broches analogiques

La carte Mega2560 dispose de 16 entrées analogiques, chacune pouvant fournir

une mesure d'une résolution de 10 bits ( 1024 niveaux soit de 0 à 1023) à l'aide

de la fonction analogRead() du langage Arduino. Par défaut, ces broches

mesurent entre le 0V (valeur 0) et le 5V (valeur 1023), mais il est possible de

modifier la référence supérieure de la plage de mesure en utilisant la broche

AREF et l'instruction analogReference() du langage Arduino.

NB: les broches analogiques peuvent être utilisées en tant que broches

numériques.

Autres broches

Il y a deux autres broches disponibles sur la carte :

Page 157: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 157

AREF : Tension de référence pour les entrées analogiques (si différente du 5V).

Utilisée avec l'instruction analogReference().

Reset : Mettre cette broche au niveau BAS entraîne la réinitialisation (= le

redémarrage) du microcontrôleur.

Communications UART

La carte Arduino Mega2560 dispose de toute une série de facilités pour

communiquer avec un ordinateur, une autre carte Arduino, ou avec d'autres

microcontrôleurs.

L'ATmega2560 dispose de quatre UARTs (Universal Asynchronous Receiver

Transmitter ou émetteur-récepteur asynchrone universel en français) pour la

communication série de niveau TTL (5V).

L’un des ports série de l'ATmega 2560 est disponible sur les broches 0(RX) et

1(TX). Un circuit intégré ATmega8U2 sur la carte assure la connexion entre

cette communication série et le port USB de l'ordinateur qui apparaît comme un

port COM virtuel pour les logiciels de l'ordinateur. Le code utilisé pour

programmer l'ATmega8U2 utilise le driver standard USB COM, et aucun autre

driver externe n'est nécessaire. Cependant, sous Windows, un fichier .inf est

requis.

Le logiciel Arduino inclut une fenêtre terminal série (ou moniteur série) sur

l'ordinateur et qui permet d'envoyer des textes simples depuis et vers la carte

Arduino. Les LEDs RX et TX sur la carte clignotent lorsque les données sont

transmises via le circuit intégré ATmega8U2 utilisé en convertisseur USB-vers-

série et la connexion USB vers l'ordinateur (mais pas pour les communications

série sur les broches 0 et 1).

Une librairie Série Logicielle permet également la communication série (limitée

cependant) sur n'importe quelle broche numérique de la carte UNO.

Programmation

La carte Mega2560 peut être programmée avec le logiciel Arduino. Sélectionner

"Arduino Mega" dans le menu Tools > Board. Pour plus de détails sur le langage

Arduino, voir la référence du langage Arduino et pour apprendre à programmer

en langage Arduino voir la page Apprendre.

Page 158: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 158

Le microcontrôleur ATmega2560 présent sur la carte Arduino Mega2560 est

livré avec un bootloader (petit programme de démarrage) préprogrammé qui vous

permet de transférer le nouveau programme dans le microcontrôleur sans avoir à

utiliser un matériel de programmation externe. Ce bootloader communique avec

le microcontrôleur en utilisant le protocol original STK500 (reference, fichiers

C).

Vous pouvez bien sûr passer outre le bootloader et programmer le

microcontrôleur via le connecteur ICSP ( In-Circuit Serial Programming -

"Programmation Série Dans le circuit" en français); voir ces instructions (en

anglais) pour plus de détails.

Le code source du code pour le circuit intégré ATmega8U2 est disponible.

L'ATmega8U2 est chargé avec un bootloader DFU qui peut être activé en

connectant le cavalier au dos de la carte ( ?) et en réinitialisant le 8U2. Vous

pouvez alors utiliser le logiciel FLIP de chez Atmel (Windows) ou le programmeur

DFU (Mac OS X et Linux) pour charger le nouveau code. Ou bien vous pouvez

utiliser le connecteur ICSP avec un programmateur externe (pour réécrire le

bootloader DFU).

Réinitialisation (logicielle) automatique

Plutôt que de nécessiter un appui sur le bouton poussoir de réinitialisation avant

un transfert de programme, la carte Arduino Mega2560 a été conçue de telle

façon qu'elle puisse être réinitialisée par un logiciel tournant sur l'ordinateur.

Une des broches matérielles de contrôle du flux (DTR) du circuit intégré

ATmega8U2 est connecté à la ligne de réinitialisation de l'ATmega2560 via un

condensateur de 100 nanofarads. Lorsque cette broche est mise au niveau BAS,

la broche de réinitialisation s'abaisse suffisamment longtemps pour réinitialiser

le microcontrôleur. Le logiciel Arduino utilise cette possibilité pour vous

permettre de transférer votre programme dans la carte par un simple clic sur le

bouton de transfert de la barre de boutons de l'environnement Arduino. Cela

signifie que le bootloader peut avoir un temps mort plus court, la mise au niveau

bas de la broche DTR étant bien coordonnée avec le début du transfert du

programme.

Ce fonctionnement a d'autres implications. Quand la carte Mega2560 est

connectée à un ordinateur fonctionnant soit sous Mac Os X ou Linux, la carte se

réinitialise à chaque fois qu'une connexion se fait entre elle et le logiciel (via le

port USB). Pendant la demi-seconde suivante, le bootloader s'exécute sur la

carte Mega2560. Puisqu'il est programmé pour ignorer les données mal

formatées (càd toute donnée en plus du transfert d'un nouveau programme), il

Page 159: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 159

interceptera les quelques premiers octets de données envoyés à la carte après

qu'une connexion soit établie. Si un programme s'exécutant sur la carte reçoit

une configuration initiale ou d'autres données quand il démarre, assurez-vous que

le logiciel avec lequel il communique attend une seconde après l'ouverture de la

connexion avant d'envoyer ces données.

La carte Mega2560 comporte une piste (du circuit imprimé) que vous pouvez

couper pour désactiver la réinitialisation automatique. Les bords de chaque côté

de la piste peuvent être solidarisés ensembles pour la réactiver. Vous pouvez

également désactiver la réinitialisation automatique en connectant une

résistance de 110 Ohms entre le +5V et la ligne de réinitialisation (reset).

Protection du port USB contre la surcharge en intensité

La carte Arduino Mega2560 intègre un polyfusible réinitialisable qui protège le

port USB de votre ordinateur contre les surcharges en intensité (le port USB

est généralement limité à 500mA en intensité). Bien que la plupart des

ordinateurs aient leur propre protection interne, le fusible de la carte fournit

une couche supplémentaire de protection. Si plus de 500mA sont appliqués au

port USB, le fusible de la carte coupera automatiquement la connexion jusqu'à ce

que le court-circuit ou la surcharge soit stoppé.

Page 160: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 160

3. Le logiciel

Le logiciel Arduino a pour fonctions principales :

De pouvoir écrire et compiler des programmes pour la carte Arduino

De se connecter avec la carte Arduino pour y transférer les programmes

De communiquer avec la carte Arduino

Le langage Arduino est basé sur les langages C/C++ et supporte toutes les

instructions standards du langage C et quelques-unes des outils du C++. Le

langage Arduino repose sur l'utilisation du compilateur C pour les

microcontrôleurs AVR, AVR Libc, et vous permet d'utiliser la plupart de ses

fonctions. Voir le manuel utilisateur pour plus de détails.

Structure du programme

Fonctions de base

Ces deux fonctions sont obligatoires dans tout programme en langage Arduino :

void setup()

void loop()

Structures de contrôle

if

if...else

for

switch case

while

do... while

break

continue

return

goto

Page 161: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 161

Syntaxe de base

; (point virgule)

{} (accolades)

// (commentaire sur une ligne)

/* */ (commentaire sur plusieurs lignes)

#define

#include

Opérateurs arithmétiques

= (égalité)

+ (addition)

- (soustraction)

* (multiplication)

/ (division)

% (modulo)

Opérateurs de comparaison

== (égal à)

!= (différent de)

< (inférieur à)

> (supérieur à)

<= (inférieur ou égal à)

>= (supérieur ou égal à)

Opérateurs booléens

&& (ET booléen)

|| (OU booléen)

! (NON booléen)

Page 162: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 162

Pointeurs

* pointeur

& pointeur

Opérateurs bit à bit

& (ET bit à bit)

|(OU bit à bit)

^(OU EXCLUSIF bit à bit)

˜(NON bit à bit)

<< (décalage à gauche)

>> (décalage à droite)

Voir également :

Manipulation des Ports

Opérateurs composés

++ (incrémentation)

-- (décrémentation) (à revoir)

+= (addition composée)

-= (soustraction composée)

*= (multiplication composée)

/= (division composée)

&= (ET bit à bit composé)

|= (OU bit à bit composé)

Page 163: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 163

Variables et constantes

Les variables sont des expressions que vous pouvez utiliser dans les programmes

pour stocker des valeurs, telles que la tension de sortie d'un capteur présente

sur une broche analogique.

Constantes prédéfinies

Les constantes prédéfinies du langage Arduino sont des valeurs particulières

ayant une signification spécifique.

HIGH | LOW

INPUT | OUTPUT

true | false

A ajouter : constantes décimales prédéfinies

Expressions numériques

Expressions numériques entières

Expressions numériques à virgule

Types des données

Les variables peuvent être de type variés qui sont décrits ci-dessous.

Synthèse des types de données Arduino

void

boolean

char

byte

int

unsigned int

long

unsigned long

Page 164: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 164

float (nombres à virgules)

double (nombres à virgules)

Les chaînes de caractères

objet String NEW

Les tableaux de variables

le mot-clé void (fonctions)

word

PROGMEM

Voir également :

Déclaration des variables

Pour info : les type de données avr-c

Conversion des types de données

char()

byte()

int()

long()

float()

word()

Portée des variables et qualificateurs

static

volatile

const

Utilitaires

sizeof() (opérateur sizeof )

Référence

Code ASCII

Page 165: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 165

Fonctions

Entrées/Sorties Numériques

pinMode(broche, mode)

digitalWrite(broche, valeur)

int digitalRead(broche)

Entrées analogiques

int analogRead(broche)

analogReference(type)

Sorties "analogiques" (génération d'impulsion)

analogWrite(broche, valeur) - PWM

Entrées/Sorties Avancées

tone()

noTone()

shiftOut(broche, BrocheHorloge, OrdreBit, valeur)

unsigned long pulseIn(broche, valeur)

Temps

unsigned long millis()

unsigned long micros()

delay(ms)

delayMicroseconds(us)

Math

min(x, y)

max(x, y)

abs(x)

Page 166: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 166

constrain(x, a, b)

map(valeur, fromLow, fromHigh, toLow, toHigh)

pow(base, exposant)

sq(x)

sqrt(x)

Pour davantage de fonctions mathématiques, voir aussi la librairie math.h : log,

log10, asin, atan, acos, etc...

Trigonométrie

sin(rad)

cos(rad)

tan(rad)

degrees(rad)

radians(deg)

PI

Nombres randomisés (hasard)

randomSeed(seed)

long random(max)

long random(min, max)

Bits et Octets

lowByte()

highByte()

bitRead()

bitWrite()

bitSet()

bitClear()

bit()

Page 168: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 168

5. Librairie arduino

Librairie Serial pour la communication série

La librairie Serial est utilisée pour les communications par le port série entre la

carte Arduino et un ordinateur ou d'autres composants. Toutes les cartes

Arduino ont au moins un port Série (également désigné sous le nom de UART ou

USART) : Ce port série communique sur les broches 0 (RX) et 1 (TX) avec

l'ordinateur via le port USB. C'est pourquoi, si vous utilisez cette fonctionnalité,

vous ne pouvez utiliser les broches 0 et 1 en tant qu'entrées ou sorties

numériques.

Vous pouvez utiliser le terminal série intégré à l'environnement Arduino pour

communiquer avec une carte Arduino. Il suffit pour cela de cliquer sur le bouton

du moniteur série dans la barre d'outils puis de sélectionner le même débit de

communication que celui utilisé dans l'appel de la fonction begin().

La carte Arduino Mega dispose de trois port série supplémentaires : Serial1 sur

les broches 19 (RX) et 18 (TX), Serial2 sur les broches 17 (RX) et 16 (TX),

Serial3 sur les broches 15 (RX) et 14 (TX).

Les fonctions de la librairie .

begin()

available()

read()

flush()

print()

println()

write()

Page 169: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 169

La librairie pour afficheur LCD alphanumérique

Cette librairie permet à une carte Arduino de contrôler un afficheur LCD

alphanumérique standard à cristaux liquides basé sur le circuit intégré Hitachi

HD44780 (ou compatible), ce qui est le cas de la plupart des afficheurs

alphanumériques LCD disponibles. La librairie fonctionne aussi bien en mode 4

bits qu'en mode 8 bits (càd utilisant 4 ou 8 broches numériques en plus des

broches de contrôle RS, Enable et RW en option). Ainsi, en mode 4 bits, 6

broches numériques de la carte Arduino suffisent pour contrôler un afficheur

LCD alphanumérique.

Le constructeur de classe

LiquidCrystal

Fonctions disponibles.

Fonctions d'initialisation

begin()

Fonctions d'écriture

print()

write()

Fonctions de gestion de l'écran

clear()

display()

noDisplay()

Fonctions de positionnement du curseur

home()

clear()

setCursor()

Fonctions modifiant l'aspect du curseur

cursor()

noCursor()

blink()

Page 170: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 170

noBlink()

Fonctions de contrôle du comportement du curseur

autoscroll()

noAutoscroll()

leftToRight()

rightToLeft()

Fonctions d'effets visuels

scrollDisplayLeft()

scrollDisplayRight()

Fonction de création de caractère personnalisé

createChar()

Principe d'utilisation

Pour inclure la librairie LiquidCrystal dans un programme, on ajoutera au début

du programme la ligne suivante :

#include <LiquidCrystal.h>

Page 171: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 171

La librairie Servo pour le contrôle des servomoteurs

Cette librairie permet à une carte Arduino de contrôler les servomoteurs de

modélisme. Les servomoteurs intègrent un mécanisme et un axe qui peut-être

contrôlé avec précision. Les servomoteurs standards permettent de positionner

l'axe à différents angles, habituellement entre 0 et 180 degrès (ces

servomoteurs permettent de maintenir l'axe à une position précise). Les

servomoteurs à rotation continue permettent des rotations de l'axe à

différentes vitesses.

A partir d'Arduino 0017, la librairie Servo supporte jusqu'à 12 servomoteurs sur

la plupart des cartes Arduino (la Duemilanove par exemple) et 48 sur l'Arduino

Mega. Sur les cartes autres que la Mega, l'utilisation de la librairie Servo

désactive l'instruction analogWrite() sur les broches 9 et 10, qu'il y ait ou non un

servomoteur sur ces broches. Sur la Mega, jusqu'à 12 servomoteurs peuvent

être utilisés sans interférer avec la fonction PWM (càd avec l'instruction

analogWrite); utiliser de 12 à 23 servomoteurs désactivera les impulsions PWM

sur les broches 11 et 12. (Note : PWM pour Pulse Width Modulation ou

Modulation de Largeur d'Impulsion).

Avec Arduino 0016 et précédent, la librairie Servo utilise la fonction fournie par

le matériel (càd l'ATmega de la carte), et fonctionne uniquement sur les broches

9 et 10 (et ne fonctionne pas sur l'Arduino Mega). Dans ce cas, si seulement un

servomoteur est utilisé, l'autre broche ne peut pas être utilisée pour générer

une sortie PWM normale avec l'instruction analogWrite(). Par exemple, avec

Arduino 0016 et précédent, vous ne pouvez avoir un servomoteur sur la broche 9

et une sortie PWM sur la broche 10.

Circuit à réaliser 2.

Les servomoteurs ont 3 fils de connexion :

le +

le - (ou la masse)

la commande du servomoteur : une impulsion modulée en largeur (PWM) qui

définit la position de l'axe du servomoteur.

Dans cas de l'utilisation d'un à 2 servomoteur(s) standard(s) :

Le fil du +, est typiquement rouge, et doit être connecté à la broche 5V de la

carte Arduino.

Page 172: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 172

Le fil de la masse est typiquement noir ou marron et doit être connecté au 0V (=

à la masse) de la carte Arduino.

Le fil de l'impulsion de commande est typiquement jaune, orange ou blanc et doit

être connecté à une broche numérique de la carte Arduino.

Dans le cas de l'utilisation de plusieurs servomoteurs ou de servomoteurs

nécessitant une tension supérieure à 5V et/ou une intensité importante :

Noter que les servomoteurs nécessitent parfois une tension supérieure à 5V

et/ou une intensité importante. Donc si vous devez utiliser plus d'un ou deux

servomoteur(s), vous aurez alors besoin d'utiliser une alimentation différente du

5V de la carte Arduino.

Dans le cas de l'utilisation d'une alimentation séparée de la carte Arduino, bien

connecter ensemble les masses (le 0V) de la carte et de l'alimentation externe.

Le constructeur

Servo

Fonctions de la librairie Servo .

attach()

write()

writeMicroseconds()

int read()

boolean attached()

detach()

Principe d'utilisation

Pour inclure la librairie Servo dans un programme, on ajoutera au début du

programme la ligne suivante :

#include <Servo.h>

Page 173: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 173

La librairie Stepper pour le contrôle des moteurs pas à pas

Cette librairie vous permet de contrôler des moteurs pas à pas unipolaires et

bipolaires. Les moteurs pas à pas sont des moteurs capables d'exécuter des

rotations "cran par cran" d'une grande précision. Pour utiliser cette librairie

avec votre carte Arduino, vous avez besoin d'un moteur pas à pas et d'une

interface de puissance adaptée pour contrôler le moteur.

Fonctions de la librairie

setSpeed(vitesse)

step(nombre_pas)

Information technique

Pour info, les séquences générées par la librairie sont :

dans le cas d'une connexion 4 fils :

Pas C0 C1 C2 C3

1 1 0 1 0

2 0 1 1 0

3 0 1 0 1

4 1 0 0 1

Dans le cas d'une connexion 2 fils (cas des interfaces mot CC avec broches de

vitesse et sens) :

Pas C0 C1

1 0 1

2 1 1

3 1 0

4 0 0

Principe d'utilisation

Pour inclure la librairie Stepper dans un programme, on ajoutera au début du

programme la ligne suivante :

#include <Stepper.h>

Page 174: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 174

Page 175: SYSTEMES A MICROCONTROLEURS

EN-NAHLI MOHAMMED Formateur à OFPPT / ISTA RI Fès Maroc Page 175

Chapitre 6. Applications

A SUIVRE