Académique Documents
Professionnel Documents
Culture Documents
COURS 1
Marin Iuliana
Évaluation en Microcontrolleurs
• Activité pendant le semestre: 50 points dont
• Activité en TP (Tests et activité au fil du semestre) : 50 points
• Activité de laboratoire 10 points
• Devoirs 10 points
• Tests 10 points
• Grand devoir 1 10 points
• Grand devoir 2 10 points
• Autres notations (Partiel) : -
• Examen final: 50 points
• Conditions minimales:
• Pour participer à l’examen final:
• Minimum 25 points pour l’activité pendant le semestre, partiel et TP’s; Minimum
10 présences en TP (attention!! Les TP’s ne peuvent être refaits!!!)
• Pour passer: 50 points, dont minimum 25 points à l’examen final 2
Exigences de conception du système
3
Le microprocesseur
Architecture interne (1)
Bus d’adresses
Microprocesseur
Unité de
Accumulateur
Unité de Programme
traitement commande
Registre
Mémoire
d’état
Données
Bus de données 4
Le microprocesseur
Architecture interne (2)
Bus d’adresses
Microprocesseur
Accumulateur PC
Accumulateur Programme
Registre
d’état
Registre
Mémoire
d’état Bloc logique de
commande
Décodeur
d’instruction Données
Bus de données 5
Le microprocesseur
Unité de commande
Elle permet de séquencer le déroulement des instructions.
Microprocesseur
L’accumulateur : C’est un registre de travail qui sert à stocker le
résultat des opérations réalisées par L’UAL.
Accumulateur
Accumulateur
Registre L’Unité Arithmétique et Logique (UAL) est un circuit complexe qui
d’état
Registre assure les fonctions logiques (ET, OU, comparaison, décalage, etc…) ou
d’état
arithmétique (addition, soustraction…).
7
Le traitement des instructions
Résumé
1
2
CPU Mémoire
4
Mémoire
Programme
CPU BUS
&
données
⚫ Un seul chemin d'accès à la mémoire
⚫ Un bus de données (programme et données),
⚫ Un bus d’adresse (programme et données)
⚫ Architecture des processeurs d’usage général
⚫ Goulot d'étranglement pour l'accès à la mémoire
9
L’architecture
Harvard
Mémoire
programme
CPU
Mémoire
donnée
⚫ Séparation des mémoires programme et données
⚫ Un bus de données programme,
⚫ Un bus de données pour les données,
⚫ Un bus d’adresse programme,
⚫ Un bus d’adresse pour les données.
⚫ Meilleure utilisation du CPU :
⚫ Chargement du programme et des données en parallèle 10
L’architecture
Harvard : Cas des microcontrôleurs PIC
11
Le traitement des instructions
Organisation d’une instruction
Le microprocesseur ne comprend qu’un certain nombre d’instructions qui
sont codées en binaire. Une instruction est composée de deux éléments :
⚫ Le code opération : C’est un code binaire qui correspond à l’action à effectuer par le processeur
⚫ Le champ opérande : Donnée ou bien adresse de la donnée.
12
Le traitement des instructions
Exemple d’instruction
⚫ InstructionAddition :
Accumulateur = Accumulateur + Opérande
Correspond à l’instruction ADD A,#2
Outils :
1. Menhir, Potion magique
2. Sanglier
Unité de traitement Unité de commande
Outils :
1. Menhir, Potion magique
2. Sanglier
Unité de traitement Unité de commande
15
Le traitement des instructions
Phase 3 : Exécution de l’instruction
On va commencer par attaquer
le camps Romain avec des
Ordres :
menhir et de la potion!!! 1. Attaquer camp romain
2. Organiser banquet
Outils :
1. Menhir, Potion magique
2. Sanglier
Unité de traitement Unité de commande
16
Le traitement des instructions
Déroulement
Bus d’adresses
Microprocesseur
Accumulateur PC
Accumulateur Programme
Registre
d’état
Registre
Mémoire
d’état Bloc logique de
commande
Décodeur
d’instruction Données
Bus de données 17
Le traitement des instructions
Les architectures RISC et CISC (1)
18
Le traitement des instructions
Les architectures RISC et CISC (2)
19
Le traitement des instructions
Les architectures RISC et CISC (3)
• Toutes les instructions sont codées sur la même taille et toutes s'exécute dans le
même temps (un cycle d'horloge en général).
• L'organisation du jeu d'instructions est souvent appelé ISA pour Instruction Set
Architecture
20
Le traitement des instructions
• Des études statistiques sur des programmes tels des systèmes d'exploitation ou
des applications réelles ont montré les faits suivants.
• 80 % des programmes n'utilisent que 20 % du jeu d'instructions.
• Les instructions les plus utilisées sont :
• les instructions de chargement et de rangement,
• les appels de sous-routines.
• Les appels de fonctions sont très gourmands en temps : sauvegarde et restitution
du contexte et passage des paramètres et de la valeur de retour.
• 80% des variables locales sont des entiers.
• 90% des structures complexes sont des variables globales.
• La profondeur maximale d'appels imbriqués et en moyenne de 8. Une profondeur
plus importante ne se rencontre que dans 1 % des cas.
21
Les modes d’adressages
⚫ Ce sont les diverses manières de définir la localisation d’un
opérande. Les trois modes d’adressage les plus courant sont :
⚫ Adressage immédiat
⚫ Adressage direct
⚫ Adressage indirect
22
Les modes d’adressages
Immédiat
Exemple : ADDA #4
ALU
Mémoire
Adresses Contenu
0x00 0………………..
110 1101
Accumulateur
0x01 0………………..
100 0101
0………………..
010 1111
adrs + 1 0 1 1 0 #4
1001
PC adrs+1
adrs + 2 …………………
1………………..
010 1101
…………………
0011 1000
1…………………
100 0101
1…………………
010 1001
………………….
0111 1010
23
Les modes d’adressages
Direct
Accumulateur
0x01 0………………..
100 0101
0………………..
010 1111
adrs + 1 0 1adresseX
10 1001
PC adrs+1
adrs + 2 …………………
1010 1101
adresseX 0xxxx
0 1 1 xxxx
1000
1…………………
100 0101
1…………………
010 1001
………………….
0111 1010 24
Les modes d’adressages
Indirect
Accumulateur
0x01 0………………..
100 0101
0………………..
010 1111
adrs + 1 0@adresseX
110 1001
PC adrs+1
adrs + 2 …………………
1010 1101
@adresseX 0 adresseX
011 1000
1…………………
100 0101
adresseX 1 0 1 0 xxxxxx
xxxxx 1001
………………….
0111 1010 25
Exemple d’exécution (1)
Le compilateur génère aussi un fichier assembleur, représentant le code et les
emplacements mémoire qui seront utilisés.
26
Exemple d’exécution (2)
À l’infini
PORTC
27
Définition d’un microcontrôleur
Un microcontrôleur est un circuit qui intègre un maximum de fonctions
dans un même boitier. L’intégration de ces fonctions dans le même
environnement permet de créer des applications plus simplement.
28
• Les oscillateurs sont utilisés pour fournir
une horloge au microcontrôleur. Dans
un microcontrôleur ou
microprocesseur, chaque instruction
est exécutée en synchronisation avec
l'horloge.
• Un convertisseur analogique-
numérique (ADC, A / N ou A-D) est un
système qui convertit un signal
analogique, tel qu'un son capté par
un microphone ou une lumière
entrant dans un appareil photo
numérique, en un signal numérique.
• Une minuterie de surveillance
(watchdog timer - WDT) est une
minuterie électronique ou logicielle
utilisée pour détecter et récupérer des
dysfonctionnements informatiques.
• Les convertisseurs analogique-
numérique (ADC) ont besoin d'une
entrée de tension de référence (VREF)
pour fonctionner correctement.
• PWM est une technique utilisée pour
générer un signal de sortie
analogique à l'aide de signaux
numériques. CCP signifie Capture /
Compare / PWM.
29
Définition d’un microcontrôleur
Avantages
⚫ Cout réduit
⚫ Encombrement moindre
⚫ Fiabilité
⚫ ROM memory :
Aussi appelé (à juste titre) program memory.
C’est une mémoire Flash qui contient le
programme à exécuter.
⚫ EEPROM memory
C’est une mémoire similaire à la mémoire programme. On s’en sert surtout pour stocker des
constantes.
32
Définition d’un microcontrôleur
Les mémoires (2)
⚫ RAM memory :
⚫ General Purpose Register : Mémoire RAM classique, utiliser pour stocké des variables.
Exemple :
int i;
i++; // incrémentation de i depuis la RAM
⚫ SFR (Special Function Register) : C’est aussi de la mémoire RAM, sauf que les rôles de
chacune des cases mémoire (registres) ont été définis par le fabriquant. Chaque registre SFR
est connecté à un périphérique matériel spécifique et permet de la contrôler. Exemple :
33
Définition d’un microcontrôleur
Les mémoires (3)
34
Cadencement du microcontrôleur
Schéma du pic 16F877
35
Cadencement du microcontrôleur
Les cadencements possibles
⚫ Quartz
⚫ Très bonne Stabilité (10 ppm)
⚫ Résonateur céramique
⚫ Stabilité ( 0.5%)
⚫ Moins couteux que le quartz
37
Les timers
Mode compteur ou temporisateur (2)
⚫ En pratique, on visualise la valeur de départ, puis la valeur d’arrivée. La valeur
de comptage est la différence des deux valeurs.
38
Les timers
Utilisation d’un prescaler
39
Les ports d’entrée / Sortie
Ce sont des ports parallèles. Ils permettent de recueillir des informations ou de
piloter des modules sur l’environnement extérieur. Ils sont souvent bidirectionnels
(configurable en entrée ou sortie).
40
41
Les ports d’entrée / Sortie
Les sorties logiques
42
Les ports d’entrée / Sortie
1. Sortie trois états
Fonctionnement
T1 T2 Sortie
Bloqué Bloqué Etat haute impédance
Bloqué Saturé "0"
Saturé Bloqué "1"
Saturé Saturé non utilisé
⚫ Des sorties trois états peuvent être reliées entres elles mais il faut bien veiller à ce que une
seule impose un niveau (haut ou bas) et que les autres sorties soit en haute impédance.
43
Les ports d’entrée / Sortie
2. Sortie collecteur ouvert (1)
Fonctionnement
T2 S
Saturé "0"
Bloqué Dépend du montage
44
Les ports d’entrée / Sortie
2. Sortie collecteur ouvert (2)
⚫ Pour générer le niveau "1", une résistance extérieure est nécessaire (résistance de
tirage // pull-up). Plusieurs sorties "collecteur ouvert" peuvent être reliées entre elles,
cela réalise un "ET logique"
⚫ Une sortie « collecteur ouvert » peut commander une charge sous une tension différente
de la tension d'alimentation.
45
Les ports d’entrée / Sortie
⚫ Bouton poussoir :
⚫ Led :
Donner la valeur de la résistance sachant qu’une led rouge
à une tension de 1,5V et qu’il faut 10 mA pour avoir un
éclat correct.
46
La liaison série
⚫ La liaison série USART (Universal Synchronous Asynchronous Receiver Transmitter ) est le
mode le plus rependu pour communiquer (et aussi le plus vieux).
47
La liaison série
Connexions (1)
⚫ Une liaison série permet de transmettre des données sur un nombre
limité de fils. Cette liaison peut être Half duplex (liaison synchrone) ou
full duplex (liaison asynchrone).
48
La liaison série
Connexions (2)
51
Introduction à Arduino
52
VOUS AVEZ DIT ARDUINO ?
Arduino est une plate-forme de prototypage d'objets
interactifs à usage créatif constituée d'une carte
électronique et d'un environnement de programmation.
Sans tout connaître ni tout comprendre de l'électronique,
cet environnement matériel et logiciel permet à l'utilisateur
de formuler ses projets par l'expérimentation directe avec
l'aide de nombreuses ressources disponibles en ligne.
53
VOUS AVEZ DIT ARDUINO ?
Pont tendu entre le monde réel et le monde numérique,
Arduino permet d'étendre les capacités de relations
humain/machine ou environnement/machine.
Arduino est un projet en source ouverte (open source) : la
communauté importante d'utilisateurs et de concepteurs
permet à chacun de trouver les réponses à ses questions.
54
Une carte électronique
Arduino en résumé
Un environnement de
programmation
55
Historique
56
Processing pour le Hardware !
Qu'est ce que Processing?
− un langage de programmation et un environnement de développement
créé par Benjamin Fry et Casey Reas, deux artistes américains.
− particulièrement adapté à la création plastique et graphique
interactive
− Le logiciel fonctionne sur Macintosh, sous Windows et sous Linux, car
il est basé sur la plate-forme Java — il permet d'ailleurs de
programmer directement en langage Java.
Pourquoi?
− Matériel robotique excessivement cher
57
Arduino : une philosophie
Le matériel est « open source » :
− On peut le copier, le fabriquer et le modifier librement.
60
La carte électronique Arduino
FTDI USB Chip
61
La schématique électronique
62
Qu'est ce qu'un microcontrôleur?
µcontrôleur : circuit intégré qui rassemble les éléments essentiels
d'un ordinateur : processeur, mémoires (mémoire morte et/ou
programmable pour le programme, mémoire vive pour les
données), unités périphériques et interfaces d'entrées- sorties
Ils 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.
63
Qu'est ce qu'un microcontrôleur?
Un microcontrôleur intègre sur un unique die (circuit intégré) : un processeur
(CPU), avec une largeur du chemin de données
allant de 4 bits pour les modèles les plus basiques à 32 ou 64 bits pour les modèles
les plus évolués ;
de la mémoire vive (RAM) pour stocker les données et variables ;
de la mémoire pour stocker le programme: ROM (mémoire morte) et/ou EPROM,
EEPROM, Flash ;
souvent un oscillateur pour le cadencement. Il peut être réalisé avec un quartz,
un circuit RC ou encore une PLL1 ;
66
Numérisation éch = échantillon ou sample en anglais
69
Encore des capteurs
70
Toujours des capteurs
71
Capteurs analogiques et numériques
Parmi les capteurs que nous venons de voir, il existe :
− des capteurs analogiques pour lesquels le signal devra être
numérisé par le CAN du microcontrôleur. Il nous appartiendra de
faire appliquer la loi régissant la mesure.
− des capteurs numériques qui ont leur propre CAN embarqué. Il
gère eux même la loi régissant la mesure. La communication avec
ces capteurs se fait souvent selon un protocole particulier (I2C, 1-
wire, etc.).
Par exemple le DHT11
72
Quelques actionneurs
73
Breadboard (Planche à pain ... pour le prototypage)
Élément essentiel pour le prototypage et essai en tout genre
74
Breadboard: exemple d'utilisation
1 photorésistance 75
Différents shields
Existence de « shields » (boucliers en français) : ce sont des
cartes supplémentaires qui se connectent sur le module Arduino
pour augmenter les possibilités comme par exemple : afficheur
graphique couleur, interface ethernet, GPS, etc...
76
Des shields
77
Encore des shields
78
Le shield Wireless SD
79
Communications sur le shield
80
Différents autres modules
81
Programmons notre Arduino
• Le langage Arduino est basé sur le C/C++.
− Le langage de programmation d'Arduino est en effet une
implémentation de Wiring (une plate- forme open source similaire de
physical computing qui proposait elle-même une bibliothèque appelée
Wiring qui simplifie les opérations d'entrée/sortie).
• Un programme Arduino est aussi appelé un sketch.
82
Structure d'un programme
Prise en compte des instructions de la
partie déclarative
Exécution de la partie configuration
(fonction setup()),
Exécution de la boucle sans fin (fonction
loop()): le code compris dans la boucle sans
fin est exécuté indéfiniment.
Finalement similaire au code suivant sur PC:
int main()
{
setup();
while(true)
loop();
}
83
Le code minimal
Avec Arduino, nous devons utiliser un code minimal lorsque
l'on crée un programme. Ce code permet de diviser le
programme que nous allons créer en deux grosses parties.
void setup() //fonction d'initialisation de la carte
{
//contenu de l'initialisation
}
84
La syntaxe du langage
Voir aussi la section reference
http://www.arduino.cc/reference
85
La syntaxe du langage
86
L'environnement de développement
87
L'environnement de développement
88
Merci de votre attention!
89