2. www.geii.eu 2
Microcontrôleurs
Microprocesseur Microcontrôleur
Microprocesseur
Utilisé dans des systèmes capables d’exécuter de nombreuses
tâches différentes
Ne peut fonctionner seul et s’insère dans une structure matérielle
complexe intégrant :
– de la mémoire vive et de la mémoire de masse,
– un superviseur d’alimentation,
– des périphériques variés (souris, clavier, carte vidéo, unité de stockage
de masse)
Microcontrôleur
Dédié à une application spécifique
Intègre pratiquement tous les éléments nécessaires au traitement
de cette application unique : System On Chip (ram, flash, timer,
convertisseur, bus de communication …)
2
3. www.geii.eu 3
Exemples d’application
Produits de grande consommation
Matériels audio et vidéo
Interface avec l’utilisateur
Configuration de composants électroniques
Électroménager (four micro-ondes, machine à laver …)
Périphériques informatiques (souris, claviers, manette de jeu …)
Domotique
Contrôle de température
Systèmes de surveillance, alarme
Systèmes d’éclairage
Automobile
Fermeture centralisée
Réglages des sièges et rétroviseurs
Clignotants
Gestion des vitres électriques
…
3
4. www.geii.eu 4
Choix d’un microcontrôleur
Offre vaste avec des leaders
En 8 bits
PIC10, 12, 16 et PIC18 de Microchip (leader mondial)
Famille 8051 Intel
les AVR et ATMega d’Atmel (Arduino)
HC11 et HC08 de Freescale Semiconductor
En 16 et 32 bits
PIC32 de Microchip
ST7 (coeur ARM) ST Microelectronics
Tendance net à utiliser des cœurs ARM
DSP
microcontrôleur dédié au calcul numérique pour les
applications audio et vidéo, asservissements de processus
industriels
4
5. www.geii.eu 5
Choix d’un microcontrôleur
Critères de choix
Caractéristiques techniques du microcontrôleur
Besoin en puissance de calcul : famille 8, 16 ou 32 bits
Type de boîtier et caractéristiques de consommation
Périphériques embarqués
Disponibilités et prix
Outils de développement
Chaîne de développement (gestion de projet)
Compilateur C dédié et optimisé
Par essence, les cross compilateurs sont rarement optimisés.
Outils de mise au point disponibles
– Simulateur,
– Debugger en circuit,
– Émulateurs.
5
6. www.geii.eu 6
Langages de développement
Assembleur
Avantage
Code moins coûteux en mémoire (si on sait programmer) et donc
potentiellement plus rapide.
Outil gratuit fourni par le fabricant du microcontrôleur.
Inconvénient
Plus difficile à maintenir et moins lisible.
C
Avantage
Portabilité de certains algorithmes.
Pas d’apprentissage spécifique quant au langage du
microcontrôleur choisi (les périphériques sont toujours à connaître).
Vitesse de développement accrue.
Inconvénient
Code parfois mal optimisé surcoût par surclassement de la cible.
Coût de l’outil de développement pour une version optimisée.
6
7. www.geii.eu 7
Que trouve-t-on à l’intérieur ?
7
CPU
Mémoire
Flash
Programme
Mémoire
SRAM
variables
Mémoire
EEPROM
config
Circuit
de RESET
Horloge
Bus
SPI
Bus
I2C
USART
JTAG
ADC
10bits
8 entrées
Contrôleur d’interruptions
Timers
2 de 8 bits
1 de 16 bits
Compare
/capture
PWM
I/O
Ports
Debug
9. www.geii.eu 9
Périphériques de liaison avec l’extérieur
Liaison avec le monde analogique
Convertisseur analogique/digital (CAN ou ADC).
Circuit PWM.
Comparateur de tension programmable.
Bus de communication
Vers des composants électroniques
bus I2C et SPI.
Vers des modules électroniques distants
bus LIN et CAN (automobile).
Vers un terminal, un PC ou certains capteurs
USB et RS232C, RS485.
Vers l’internet
bus Ethernet, WIFI.
9
10. www.geii.eu 10
Périphériques de liaison avec l’extérieur
Liaison avec le monde digital
Port tout ou rien TTL/CMOS
entrées/sorties 5v ou 3,3v nécessitant une adaptation pour
travailler avec d’autres niveaux de tension.
Compteur d’évènements
Périphériques de Comparaison/Capture.
Intégration de capteurs
Température, champ magnétique, accélération.
10
11. www.geii.eu 11
Périphériques internes
Timers
Compteurs programmables indispensables à la gestion du
temps
Pour la mesure de la durée d’un évènement.
Pour générer avec précision des signaux en sorties.
Pour imposer l’exécution périodique de certaines fonctions du
programme.
Contrôleur d’interruption
Prise en charge logiciel rapide d’évènements matériels internes
ou externes.
11
12. www.geii.eu 12
Vu de l’extérieur
Différents boitiers
Note : les broches d’entrées/sorties sont regroupées (ici 5 ports
notés A, B, C, D et E) et sont souvent utilisées de plusieurs
façons différentes :
- comme simple entrée/sortie logique (Ex : I/O RC7)
- affectée à un périphérique spécifique (Ex : RX)
12
13. www.geii.eu 13
Le CPU : Core Processor Unit
Généralement de type RISC
Reduced Instruction Set Computer
131 instructions pour la famille AVR d’Atmel.
35 instructions seulement pour les PIC16 Microchip.
Processeur RISC moins gourmand en surface de Silicium.
Architectures internes variées
Cas des AVR Atmel
32 registres de travail internes R0 à R31.
Gestion continue de la mémoire.
Cas des PIC16 Microchip
1 registre de travail W.
Mémoire organisée en banques.
13
14. www.geii.eu 14
Architecture mémoire
Architecture de Harvard
Mémoires de programme et de données séparées
Application figée mémoire de programme non volatile
– technologie FLASH la plupart du temps pour les petites séries ou le développement.
– technologie PROM (programmable une seule fois) pour les très grandes séries.
– technologie EPROM pour de vieilles versions de uC.
– Exemples :
» ATmega328p (Arduino Uno) : 32K octets.
» ATmega2560 (Arduino Mega) : 256K octets.
» PIC18F4550 : 32K octets.
Données évoluant rapidement mémoire vive, volatile
– technologie SRAM (ram statique) pour les petites capacités (<64 ko) ; généralement
le cas de uC 8 bits.
– technologie SDRAM (ram synchrone dynamique) pour les grandes capacités : dans
le cas des DSP et uC 16 ou 32 bits.
– Exemples :
» Atmega328p (Arduino Uno) : 2K octets.
» ATmega2560 (Arduino Mega) : 8K octets.
» PIC18F4550 : 2K octets.
14
15. www.geii.eu 15
Architecture de Harvard
15
CPU
Mémoire
Flash, EPROM
ou PROM
Programme
Mémoire
SRAM (uC 8 ou 16 bits)
SDRAM (uC 32 bits)
Données (variables)
Mémoire
EEPROM
Paramètres de
configuration
16. www.geii.eu 16
Mémoire EEPROM
Quelques points clés
Non volatile conserve les données en cas de coupure de
l’alimentation.
Présente dans de nombreux uC.
D’une capacité de 64 octets à quelques ko.
Exemples :
ATmega328p (Arduino Uno) : 1K octets.
ATmega2560 (Arduino Mega) : 4K octets.
PIC18F4550 : 256 octets.
Utilisation
Importante pour la conservation de paramètres de configuration.
Mémorisation à l’abris des ruptures d’alimentation de certaines
variables indispensables au fonctionnement du système.
16
17. www.geii.eu 17
Cartographie mémoire de programme
Mémoire de programme organisée en pages
4 premiers mots réservés au démarrage et
vecteur d’interruption
Le uC exploite un registre d’état pour
connaître la page en cours d’utilisation
les fonctions CALL et GOTO fournissent
11 bits d’adresse (au niveau du code
machine)
le registre de page fourni 2 bits
on obtient les 13 bits de PC
Pile limitée à 8 niveaux
Utilisée uniquement pour les adresses de
retour de fonctions
18. www.geii.eu 18
Cartographie de la mémoire de données PIC16
4 banques mémoires mélangeant
Registres d’état du uC : présents dans
toutes les banques
STATUS
PCLATH (page mémoire de
programme)
Registres de périphériques
TMR0, PORTA, PORTB …
Variables utilisateurs
Zones nommées General Purpose
Register
19. www.geii.eu 19
Cartographie de la mémoire de programme (PIC18)
Organisation linéaire
Le pointeur d’instruction PC est constitué de :
PCU : bits 20 à 16.
PCH : bits 15 à 8.
PCL : bits 7 à 0.
PCU et PCH sont accessibles indirectement via des
registres spécifiques PCLATU et PCLATH.
PC est fixé par les instructions de branchement
(GOTO, CALL).
Vecteurs d’interruptions
Reset.
2 sources avec des niveaux de priorités différents.
Pile
Elle dispose de 31 niveaux et est utile uniquement
pour les adresses de retours de fonction.
19
20. www.geii.eu 20
Cartographie de la mémoire de données (PIC18)
Mémoire de données divisée en 16 banques
15 (au maximum) pour les variables utilisateurs.
1 (le haut de la banque 15) pour les registres de périphériques.
Mode d’accès à une donnée
BSR indique la banque ciblée.
l’adresse de la donnée dans la banque est fournie par le code machine.
22. www.geii.eu 22
Debug – port JTAG
Objectif de ces modules ?
Permettre la mise au point d’un programme avec le uC placé dans les
conditions réelles d’utilisation, sur sa cible définitive
en plaçant des points d’arrêt.
en autorisant une exécution pas à pas.
en consultant et en modifiant les données en mémoire RAM ou en
EEPROM.
en chargeant une mise à jour du programme.
Alternative
Emulateur
Structure matérielle complexe remplaçant le uC sur sa cible définitive.
Plus souple que le debug en circuit.
Trace importante.
Points d’arrêt multiples.
Temps réel (grâce à l’utilisation de la trace).
Structure coûteuse.
22
24. www.geii.eu 24
A la mise sous tension
Grande diversité de fonctionnement d’un uC
Différentes horloges sont possibles.
Une surveillance du système peut être mise en place
Pour l’alimentation.
Pour le bon déroulement d’un programme.
Existence d’un registre de configuration initiale inscrit dans la
mémoire FLASH de programme et lu à la mise sous tension (ou
lors d’un RESET).
24
25. www.geii.eu 25
Registre de configuration initiale
Il donne la configuration de certains éléments du uC à
la mise sous tension
Définition du type d’oscillateur utilisé.
Protection contre la lecture de certaines zones mémoires.
Protection en écriture de la mémoire de programme.
Activation du mode Debug.
Protection de la mémoire EEPROM.
Mise en place d’un chien de garde (Watch Dog Timer).
Mise en fonction d’un superviseur d’alimentation simplifié
(Brown Out Reset).
Exploitation d’une temporisation de démarrage (Power Up
Timer).
25
26. www.geii.eu 26
Registre de configuration initiale
Il donne la configuration de certaines caractéristiques du uC à la
mise sous tension
Définition du type d’oscillateur utilisé.
Protection contre la lecture de certaines zones mémoires.
Protection en écriture de la mémoire de programme.
Activation du mode Debug.
Protection de la mémoire EEPROM.
Mise en place d’un chien de garde (Watch Dog Timer).
Mise en fonction d’un superviseur d’alimentation simplifié
(Brown Out Reset).
Exploitation d’une temporisation de démarrage (Power Up
Timer).
27. www.geii.eu 27
Circuit d’horloge
Une circuiterie offrant des possibilités variées
Horloge sans composant externe à partir d’un réseau RC interne
Peu stable et peu précis.
Très bon marché.
Horloge à base de Quartz externe
Accès à des fréquences élevées.
Excellente stabilité et précision.
Horloge exploitant un réseau RC externe
Plus précis que le modèle interne.
Meilleur marché qu’un quartz.
Boucle à verrouillage de phase (PLL)
Permet d’obtenir une fréquence élevée en interne par la multiplication de
la fréquence issue d’un oscillateur à quartz basse fréquence en externe
Intérêt : manipuler des basses fréquences à l’extérieur du uC et disposer
d’une horloge haute fréquence en interne (facilité de mise en œuvre;
rayonnement électromagnétique plus faible)
Configuration par un registre dédié lu au moment du reset
27
28. www.geii.eu 28
Exemple : Horloge des PIC16
4 modes possibles
Configuration par le registre Configuration Word placé à l’adresse
2007h de la mémoire programme
FOSC1:FSCO0 = 00 Low Power Crystal (LP) de 32kHz à 200kHz
FOSC1:FOSC0 = 01 Quartz standard (XT) de 200kHz à 4MHz
FOSC1:FOSC0 = 10 High Speed Crystal (HS) au-delà de 4MHz
FOSC1:FOSC0 = 11 Circuit RC (RC)
28
30. www.geii.eu 30
Dispositifs de RESET
Power Up Timer
Qu’est-ce que c’est ?
Système de temporisation imposant un délai d’attente avant la mise en
fonction du CPU lors d’un RESET.
Intérêt ?
Laisser le temps à l’alimentation de se stabiliser (ce qui évite la mise en place
d’une succession de RESET).
Brown Out Reset
Qu’est-ce que c’est ?
Dispositif imposant un reset automatique lorsque la tension d’alimentation
tombe sous un certain seuil pendant une durée minimale définie.
Intérêt ?
Eviter un disfonctionnement du CPU (plantage, saut aléatoire …).
30
31. www.geii.eu 31
Dispositifs de RESET
Chien de garde (Watch Dog Timer)
Qu’est-ce que c’est ?
Dispositif effectuant automatiquement un RESET s’il n’a pas été
réinitialisé avant une durée précise (fixé par le programmeur ou
structurellement par les concepteurs du uC).
Intérêt ?
Remettre en sécurité le système lors d’un plantage.
Comment fonctionne-t-il ?
En fonctionnement normal, le programme remet à 0 le chien de garde de
façon périodique ce qui évite qu’il se déclenche
cela implique une programmation particulière.
En cas de plantage, de boucle infinie, d’erreur de programmation
empêchant de repasser par le point (ou les points) de remise à 0 du chien
de garde, celui-ci finit par se déclencher et réalise un RESET du système.
31
33. www.geii.eu 33
Interruptions
Utilité
Traiter aussi vite que possible un évènement au moment de
son apparition.
Quels sont les types d’évènements traités ?
Sollicitation externe directe
Un front montant ou descendant sur une broche d’entrée digitale.
Arrivée d’une information sur un bus de communication.
Détection par un comparateur programmable d’un seuil de tension par
un signal externe.
Toutes sortes en provenance de périphériques internes
Dépassement de capacité du compteur d’un timer.
Atteinte du seuil programmé du compteur d’un timer.
Fin d’une conversion analogique/digitale.
33
34. www.geii.eu 34
Interruptions
Comment ça marche ?
L’interruption provoque l’arrêt temporaire du programme
principal en cours d’exécution.
A la fin de l’exécution de l’instruction en cours, le CPU oriente
l’exécution vers le vecteur d’interruption adapté à l’évènement à
traiter
Certains uC lancent directement un sous-programme spécifique pour
chaque source d’interruption.
Sur d’autres uC, il faut rechercher la source et orienter l’exécution en
conséquence.
Un sous programme spécifique à l’interruption est alors lancé
par le uC.
Note : l’adresse de l’instruction qui devait être exécutée avant la requête
d’interruption est enregistrée dans la pile (idem CALL)
Fin de l’exécution du sous-programme d’interruption
La main est rendue au programme principal qui poursuit son exécution.
34
35. www.geii.eu 35
Interruptions
Différences entre les microcontrôleurs
PIC16F :
Sources d’interruptions multiples réunies sur un seul vecteur
d’interruption on détecte l’origine de l’interruption dans
l’unique sous-programme en regardant l’état d’indicateurs.
PIC18F :
Sources d’interruptions multiples pouvant cibler deux
vecteurs d’interruptions différents en fonction du niveau de
priorité qu’on leur attribue.
2 sous-programmes d’IT
Utilisation des indicateurs pour connaître la source.
ATmega2560 :
Autant de vecteurs d’interruptions que de sources
d’interruptions.
36. Les Interruptions
Cas des PIC16F
CPU
Mémoire
Flash
Programme
Mémoire
SRAM
variables
Mémoire
EEPROM
config
Circuit
de RESET
Horloge
Bus
SPI
Bus
I2C
USART
JTAG
ADC
10bits
8 entrées
Contrôleur d’interruptions
Timers
2 de 8 bits
1 de 16 bits
Compare
/capture
PWM
I/O
Ports
Debug
37. www.geii.eu 37
Interruptions du PIC16F87x
Elaboration du signal d’interruption
11 sources d’interruption provenant de périphériques.
3 sources d’interruptions globales
T0IF : indicateur de dépassement de capacité du timer 0.
INTF : indicateur de demande d’interruption par un signal externe.
RBIF : indicateur d’interruption par changement d’état sur le port B.
37
38. www.geii.eu 38
Interruptions du PIC16F87x
Elaboration du signal d’interruption
Suffixe F des signaux : indicateur d’interruption provenant d’un
périphérique.
Suffixe E des signaux : bit d’autorisation de prise en charge de
l’interruption du périphérique associé.
PEIE : contrôle la prise en charge des interruptions en
provenance des périphériques internes.
GIE : autorisation
globale des interruptions.
38
39. www.geii.eu 39
Interruptions du PIC16F87x
Registres associés au contrôleur d’interruptions
INTCON contient les indicateurs d’interruptions généraux et les
autorisations associées.
PIR1 et PIR2 contiennent les indicateurs d’interruptions des
périphériques.
PIE1 et PIE2 sont les pendants de PIR1 et PIR2. Ils contiennent
les autorisations d’interruptions des périphériques.
39
40. www.geii.eu 40
Interruptions du PIC16F87x
Point de vue logiciel
Initialisation des interruptions
Autorisation globale GIE = 1
Mise à 1 des autorisations nécessaires pour l’interruption à traiter
– PIE = 1 si c’est un périphérique.
– mise à 1 de l’autorisation de l’interruption choisie.
Programmation de la fonction d’interruption à l’adresse
0004
Sauvegarde des registres et indicateurs importants.
Recherche de l’indicateur d’interruption mis à 1.
Orientation vers le traitement adapté.
Remise à 0 de l’indicateur de l’interruption qui vient d’être traitée.
Restitution des registres et indicateurs importants.
40
41. Les Interruptions
Cas des ATmega2560
CPU
Mémoire
Flash
Programme
Mémoire
SRAM
variables
Mémoire
EEPROM
config
Circuit
de RESET
Horloge
Bus
SPI
Bus
I2C
USART
JTAG
ADC
10bits
8 entrées
Contrôleur d’interruptions
Timers
2 de 8 bits
1 de 16 bits
Compare
/capture
PWM
I/O
Ports
Debug
43. www.geii.eu 43
Interruptions de l’ATmega2560
Traitement
A chaque adresse de vecteur d’interruption, on effectue un saut
vers un sous-programme
44. www.geii.eu 44
Interruptions de l’ATmega2560
Emplacement des Vecteurs d’interruptions variable en fonction de
la configuration initiale du microcontrôleur
Usage des interruptions
Chaque périphérique possède des registres permettant de
configurer son comportement en matière d’interruption
Pour une fonctionnalité de périphérique, il existe au moins 1
bit pour spécifier si l’interruption est autorisée ou non bit
Enable
45. www.geii.eu 45
Interruptions de l’ATmega2560
Exemple : registre d’autorisation des interruptions associé au
Timer 0 des ATmega2560 3 fonctionnalités différentes
46. Entrées/Sorties tout ou rien
Généralités
CPU
Mémoire
Flash
Programme
Mémoire
SRAM
variables
Mémoire
EEPROM
config
Circuit
de RESET
Horloge
Bus
SPI
Bus
I2C
USART
JTAG
ADC
10bits
8 entrées
Contrôleur d’interruptions
Timers
2 de 8 bits
1 de 16 bits
Compare
/capture
PWM
I/O
Ports
Debug
47. www.geii.eu 47
Entrées/Sorties tout ou rien
Entrées/Sorties tout ou rien
entrées/sorties logiques, digitales ou numériques.
Un registre permet de préciser la direction de la broche : soit entrée,
soit sortie.
Sorties
Niveau de tension fixé : généralement à Vcc, la tension d’alimentation
du uC.
Courant maximum limité : très souvent entre 5mA et 40mA (et encore,
pas toutes les sorties actives en même temps).
Entrées
Sur trigger de Schmitt (petit cycle d’hystérésis autour de Vcc/2)
Entrée < Vcc/2 : niveau logique 0.
Entrée > Vcc/2 : niveau logique 1.
Possibilité assez souvent d’utiliser une résistance de pull-up (voire pull-
down) programmable.
48. Entrées/Sorties tout ou rien
Cas des ATmega Atmel
CPU
Mémoire
Flash
Programme
Mémoire
SRAM
variables
Mémoire
EEPROM
config
Circuit
de RESET
Horloge
Bus
SPI
Bus
I2C
USART
JTAG
ADC
10bits
8 entrées
Contrôleur d’interruptions
Timers
2 de 8 bits
1 de 16 bits
Compare
/capture
PWM
I/O
Ports
Debug
49. www.geii.eu 49
Entrées/Sorties sur les ATmega Atmel
Structure interne schématisée d’une entrée/sortie
Broche
Résistance
de Pull-Up
Direction
Buffer de
sortie
Mémoire de
sortie
Mémoire
d’entrée
50. www.geii.eu 50
Entrées/Sorties sur les ATmega Atmel
Registre de configuration générale
PUD = 0 pour autoriser l’usage des résistances de pull-up.
Registre de sortie
Ecriture du PORTx pour écrire en sortie si la broche est
configurée en sortie.
51. www.geii.eu 51
Entrées/Sorties sur les ATmega Atmel
Registre de direction
DDxn = 1 pour une sortie ; 0 pour une entrée.
Registre d’entrée
Permet de connaître l’état d’une entrée si la broche est
configurée en entrée.
53. www.geii.eu 53
Conversion Analogique/Numérique
Le convertisseur Analogique/Numérique (CAN) permet de
connecter des éléments analogiques
Il fournit en sortie une image sur N bits de la tension d’entrée.
sont les tensions de référence du convertisseur.
si alors
si alors
Tension la plus petite pouvant être convertie, le LSB :
Exemple de conversion avec et
si , on aura
ADC
Sortie S
sur N bits
LSB : Least Significant Bit
54. www.geii.eu 54
Technologie des CNA en bref
Technologie Flash
Conversion reposant sur la comparaison du signal d’entrée avec
des niveaux de tension répartis linéairement entre 0 et Vref et
fixés par un vaste réseaux de ponts diviseurs.
Pour N bits en sortie, il faut 2N comparateurs.
Conversion rapide mais coûteuse (grande surface de Silicium
requise).
Source de l’image (Analog Device. Document : MT-020.pdf)
55. www.geii.eu 55
Technologie des CNA en bref
Technologie à Approximations successives (type SAR)
Méthode reposant sur l’algorithme
consistant à trouver un nombre entre
0 et 100 = méthode dichotomique.
Il faut un cycle d’horloge par bits
de résolution :
Au lancement de la conversion, le bloc SHA mémorise la tension à
l’entrée (stockage dans une capacité).
A chaque cycle d’horloge, le système de contrôle estime la
grandeur de sortie par dichotomie en comparant le signal d’entrée à
la conversion en analogique de la sortie estimée.
Méthode assez lente mais peu coûteuse, raison pour laquelle on la
trouve dans les microcontrôleurs.
Source de l’image (Analog Device. Document : MT-021.pdf)
56. www.geii.eu 56
CAN dans un microcontrôleur
Partie CAN seule (hors multiplexage éventuel des entrées)
CAN de type SAR en général il possède donc une horloge
rythmant le processus d’approximations successives ( ici).
Différentes tensions de référence possibles :
issues d’une référence de tension interne ou externe,
issues des tensions d’alimentation du uC ( N < 10 bits).
Présence d’une sortie indiquant la fin de la conversion.
ADC
Sortie S
sur N bits
Fin conversion
Configuration
57. www.geii.eu 57
CAN dans un microcontrôleur
Qualité de la conversion très dépendante :
de la nature des références de tension :
bonne avec une référence interne ou externe,
résolution limitée à 10 bits si les références découlent de
l’alimentation du uC (amélioration possible avec certaines
précautions).
du design du PCB à cause du report du bruit numérique sur les étages
de conversion.
Avoir à l’esprit le niveau du LSB :
Temps de conversion dépendant :
de la résolution souhaitée (technologie SAR N bits N cycles),
de la fréquence maximale admissible pour
Temps entre 2 conversions successives/multiplexées :
dépend de l’impédance de la source.
58. www.geii.eu 58
CAN dans un microcontrôleur
Fonctionnalités spécifiques à certains microcontrôleurs
Prise en compte du résultat au moment d’une interruption :
la fin de la conversion déclenche une interruption possibilité de
lancer une conversion sans attendre le résultat.
Auto-conversions (mode auto trigger) :
la conversion est déclenchée périodiquement par un timer la
prise en compte du résultat se fait par interruption,
plus généralement, une condition spécifique sur un périphérique
peut lancer une conversion
le programme principal se limite à prendre en charge les
résultats de conversion lorsqu’ils apparaissent (par interruption).
Couplage de deux entrées simples pour former une entrée
différentielle.
Mise en veille du uC durant le processus de conversion pour minimiser
le bruit induit par son fonctionnement.
59. Conversion Analogique/Digitale
Cas des ATmega48 à 328
CPU
Mémoire
Flash
Programme
Mémoire
SRAM
variables
Mémoire
EEPROM
config
Circuit
de RESET
Horloge
Bus
SPI
Bus
I2C
USART
JTAG
ADC
10bits
8 entrées
Contrôleur d’interruptions
Timers
2 de 8 bits
1 de 16 bits
Compare
/capture
PWM
I/O
Ports
Debug
60. www.geii.eu 60
Synoptique du CAN des ATmega328
Multiplexeur permettant de choisir une
entrée parmi plusieurs.
Plusieurs références
possibles
CAN SAR 10 bits
Signal d’interruption
61. www.geii.eu 61
Registres associés au CAN des ATmega328
Choix du signal
de référence
Choix du signal
d’entrée
Entrées
externes
Capteur de
température
interne
Référence de
tension interne
ADLAR : Justification de la sortie
(voir description des registres de sortie)
62. www.geii.eu 62
Registres associés au CAN des ATmega328
Diviseur de fréquence pour fixer
l’horloge du CAN entre 50kHz et
200kHz pour la résolution maximale.
1 pour mettre en
fonction de le CAN.
Mettre à 1 pour lancer une
conversion.
Reste à 1 tant que la
conversion est en cours.
1 pour des conversions avec auto-
déclenchements (voir suite).
Mis à 1 à la fin d’une conversion. Retourne à
0 après traitement de l’interruption du CAN.
A mettre à 1 pour autoriser les interruptions à
l’issue d’une conversion. Carte avec un
quartz à 16MHz
63. www.geii.eu 63
Registres associés au CAN des ATmega328
Le convertisseur fournit un résultat sur 10 bits : ADC0 à ADC9.
ADC0 est le bit de poids faible (LSB) – ADC9 le bit de poids fort (MSB).
Ces 10 bits sont stockés dans ADCH (poids fort) et ADCL (registre de poids
faible). En C, on peut utiliser ADC sur 16 bits qui regroupe ADCH:ADCL.
Pour utiliser les 10 bits : mettre ADLAR à 0 et utiliser ADC (0 à 1023).
Pour se limiter à 8 bits, on élimine ADC1 et ADC0, les bits de poids faibles
de la conversion : il faut mettre ADLAR à 1 et utiliser ADCH (0 à 255).
64. www.geii.eu 64
Registres associés au CAN des ATmega328
Fonctionnalité d’auto-déclenchement
Choix de la source d’auto-déclenchement.
Bit associé à un autre
périphérique (Comparateur
Analogique) et pris en
compte seulement si l’ADC
est éteint.
Lorsque le bit ADATE (Auto Trigger Enable; registre ADCSRA) est à 1, la
source sélectionnée par ADTS2:ADTS1 déclenche les conversions on
récupère le résultat en gérant l’interruption associée au CAN.
65. www.geii.eu 65
Utilisation du CAN de l’ATmega328
Détermination du prescaler (bits ADPS) pour espérer une
résolution de 10 bits lorsqu’on utilise un quartz à 16MHz :
il faut
une seule possibilité puisqu’il faut prendre la valeur maximale
pour le prescaler.
Exemple de configuration des autres registres de l’ADC
Cahier des charges
Entrée sur ADC2.
Référence 1.1v
Résultat sur 10 bits.
Traitement du résultat par interruption.
67. www.geii.eu 67
Timers
Qu’est ce que c’est ?
Un compteur programmable pouvant être associé à
Un comparateur.
Un circuit d’horloge interne ou externe.
Un prescaler (diviseur de fréquence placé en amont).
Un postscaler (diviseur de fréquence placé en aval).
Utilité
Permet l’exécution à intervalle de temps régulier d’une
interruption.
Utilisable pour le comptage d’évènements externe.
Outil de mesure temporelle.
Autorise la génération d’un signal dont le rapport cyclique peut
être programmé (PWM = Pulse Width Modulation).
67
68. Timers
Cas des ATmega48 à 328
CPU
Mémoire
Flash
Programme
Mémoire
SRAM
variables
Mémoire
EEPROM
config
Circuit
de RESET
Horloge
Bus
SPI
Bus
I2C
USART
JTAG
ADC
10bits
8 entrées
Contrôleur d’interruptions
Timers
2 de 8 bits
1 de 16 bits
Compare
/capture
PWM
I/O
Ports
Debug
69. www.geii.eu 69
Timers
Les Timers des ATmega328
1 timer 8 bits (Timer0) avec PWM
1 timer 16 bits (Timer1) avec PWM
1 timer 8 bits (Timer2) avec PWM et entrée asynchrone
Timers des ATmega2560
Ajout de 3 timers 16 bits (Timer 3, 4, 5) avec PWM
69
70. www.geii.eu 70
Synoptique du Timer0 des AVR Atmel
Signaux
PWM
Horloge de comptage :
interne ou externe
Comparaison
Imposer une
butée au compteur.
Générer un
signal PWM.
Générer une
interruption.
Interruptions sur
comparaison
Interruption sur Overflow
Compteur du timer
71. Bus de communication
Inter composants
I2C et SPI
CPU
Mémoire
Flash
Programme
Mémoire
SRAM
variables
Mémoire
EEPROM
config
Circuit
de RESET
Horloge
Bus
SPI
Bus
I2C
USART
JTAG
ADC
10bits
8 entrées
Contrôleur d’interruptions
Timers
2 de 8 bits
1 de 16 bits
Compare
/capture
PWM
I/O
Ports
Debug
72. www.geii.eu 72
Bus SPI et I2C
Bus inter-composants
SPI : bus Motorola.
I2C : bus introduit par Philips.
Spécificités
SPI : nécessite la sélection préalable du composant ciblé par un
signal Chip Enable.
I2C : bus série avec adressage la première information qui
circule sur le bus est l’adresse du composant ciblée.
Au niveau du uC
Sur le bus SPI comme sur le bus I2C, le uC peut être maître ou
esclave.
72
73. www.geii.eu 73
Bus I2C
Utilisé par de très nombreux fabricants de composants pour s’interfacer avec
D’autres microcontrôleurs.
Des expandeurs de bus (entrée/sortie 8 bits).
Des convertisseurs A/N et N/A.
Des mémoires (RAM, EPROM, EEPROM, etc.).
Des récepteurs infra-rouge (télécommande RC5).
Des capteurs de température.
Des circuits audio (égaliseur, contrôle de volume, etc.).
Des drivers d'affichage LCD ou à LEDs.
Des décodeurs télétexte.
Des chargeurs de batterie.
Des contrôleurs d’alimentations.
Des PLL pour tuner HF Bus 2 signaux.
Des horloges temps réels (Real Time Clock).
Il exploite 2 signaux
SCL : le signal d’horloge du bus.
SDA : le signal de données bidirectionnel.
73
74. www.geii.eu 74
Bus I2C
Eléments de base de la communication I2C
Démarrage de la communication (START Condition)
Arrêt de la communication (STOP Condition)
75. www.geii.eu 75
Bus I2C
Interrogation d’un périphérique I2C
Envoi d’un bit de START.
Envoi de l’adresse du périphérique sur 7 bits.
Spécification d’une lecture (bit R/W à 1).
Le périphérique se signale par un accusé réception (Acknowledge).
Envoi d’un premier octet par le périphérique.
Accusé réception par le uC.
Envoi d’un octet par le périphérique.
Pas d’accusé réception par le uC.
Envoi d’un bit de STOP par le uC
76. www.geii.eu 76
Bus I2C
Ecriture sur un périphérique I2C
Initiation de la communication par l’uC.
Envoi de l’adresse sur 7 bits du périphérique ciblé par l’uC. Un 8ième bit
indique un ordre d’écriture.
Accusé réception du périphérique.
Ecriture d’un octet par l’uC.
Accusé réception par le périphérique.
Nouvelle écriture …avec accusé réception …
Fin de la communication signifiée par une condition STOP.
78. www.geii.eu 78
Bus I2C
… au niveau matériel
Les résistances Rp, indispensables, sont des résistances de
tirage au VCC
Cela permet d’exploiter des périphériques fonctionnant sous une tension
différente de celle du uC.
Les résistances Rs sont des résistances de protection
Protègent les périphériques entre eux contre les surtensions issues de
l’un d’eux.