Professional Documents
Culture Documents
Microcontrleurs
Prsente par : MEGHERBI Hassina
i
Chapitre 3 : Les Microprocesseurs ........................................................................................... 15
1 Architecture et constituants d'un microprocesseur ....................................................... 15
1.1 L'Unit Arithmtique et Logique (UAL) .............................................................. 15
1.2 Lunit de commande ........................................................................................... 15
1.3 Registres du microprocesseur ............................................................................... 16
2 Squencement interne pour l'excution d'instructions .................................................. 20
2.1 Phase 1 : Recherche de l'instruction traiter (cycle fetch) ................................... 20
2.2 Phase 2 : Dcodage de linstruction et recherche de l'oprande ........................... 20
2.3 Phase 3 : Excution de l'instruction (cycle dexcution) ..................................... 20
3 Le jeu d'instruction: ...................................................................................................... 21
3.1 Instructions de transfert......................................................................................... 21
3.2 Instructions arithmtiques..................................................................................... 22
3.3 Instructions logiques ............................................................................................. 22
3.4 Instructions de dcalage et de rotation.................................................................. 22
3.5 Instructions de comparaison ................................................................................. 22
3.6 Instructions de branchement ................................................................................. 22
3.7 Autres instructions spcifiques au microprocesseur ............................................. 23
4 Mode d'adressage .......................................................................................................... 23
4.1 Adressage implicite :............................................................................................. 23
4.2 Adressage immdiat (de niveau 0) :...................................................................... 23
4.3 Adressage registre :............................................................................................... 23
4.4 Adressage direct absolu (de niveau 1) : ................................................................ 23
4.5 Adressage indirect :............................................................................................... 24
4.6 Adressage index : ................................................................................................ 24
4.7 Adressage bas :.................................................................................................... 24
4.8 Adressage relatif : ................................................................................................. 24
5 Langage de programmation .......................................................................................... 27
5.1 Le langage machine (non-symbolique)................................................................. 27
5.2 Le langage d'assemblage (langage symbolique bas niveau) ................................. 27
5.3 Le langage volu (langage symbolique haut niveau).......................................... 27
6 Notion des Technologies RISC et CISC....................................................................... 28
ii
6.1 Les microprocesseurs CISC.................................................................................. 28
6.2 Les microprocesseurs RISC.................................................................................. 28
6.3 La technologie RISC contre celle de CISC........................................................... 29
Chapitre 4 : Gnralit sur les microcontrleurs ...................................................................... 31
1 Dfinition dun microcontrleur :................................................................................. 31
2 Les avantages du microcontrleur : .............................................................................. 31
3 Les inconvnients du microcontrleur :........................................................................ 32
1 Les familles des microcontrleurs ................................................................................ 32
4 Le choix du microcontrleur :....................................................................................... 33
5 Applications des microcontrleurs : ............................................................................. 33
6 Architecture dun microcontrleur : ............................................................................. 34
7 Modes de fonctionnement lectrique du microcontrleur : .......................................... 36
Chapitre 5 : Micro-Contrleur ATtiny 2313............................................................................. 37
1 Description du Microcontrleur ATtiny 2313 .............................................................. 37
2 Description des broches du C ATtiny 2313 : ............................................................. 41
3 ALU-Arithmetic Logic Unit (Unit Arithmtique et Logique): ................................... 42
4 Registre d'tat (SREG):................................................................................................. 44
5 Registres gnraux (General Purpose Working Registers).......................................... 45
6 Excution des instructions: ........................................................................................... 46
7 Les ports d'entres/sorties (Input/Output port): ............................................................ 46
7.1 Configuration des pins: ......................................................................................... 47
7.2 Utilisation des interrupteurs et boutons poussoirs ................................................ 48
8 Les modes de basse consommation (de sauvegarde de puissance)............................... 49
9 Mmoire de programme................................................................................................ 50
10 Mmoire de donne....................................................................................................... 50
10.1 La mmoire de donne interne SARM ................................................................. 50
10.2 La mmoire EEPROM.......................................................................................... 51
Chapitre 6 : Timers dans le microcontrleur ATtiny2313........................................................ 55
1 Gnralits sur le Timer/counter................................................................................... 55
2 Les timer/counter dans le C ATtiny 2313 .................................................................. 55
3 Circuit de slection du signal horloge........................................................................... 55
iii
4 Timer/counter0 8 bits: ................................................................................................ 56
5 Les registres du timer/counter0..................................................................................... 56
5.1 Le registre TCNT0 ................................................................................................ 56
5.2 Les registres OCR0A et OCR0B .......................................................................... 57
5.3 Les registres TCCR0A, TCCR0B......................................................................... 57
5.4 Le registre TIFR.................................................................................................... 58
5.5 Le registre TIMSK................................................................................................ 58
5.6 Unit de sortie de comparaison............................................................................. 59
6 Le fonctionnement du Timer/Compteur0 ..................................................................... 59
6.1 Les modes dopration du timer/counter0 ............................................................ 59
7 Programmation du timer/counter0 en mode normal ..................................................... 60
8 Programmation du timer/counter0 en mode CTC (Clear Timer on Compare match) . 60
9 La modulation de largeur dimpulsion (Pulse Width Modulation -PWM)................... 61
10 Programmation du timer/counter0 en mode fast PWM ............................................ 62
10.1 Fast PWM Mode avec TOP= MAX=0xFF (WGM02=0)..................................... 63
10.2 Fast PWM Mode avec TOP=OCR0x (WGM02=1) ............................................. 64
11 Programmation du timer/counter0 en mode Phase Correct PWM: .............................. 66
Bibliographie............................................................................................................................. 77
iv
Chapitre 1 : Gnralit sur les mmoires
1.1 Dfinition :
Une mmoire est un dispositif (circuit intgr, support magntique, etc.) qui
emmagasine les informations et les restitue la demande.
Les informations peuvent tre des instructions d'un programme, des donnes associes
ou des rsultats intermdiaires. Chaque mot est identifie par une adresse.
On ce limite dans ce cours par l'tude des mmoires semi-conducteurs.
Adresses
(n bits)
Mmoire
Donnes (m bits)
1
sont isoles). Les lignes de donnes vhiculent aussi bien les donnes stocker que les
donnes lus.
1.3 Caractristiques :
Format : reprsente le nombre de bits de la donne (m).
Nombre de cases mmoires : Nombre de donnes pouvant tre stockes (N).
N=2n (o n est le nombre de bits d adresse)
Capacit : reprsente le nombre total de bits peuvent tre stocks C=N x m.
Exemple : Calcul de la capacit dune mmoire.
Soit une mmoire de 8 bits de donnes et de 16 bits dadresse.
Format : m=8; Nombre de cases mmoires : N = 216 = 65536
Capacit : C = m N = 8 65536 = 524288 bits
Pour des raisons de simplification, on exprime la capacit :
en kilo-octets (Ko) 1 octet = 8 bits
1 Ko = 210 = 1024 octets
en mga-octets (Mo) 1 Mo = 220 octets = 1048576 octets
en giga-octets (Go) 1 Go = 230 octets = 1073741824 octets
en tera-octets (To) 1 To = 240 octets = 1099511627776 octets
Pour lexemple prcdent C = 524288 bits
C = 524288/8 = 65536octets = 65536/1024 = 64 Ko
Temps daccs : temps d'obtention d'une information contenue dans la mmoire
2
2 Les Diffrentes Types de Mmoires
On distingue deux grandes catgories de mmoires: les mmoires volatiles et le
mmoires non-volatiles.
Din Dout
CS
D
Q
R/W
Figure 5: Structure de base d'une cellule mmoire SRAM avec entres/sorties spares
Din/out
D Q
R/W CS
Figure 6: Structure de base d'une cellule mmoire SRAM avec entres/sorties non spares
3
soit l'aide d'un micro-condensateur (condensateur grille-substrat d'un
transistor MOS). La mmoire est dite DRAM, ou RAM dynamique.
Le transistor MOS fondamental comporte une srie de condensateurs parasites
figure 7.a, qui se rduise la plus importante, figure 7.b, celle du grille-substrat
qu'on l'appelle la condensateur de structure.
La DRAM possde une plus grande densit d'intgration, car un cellule mmoire
ncessite environ quatre fois moins de transistors que dans une mmoire SRAM. Sa
consommation sen retrouve donc aussi trs rduite. En contrepartie, la prsence de
courants de fuite dans le condensateur travers l'impdance d'entre contribue sa
dcharge. Ainsi, linformation est perdue si on ne la rafrachie pas priodiquement. Le
rafrachissement consiste en la lecture de l'information puis le rechargement du
condensateur de structure. Ce rafrachissement indispensable plusieurs consquences:
il complique la gestion des mmoires dynamiques car il faut tenir compte des
actions de rafrachissement qui sont prioritaires.
la dure de ces actions augmente le temps d'accs aux informations.
Dautre part, la lecture de linformation est destructive. En effet, elle se fait par
dcharge de la condensateur du cellule mmoire lorsque celle-ci est charge.
Donc toute lecture doit tre suivie dune rcriture.
En conclusion, les mmoires DRAMs, qui offrent une plus grande densit
d'information et un cot plus faible, sont utilises pour la mmoire centrale, alors que
les mmoires SRAMs, plus rapides, sont utilises lorsque le facteur vitesse est critique,
notamment pour des mmoires de petite taille comme les caches et les registres.
4
La ligne de La ligne de La ligne de
slection slection slection
du mot du mot du mot
5
Ces mmoires possdent les avantages de la PROM avec un plus qui est leffacement des
donnes par lutilisateur et la possibilit de la reprogrammer.
2.2.2 NOVRAM :
NOVRAM est l'association dans le mme botier :
dune EPROM et dune RAM de mme capacit. L'EEPROM permet de
raliser en moins de 10 ms une sauvegarde globale de la RAM. Cela permet
une sauvegarde du contenu de la mmoire en cas de coupure d'alimentation
A0
Decodeur
2
A1
3
D2 D1 D0
6
lectrique.
dune SRAM et dune pile lithium.
7
Les mots emmagasins
Les adresses du mmoire
dans la mmoire
An . A1 S1 . Sm
0 . 0 1 . 0
0 . 1 0 ... 0
1 . 1 0 ... 1
Figure 12: Le principe de l'utilisation d'une ROM pour raliser les fonctions logiques
8
Chapitre 2 : Prsentation Gnrale dun
Microordinateur
2.1 Le MicroProcesseur
Le microprocesseur est un circuit intgr (puce ou chip) charg d'interprter et
d'excuter les instructions d'un programme, de lire les donnes ou de sauvegarder les
rsultats dans la mmoire et de communiquer avec les units d'entres/sorties.
2.2 L'horloge
Une horloge est un systme logique, pilot par un oscillateur, qui met priodiquement
une srie d'impulsions calibres permettant la synchronisation du travail de tous les
9
lments du microprocesseur. Ces signaux priodiques dfinissent le cycle de base ou
cycle machine.
2.3 La mmoire
La mmoire a pour rle de stoker et restituer les instructions codes qui forment le
programme excuter et les donnes associes. Elle peut tre utilise pour stoker
temporairement les rsultats intermdiaires des oprations arithmtiques ou logiques.
10
donne est la longueur du mot vhicul (qui peut tre une donne ou une instruction).
Elle est gnralement utilis pour caractriser un micro-ordinateur.
3.1 Dfinition
Un mot machine est un groupe de bits traites et manipules par un -ordinateur de
largeur gale au largeur de bus de donne. Il peut tre une instruction d'un programme
ou une donne associe.
Un mot machine = Mot de donne ou mot dinstruction
11
Pour une opration ncessitant un seul oprande retirer de la mmoire on a le
format suivant :
Code op. adresse de loprande
Exemple : mot dinstruction 20bits
adresse de loprande (16bits)
0011 1000011010110001
code op. (4bits)
Le nombre de bits rserv pour le code opration dtermine le nombre dopration
possible quun ordinateur peut effectuer, dans cet exemple, on a 24=16 oprations
possibles diffrentes.
Dans le cas o lopration utilise plus dune seul oprande stocke dans la mmoire, le
format du mot dinstruction est :
Code op. Adresse de loprande 1 Adresse de loprande 2
Gnralement, la longueur du mot dans les -ordinateurs ne permet pas davoir le code
op. et ladresse de loprande dans un seul mot la fois.
Par exemple, pour un -ordinateur 8bits (largeur de bus de donne=longueur de mot
machine = 8bits) et de largeur de bus dadresse= 8bits, on va dcrire le format du mot
dinstruction en fonction du nombre doprande, se trouvant dans la mmoire,
ncessaire pour faire lopration en question.
12
Sur certaines microordinateurs les instructions sont toutes de mme longueur, sur
d'autre cette longueur peut varier avec le code opration.
4.1 Micro-contrleurs
Un microcontrleur se prsente sous la forme d'un circuit intgrs runissant tous les
lments d'une structure base de microprocesseur. Gnralement, ils contiennent:
- Un microprocesseur (CPU);
- De la mmoire de donnes (RAM ou EEPROM);
- De la mmoire programme (ROM, OTPROM, UVPROM ou EEPROM);
- Des Interfaces d'entres/sorties parallles;
- Des Interfaces sries (synchrone et asynchrone) pour le dialogue d'autre unit;
- Des compteurs programmables (timers) pour gnrer ou mesurer des signaux
avec une grande prcision temporelle;
- des CAN/CNA pour le traitement des signaux analogiques.
Ils sont en gnral utiliss pour contrler de simples machines (appareils
lectromnagers, lecteurs de carte puce...)
Exemple de circuits :
80C186XX (80186, 16 bits, Intel)
68HC11, 68HC12 (6809, 8 bits, Motorola)
68HC16 (68000, 16 bits, Mototrola)
C167XX (Infineon, ex Siemens)
13
56000 (Motorola)
14
Chapitre 3 : Les Microprocesseurs
15
l'instruction excuter peut tre utilis pour dfinir le pointeur sur la premire micro-
instruction du microprogramme, figure 2. En fonction du code opration le contenu
d'un compteur est initialis, puis celui-ci s'incrmente ensuite chaque cycle d'horloge.
Micro-commandes
vers les diverses units
participant l'excution de
Figure 2 : Principe du squenceur micro-programm
16
dcodeur utilise le registre instruction pour identifier l'action (ou le microprogramme)
entreprendre ainsi que les adresses des oprandes, de destination ou de saut. Le
programmeur n'a pas accs au registre instruction.
I.3.3 Accumulateur (Acc) :
L'accumulateur est un registre de l'unit arithmtique et logique. Il a de nombreuses
fonctions. Il peut contenir un des deux oprandes avant l'excution et recevoir le
rsultat aprs. Cela permet d'enchaner des oprations. Il peut servir de registre tampon
pour les oprations d'entres/sorties : dans certaines microprocesseurs c'est le seul
registre par lequel on peut changer des donnes directement avec la mmoire. Sa taille
est gale la longueur des mots en mmoire. Il possde souvent une extension (Q),
pour les multiplications, dcalages, divisions, etc. Le registre Acc est accessible au
programmeur et trs sollicit. Certains microprocesseurs possdent plusieurs
accumulateurs, par exemple, le 6800 et le 6502 possdent deux accumulateurs.
17
A de trs rares exceptions l'intrieur d'un programme on ne fait rfrence qu' des
adresses relatives ou virtuelles. Par contre l'unit centrale a besoin de connatre les
adresses physiques o se situent rellement instructions et donnes. Celles-ci
dpendent de l'endroit o a t charg le programme en mmoire, l'espace physique
occup par un programme pouvant ne pas tre contigu. Le rle des registres de base est
de permettre le calcul des adresses effectives. Un registre de base contient une adresse
de rfrence, par exemple l'adresse physique correspondant l'adresse virtuelle 0.
L'adresse physique est obtenue en ajoutant au champ adresse de l'instruction le contenu
du registre de base. Le registre de base est encore utilis quand le nombre de bits du
champ adresse ne permet pas d'accder toute la mmoire.
18
principales oprations lies la pile concernent l'ajout d'un lment dans la pile ou le
retrait, souvent nommes respectivement PUSH et PULL. Lorsqu'une donne est
enregistre dans la pile elle est place l'adresse qui suit celle du dernier mot stock.
Aprs l'opration le pointeur de pile est incrment. Lorsqu'un mot est retir de la pile
il correspond la dernire information qui y a t entre. Aprs l'opration le pointeur
est dcrment. Une pile est rserve l'usage de l'unit centrale, en particulier pour
sauvegarder les registres et l'adresse de retour en cas d'interruption ou lors de l'appel
d'une procdure. Le pointeur de pile est accessible au programmeur, ce qui est souvent
source d'erreur. Certaines machines sont dotes de plusieurs pointeurs de piles.
Vers le bus de
donnes externe
Registre tampon
de donnes
Vers le bus
Vers le bus de Signal d'adresses externe
commande horloge
19
2 Squencement interne pour l'excution d'instructions
Quel que soit le format de l'instruction et par consquent le nombre de champs adresse,
son traitement peut tre dcompos en trois phases.
20
inutile si l'instruction est un branchement. En effet, l'adresse de la prochaine
instruction se trouve dans le champ spcification adresse de l'instruction.
3 Le jeu d'instruction:
Il caractrise le microprocesseur. Mais les types fonctionnels sont identiques :
1) Instructions de transfert
2) Instructions arithmtiques
3) Instructions logiques
4) Instructions de dcalages, de rotations
5) Instructions de test et de comparaison
6) Instruction de branchement
7) Autres instructions spcifiques au microprocesseur
21
3.2 Instructions arithmtiques
Elles excutent les oprations arithmtiques (addition, soustraction et complmentation
2) sur le contenu de laccumulateur et/ou un oprande. Le rsultat est plac dans
laccumulateur. L'oprande peut tre une constante ou une valeur contenue dans un
emplacement mmoire.
22
3.7 Autres instructions spcifiques au microprocesseur
Par exemple, les instructions de transfert du contenu du registre d'tat dans
l'accumulateur, et inversement, ne rien faire et passer le temps, masquer quelques bits
du contenu de l'accumulateur.
4 Mode d'adressage
Le mode d'adressage indique comment le microprocesseur accde aux oprandes
ncessaires pour excuter une instruction.
Le mode est dfini soit par le code opration lorsque celui-ci impose un type
dtermin, soit par un code faisant partie du champ adresse.
Pour faciliter la programmation, il existe de nombreux modes d'adressage. On peut
distinguer 8 modes d'adressage fondamentaux, tableau 1.
23
4.5 Adressage indirect :
Le champ adresse (ou le mot suivant) contient l'adresse d'un pointeur : mot en mmoire
qui contient l'adresse effective de l'oprande.
24
L'adresse effective est donc obtenue en additionnant le contenu du compteur ordinal au
contenu du champ adresse de l'instruction. Ce type d'adressage est utilis par exemple
dans des instructions de branchement.
L'avantage principal de ce mode d'adressage est qu'il permet des branchements
efficaces, en minimisant le nombre d'octets utiliss.
Remarque:
Le calcul de l'adresse effective de l'oprande peut ncessiter quelques oprations
(addition par exemple). L'utilisation de certains modes d'adressage sophistiqus (le
68020 de Motorola dispose par exemple d'une cinquantaine de modes d'adressage) peut
donc augmenter le temps de traitement d'une instruction.
25
Type
Format de l'instruction Calcule de l'adresse effective de l'oprande
d'adressage
26
5 Langage de programmation
Un programme est constitu d'une suite organise d'instructions. Il peut tre crit dans
des langages divers, symboliques ou non, et de diffrents niveaux
27
facile apprendre, et dominer (C, Pascal, Fortran, Java,... etc.). Une fois dvelopp,
le programme en langage volu nest donc pas comprhensible par le
microprocesseur. Il faut le compiler pour le convertir en code machine comprhensible
par le microprocesseur. Cette opration est ralise par un logiciel spcialis appel le
compilateur.
Une instruction en langage volu sera traduite par le compilateur en une succession
d'instructions du langage machine donc un compilateur est un logiciel de taille plus
importante quun assembleur.
28
Un processeur RISC peut atteindre une vitesse d'excution jusqu' 70% plus rapide
qu'un CISC de mme frquence.
Depuis le P5 (pentium), les microprocesseurs utilisent des technologies empruntes de
la famille RISC.
Traitement X : Traitement X :
Instruction complexe
Instructions simples
Cycle
horloge
Une comparaison objective entre les deux technologies est prsente dans le tableau 2.
29
Technologie RISC Technologie CISC
30
Chapitre 4 : Gnralit sur les microcontrleurs
31
- Environnement de programmation et de simulation volus.
32
certains microcontrleurs des environnements de dveloppement intgrs contenant un
assembleur, un cross compilateur C et mme parfois un simulateur.
4 Le choix du microcontrleur :
Lorsquon dcide de dvelopper un nouveau produit base de C, puisque loffre est
trs vaste, plusieurs paramtres vont orienter notre choix vers un produit plutt quun
autre :
1) Le prix : il y a de grand cart de prix entre les produits, lis par exemple la
taille et au type de mmoire, ainsi qu la nature et le nombre de priphriques.
2) Les priphriques : on peut se demander si toutes les fonctions dcrites dans le
cahier des charges seront ralises par le C ou sil faut ajouter des
priphriques externes.
3) La taille des espaces mmoire : Lespace mmoire programme sera-t-il
suffisant pour lapplication ?
4) La consommation lectrique : dterminant pour de produits destins
fonctionner sur batterie.
5) Les outils de dveloppement de programmes : peut-on dvelopper en langage
volu ? Existe-t-il un environnement de dveloppement intgr (diteur,
assembleur, compilateur, simulateur/debugger) ?
6) Exprience/savoir faire.
33
6 Architecture dun microcontrleur :
On peut envisager le schma bloc gnral dun microcontrleur de la figure 1, en
sachant que certaines fonctions peuvent tre absentes dun type lautre.
34
3) Lhorloge est souvent un quartz entour de deux condensateurs, mais il peut
aussi tre ralis en interne par un circuit RC que lon peut calibrer lors de la
premire utilisation du microcontrleur.
4) Le chien de garde watchdog est un temporisateur particulier qui gnre,
dans un dlai prfix ou programm, une impulsion sur le reset du
microcontrleur. Son utilit est de permettre le redmarrage du microcontrleur
en cas de problme (exemple, la prsence dune boucle sans fin accidentelle).
5) Les Timers sont des temporisateurs ou compteurs programmables. Ils
permettent la gnration des impulsions calibrs ou des signaux PWM, et la
mesure du temps ou dvnements. Ils peuvent gnrer des interruptions et
saccompagner de pr-diviseur (prescaler).
6) Les interfaces spcifiques : Certain microcontrleurs possdent des entres
comparateur, ou encore des convertisseurs A/D et D/A trs utiles dans la
gestion des processus automatiss.
7) Les ports srie dentres/sorties permettent lchange de donnes entre le
microcontrleur et un priphrique bit par bit sur un fil unique, dune manire
squentielle et suivant un ordre prcis. Il y a deux types de liaison srie :
synchrone et asynchrone.
8) Les contrleurs de bus spciaux de communication sont parfois prsents par
exemple : UART, I2C, SSP, CAN, FlexRay, USB, Ethernet, ...etc. Ils rendent
le microcontrleur plus onreux mais ncessaires si lapplication est bas sur
un de ces bus.
9) Le contrleur dinterruptions est indispensable dans un microcontrleur.
Exceptionnels sont les cas o il ne faut pas envisager au moins un cas
durgence ou tenir compte dvnement asynchrones lexcution du
programme. Linterruption est un programme qui permet linterruption de
lexcution dun programme (mais pas dune instruction), pour raliser une
tche prioritaire gnralement de courte dure.
10) Les ports parallles dentres/sorties permettent lchange de donnes entre
le microcontrleur et un priphrique gnralement en 8 bits. Ils permettent de
recueillir des informations en entre (tats de capteurs) ou denvoyer des
35
signaux binaires en sortie pour commander des actionneurs et piloter des
modules de lenvironnement extrieur.
Les broches de ces ports (Les lignes dE/S ou encore le Pins) sont configurable
individuellement en entre ou en sortie.
La configuration ainsi que ltat logique de ces pins est effectue par des
oprations dcriture et de lecture dans diffrents registres associs chaque
port. On trouve gnralement :
- Un registre de direction pour une configuration en entre ou en sortie,
- Un registre de donne recopiant les tats logique de chaque pin de port
configur en entre,
- Un registre de donne contrlant le niveau logique de chaque pin de port
configur en sortie.
36
Chapitre 5 : Micro-Contrleur ATtiny 2313
37
- Timer/compteur 16-bit avec un diviseur de frquence et mode de
comparaison et d'acquisition spars
- 4 canaux PWM
- Comparateur analogique sur puce
- Un timer chien de garde programmable avec oscillateur interne
- USI-Universal Serial Interface
- USART en duplex Integral
- 3 ports parallles dentre/sortie (port A :3bit, port B : 8bits, et port D :
7bits) fournissant 18 Lignes d'E/S programmable.
Les caractristiques spciales de ce microcontrleur sont :
- debugWIRE On-Chip Debugging permet laccs en lecture ou criture de
toutes les mmoires et un contrle complet des tapes dexcution. Cela inclus
lexcution par tape (single step), run-to-cursor, setp-out et software break
instructions. Elle permet aux programmeurs de tester leur travail.
- programmation in-situ (In-System Programmable ou ISP) est une fonctionnalit
qui permet au microcontrleur dtre programmer ou reprogrammer alors quil
est plac en systme via un Port SPI (Serial Peripherical Interface)
- Sources d'interruptions externes et internes
- Low-power Idle, Power-down, and Standby Modes
- Circuit de dtection de chute de tension programmable (Programmable Brown-
out Detection Circuit)
- Oscillateur interne calibr
Les tensions de travail sont: 1.8 - 5.5V (ATtiny2313V)
2.7 - 5.5V (ATtiny2313)
La vitesse de fonctionnement est :
ATtiny2313V: 0 - 4 MHz @ 1.8 - 5.5V, 0 - 10 MHz @ 2.7 - 5.5V
ATtiny2313: 0 - 10 MHz @ 2.7 - 5.5V, 0 - 20 MHz @ 4.5 - 5.5V
Sa consommation lectrique typique est :
Mode Actif 1 MHz, 1.8V: 230 A
32 kHz, 1.8V: 20 A (including oscillator)
Mode de Power-down < 0.1 A at 1.8V
38
Le c ATtiny 2313 peut tre support par un bon nombre de programme et d'outils de
dveloppent de systmes comme : Compilateur C, Macro Assemblers, Program
Debugger/Simulators, In-Circuit Emulators, et des Kits d'Evaluation.
39
Figure 2. Les diffrents types de botiers du microcontrleur ATtiny 2313
40
2 Description des broches du C ATtiny 2313 :
Alimentation :
VCC : suivant les versions quand elles existent : Soit une alimentation variant de 4.5V
5.5V, soit une alimentation variant de 2.7V 5.5V. Et mme 1.8V pour certain
(suffixe V ou aucun suffixe).
GND : la masse : 0Volt.
: La broche de reset est une entr qui rinitialise le C. Elle est active par un
niveau logique bas qui doit avoir une dure opportune. Habituellement, le temps de
tourne autour de 50 ns. Des temps plus courts nassurent pas la gnration du
Comparateur analogique :
AIN0, AIN1 : Permet de comparer deux tensions et peut fonctionner simultanment
avec un Timer/compteur et dclencher une interruption.
Timer/compteur
OC0A , OC0B, OC1A, OC1B, OCP, T0, T1 : Permet de contrler, de comparer ou de
compter des temps.
Horloge
XTAL1 XTAL2 : Broche utilise par le quartz ou le rsonateur. Les circuits ATMEL
sont fournis avec les fusibles dhorloge rgls sur un oscillateur RC interne de
frquence 1MHz. Si lutilisateur veut utiliser ces broches (quand elles sont a usage
multiples) pour connecter un quartz ils doit configurer les fuses-bits. Ces broches ne
sont plut utilisables pour dautres fonctions, sauf changement des fusibles.
Transmission Srie USART
RXD, TXD, XCK, USCK, DO, DI, SCL : Dans le cas dune utilisation en port srie,
Les broches RXD et TXD ne sont plut utilisables pour dautre fonctions. XCK est une
clock pour les transmissions synchrones. DI (Data Input) entre de donne srie, DO
(Data Output) Sortie de donne srie. USCK : Three_wire mode Universal Serial
Interface Clock. SCL : Two-wire mode Serial Clock for USI Two-wire mode.
SERIAL PERIPHERICAL INTERFACE (SPI)
41
SCL(USCK), SCK : Permet de programmer les C ou dtablir des liaisons rapides
entre diffrents priphriques.
TWO-WIRE INTERFACE(I2C)
SCL(USCK), SDA : permet dtablir des liaisons courtes sur 2 fils entre diffrents C.
Equivalent au protocole I2C.
Interruptions
PCINT07 : interruptions extrieures permet de dclencher un sous-programme
quand la broche change dtat.
DebugWire On-Chip Debugging
Dw :Reset ou break pour le dbugage.
Les ports dentre/sortie :
Port A (PA2PA0), port B (PB7PB0), port D (PD6PD0) se sont des ports de E/S
bidirectionnel. Toutes les pattes du port ont des rsistances internes de rappelle pull-
up . Le buffer de sortie est en mesure de fournir jusqu 20 mA de courant, suffisant
pour piloter un afficheur LED. Les pattes sont en haute impdances quand une
condition de reset devient active, ou bien lorsque lhorloge nest pas active.
42
Figure 3. Les schma bloc du microcontrleur ATtiny 2313
43
4 Registre d'tat (SREG):
Il est dfinie par:
44
Notez bien :
Le registre d'tat change aprs chaque opration de l'ALU, voir la liste du jeu
d'instructions.
Lors de l'excution d'une routine d'interruption le contenu du registre d'tat ne
se sauvegarde pas et ne se restaure pas automatiquement, il faut les faire par
programme.
45
Figure 5: Les Registres X, Y et Z
46
Il ya trois ports dans le c ATtiny 2313: Port A (PA2..PA0) 3bits, Port B (PA7..PA0)
8bits, Port D (PD6..PD0) 7 bits, se sont des ports bidirectionnel
Pour la gestion de la communication avec les priphriques le c utilise trois types de
registres associss chaque port :
Registre de direction, not DDRx (Data Direction Register), indique la direction de
la donne, ou mieux, la direction que peut prendre chaque bit de la donne du port.
Registre de donnes, not PORTx, contient la donne de sortie envoyer.
Registre des PINs d'entre
d'entr (Input PIN Adresse Register),
), not PINx, sert acqurir
la donne entrer.
O x indique le nom du port / x={A,B,D}.
Les bits de la donnes d'un port sont appels les pins.
s. Chaque pin est dcrite par :
DDRxn, PORTxn, et PINxn; o x indique le nom du port / x={A,B,D} et n indique le
numro du pin.
47
On y trouve deux passeurs. Lun permet tout instant de lire ltat du pin en question.
Lautre permet d'imposer une valeur logique au pin, lorsqu'il est configur en sortie.
On y trouve aussi deux bascules. Chacune fait partie d'un registre 8 bit. L'une de ces
ce
bascules
les est le registre DDR.
DDR L'autre est le registre PORT.
Lorsque le bouton-poussoir
poussoir est press,
press, l'entre du contrleur reoit la valeur 0.
Lorsqu'il est ouvert, une rsistance est ncessaire pour qu'une valeur 1 soit
transmise l'entre. On l'appelle rsistance de rappel, ou pull-up
up resistor.
resistor
Sans cette rsistance, l'entre serait en l'air (=libre =non connecte=non relie). Or les
entre en circuit fabriqus en technologie C
C-MOS
MOS ont une impdance trs leve, leur
tat est donc indtermin lorsqu'elles ne sont pas relies. On observe facilement dans la
pratique qu'une entre en l'air chang
changee de valeur chaque instant, sous l'influence des
perturbations lectromagntiques ambiantes.
Avec ce schma, la valeur lue sur l'entre sera 0 lorsque le bouton est press (donc
actif) et 1 lorsque le bouton est relch.
Le fabricant de la famille des contrleurs AVR intgr une rsistance de rappel sur
le circuit intgr pour imposer la valeur logique 1 lentre lorsque celle-ci
celle est libre.
Ainsi, un bouton poussoir ou une interrupteur peut tre connect sans besoin de
rsistance externe.
La fonctionnalit
ionnalit correspondant l'tat des bits des registre DDR et PORT est donne
sur le tableau suivant :
48
DDRXn PORTXn Configuration du pinn du port X
0 0 Entre, Haute impdance
0 1 Entre, avec rsistance de rappel
1 0 Sortie, tat 0
1 1 Sortie tat 1
Exemple:
On veut mettre les pins 0 et 1 du port B au niveau haut, les pins 2 et 3 du port B au
niveau bas, et configurer les pins 4 7 en entre.
Si le pin 5 est au niveau haut mettre une variable x 33 sinon 0
Le programme en code C est le suivant :
#include<tiny2313.h>
Int x;
Void main (void)
{
DDRB=0x.;
While(1)
{ PORTB=0x;
If (PINB5==1) x=33;
Else x=0;
}
}
49
Dans le mode Standby, l'oscillateur Crystal/rsonateur est fonctionnel alors que les
autres lments ne le sont pas. Cela permet un dmarrage trs rapide avec une
consommation de puissance minimal
9 Mmoire de programme
Le c ATtuny 2313 contient une mmoire In-System programmable Flash (ISP Flash)
de 2 K octets pour stocker mes programmes. Comme les instructions de lAVR sont de
largeur 16 ou 32 bits, la mmoire Flash est organise en 1Kx16.
Ce type de mmoire peut tre reprogramm dans la puce travers un SPI Serial
peripheral interface ou par un programmeur de mmoire non-volatile conventionnel.
10 Mmoire de donne
Espace de 0000-001F est rserv pour les 32 registres usage gnral. Lespace qui
suit est rserv aux 64 registres standard dI/O dcrits dans le tableau registre
50
summary . Les 128 derniers emplacements mmoires sont rservs pour la mmoire
SRAM interne.
51
Bit 5-4 : EEPM1, EEPM0 (EEPROM Programmation Mode bits)
Les bits de mode de programmation dfinis quelle opration de programmation
entreprendre lorsque le bit EEPE est crit. Ces bits sont ignors si le bit EEPE est mis
1.
EEPM1 EEPM0 Temps de programmation Opration
0 0 3.4 ms Effacer et crire en une seule opration
0 1 1.8 ms Effacer seulement
1 0 1.8 ms crire seulement
1 1 - Rserver pour une utilisation ultrieur
52
lorsque le bit EEPE est mis 1, le CPU est arrt pour 2 cycles horloge avant que la
prochaine instruction ne sexcute.
Bit 0 : EERE (EEPROM Read Enable)
Le bit dautorisation de lecture lEEPROM est une sorte de demonde de lecture.
Lorsque ladresse est place dans le registre EEAR, le bit EERE doit tre mis pour
que la lecture aura lieu.
Lopration de lecture de lEEPROM seffectue en un seul cycle horloge, et elle ne
peut pas seffectuer si une opration dcriture est en cours et on ne peut pas changer le
contenu du registre EEAR. Donc on doit vrifier la valeur du bit EEPE qui doit tre =0
avant que la prochaine instruction ne sexcute.
53
10.2.2.3 Exemples de procdure en C pour la lecture et lcriture dans
lEEPROM
Void EE_READ (Var ,Adr) //Lire une donne dans lEEPROM dadresse Adr et la mettre
dans une variable Var
{
While (EECR & 0x02) ;//vrifier si EEPROM est prte
EEAR =Adr ; //mettre ladresse dans le registre EEAR
EECR |= 0x01 ; //mettre 1 le bit EERE
Var=EEDR ; //Lire la donne en la mettant dans la variable Var
}
Void EE_Write(Adr, Val) //Ecrire une donne val dans lEEPROM ladresse Adr
{
while (EECR & 0x02) ;
EEAR=Adr;
EEDR=Val;
EECR|=0x04;
EECR|=0x02;
}
54
Chapitre 6 : Timers dans le microcontrleur ATtiny2313
55
Tableau 1
CS02 CS01 CS00 Description
0 0 0 Arrter le timer/counter0
0 0 1 clkT0 =CK (Pas de division)
0 1 0 clkT0 =CK/8 (Division par 8)
0 1 1 clkT0 =CK /64 (Division par 64)
1 0 0 clkT0 =CK /256 (Division par 256)
1 0 1 clkT0 =CK /1024 (Division par 1024)
1 1 0 clkT0=T0 (Le timer0 est synchroniser sur front descendant)
1 1 1 clkT0=T0 (Le timer0 est synchroniser sur front montant)
4 Timer/counter0 8 bits:
Ce timer est caractris par :
Deux units indpendantes de sortie de comparaison (Output Compare Units) ;
Deux registres tampons de sortie de comparaison (Double Buffered Output
Compare Registers) ;
Remise zro du timer sur Compare Match ;
Phase Correct Pulse Width Modulator (PWM);
Priode de PWM variable ;
Gnrateur de frquence ;
Trois sources dinterruptions indpendantes (TOV0, OCF0A, and OCF0B).
Le schma block simplifi du timer/counter0 est illustr sur la figure 2. Sur la figure 3,
on dcrit les registres du timer/counter0.
56
5.2 Les registres OCR0A et OCR0B
Ces registres sont les registres de sortie de comparaison (Output Compare Registers).
Leurs contenues sont constamment compares avec celui du TCNT0. Le rsultat de
comparaison est utilis par le gnrateur de forme donde (Waveform Generator to
generate) pour gnrer un signal PWM ou une sortie frquence variable sur les pins
OC0A and OC0B (Output Compare pins).
Les bits COM0A1-0 (les bits 7-6 du registre TCCR0A) et les bits COM0B1-0
(les bits 5-4 du registre TCCR0A) sont les bits qui contrlent le comportement
du pin de sortie de comparaison (OCA) et (OCB), respectivement, tableau 3 -4.
Les bits FOC0A et FOC0B (les bits 7-6 du registre de contrle TCCR0B) sont
actifs seulement si les bits WGM02-0 spcifient un mode non-PWM (mode
normale ou mode CTC). Dans les modes PWM, ils doivent tre mis zro. La
57
mise 1 de ces bits entraine le forage dune comparaison immdiate dans
lunit de gnration de forme dondes. Cela veut dire que la comparaison se
fait normalement selon les valeurs des bits COM0A1-0 et COM0B1-0 mais
sans la gnration daucune dinterruption et sans remise zro du TCNT sur
compare match en mode CTC. Ces bits sont est toujours lu comme zro.
58
5.6 Unit de sortie de comparaison
Le schma synoptique de lunit de sortie de comparaison est donn sur la figure 4. Le
gnrateur de forme d'onde emploi les bits COM0A1-0 (respectivement COM0B1-0)
pour dfinir l'tat du registre tampon OC0A (respectivement OC0B).
La direction des pins PB2/OC0A et PD5/OC0B est toujours contrle par le registre de
direction des donnes (DDRx). Pour slectionner la sortie de comparaison OC0x
provenant du gnrateur de forme donde il faut que lun des bits COM01-0 soit mis
1. Avant que la valeur de OC0x soit disponible sur le pin, il faut configurer ce pin en
sortie en mettant un 1 dans le bit correspondant du registre de direction de donnes.
Les registres OCR0x sont double tampon (double buffered) seulement en modes
PWM. Dans les modes non-PWM la caractristique du double buffering est
dsactiver. Le double buffering synchronise la mise jour du registre OCR0x ce qui
prvient dobtenir des impulsions PWM de longueur impaire et non-symtrique. Ce
fonctionnement est trs simple : lorsque le double buffering est valid le CPU a accs
au registre tampon de OCR0x et dans le cas contraire le CPU a accs directement au
registre OCR0x.
6 Le fonctionnement du Timer/Compteur0
Le compteur TCNT0 est le cur du timer. Son signal dhorloge clkT0 peut tre
lhorloge interne, via le pr diviseur (prescalar), une horloge externe sur la broche T0
(PD4) ou inactif quand aucune source d'horloge n'est choisie.
La valeur de ce registre est incrmente et compare en permanence celle du registre
OCR0A (respectivement OCR0B). Le rsultat de comparaison est utilis par le
gnrateur de forme donde pour produire une sortie PWM ou une sortie frquence
variable sur le pin OC0A (respectivement OC0B).
59
0 affectent la squence de comptage contrairement aux COM0x1-0. Linversion ou non
de la sortie PWM gnre est contrl par les bits COM0x1-0. Pour les non-PWM
modes ces bits contrlent si la sortie doit tre mise 1, mise 0, ou inverser en cas
dgalit (compare match).
Les modes dopration du timer/counter0 sont :
Le mode normal ;
Le mode CTC (Clear Timer on Compare Match) ;
Le mode Phase correct PWM (pulse width modulation- modulation de largeur
dimpultion)
Le mode fast PWM
60
vnements externes. Le schma bloc du timer/counter0 en mode CTC et son
diagramme temporel sont prsents sur la figure 9 et figure 10, respectivement.
Une interruption peut tre gnrer chaque fois la valeur de TCNT0 atteint la valeur
TOP en utilisant le drapeau OCF0x. Si linterruption est valide, la routine de service
peut tre utilise pour changer la valeur TOP. Cependant, le changement de TOP une
valeur proche du BOTTOM lors du comptage du TCNT0 avec un petit facteur de
division ou sans division doit tre fait avec prcaution, car il n y a pas de
caractristique de double buffering dans ce mode. Si une nouvelle valeur crite dans
le registre OCR0x est infrieur la valeur courante de TCNT0, le compteur va rater le
Compare Match et continu son comptage jusqu la valeur maximale (0xFF) puis
revient zro avant que le Compare Match peut se produire.
La modulante : +
Comparateur
Le signal PWM
-
La porteuse :
61
La modulation de largeur dimpulsion est une technique trs utilise dans le domaine
de tlcommunication et le contrle de puissance (On peut par exemple, contrler la
luminosit des LEDs, mlanger les couleurs en utilisant des LEDs RGB, contrler la
vitesse dun moteur DC, gnrer des signaux audio, gnrer un signal modul pour par
exemple commander une LED infra-rouge dune tlcommande). Elle est
principalement utilise pour contrler la quantit de lnergie fournir au dispositif
lectrique par fonctionnement tout ou rien. Ainsi, la valeur moyenne de lnergie reue
par le dispositif lectrique dpond du rapport cyclique.
Le rapport cyclique pour un signal carr, not est dfini comme tant le rapport
entre la dure niveau haut (tH) du signal et sa priode (T).
62
Si COM0x1 :0=2, le mode de sortie de comparaison est sans inversement
(mode non-inverted fast PWM) o la sortie OC0x est :
mise 0(clear) si TCNT0=OCR0x
mise 1(set) si TCNT0=TOP
Si COM0x1 :0=3, le mode de sortie de comparaison est avec inversement
(mode inverted fast PWM) o la sortie OC0x est :
mise 1(set) si TCNT0=OCR0x
mise 0(clear) si TCNT0= TOP
Remarque 1 :
Il faut noter que les valeurs extrmes du registre OCR0x reprsentent des cas spciaux
dans la gnration du signal PWM.
Si OCR0x =BOTTOM, le signal la sortie OC0x est form dun pic troit dans
chaque (MAX+1) cycle horloge du timer0.
Si OCR0x = MAX, le signal la sortie OC0x sera constant de niveau haut dans
le mode non-inverted fast PWM et constant de niveau bas dans le mode
inverted fast PWM.
4=TOP
63
= =
256 256
=
. 256
N reprsente le facteur de division (1, 8, 64, 256 ou 1024).
Le rapport cyclique est dtermin par la valeur mettre dans le registre OCR0x. Cette
valeur varie de 0 255 et peut tre obtenue a partir de la formule suivante :
Rapport cyclique= 100 mode Non-Invers
Rapport cyclique = 100 mode Invers
Remarque 2 :
Le Timer0 peut gnrer des signaux PWM sur deux pins diffrents. Ces
signaux possdent la mme frquence mais diffrent dans le rapport cyclique.
La gnration d'un signal PWM dans ce mode se fait en deux tapes :
Programmation du Timer0 pour gnrer un signal de frquence
spcifie.
Dtermination de la valeur fixe mettre dans le registre de comparaison
OCR0x qui permet de dfinir le rapport cyclique.
64
Dans ce mode, le compteur TCNT0 compte du BOTTOM jusqu TOP=OCR0A puis
recommence partir du BOTTOM. Selon le cas spcial (OCR0x=TOP) quon a cit
dans la remarque 1, on a
Si COM0A1 :0=2, le signal gnr sur OC0A est constant de niveau haut (ce nest pas
signal PWM).
Si COM0A1 :0=3, le signal gnr sur OC0A est constant de niveau bas (ce nest pas
signal PWM).
La seule combinaison utilisable est :
COM0A1 :0=1 o le signal gnr sur OC0A sinverse chaque cycle horloge du
timer0.
Dans ce cas la frquence du signal gnr sur OC0A est :
_
=
2. . (1 + 0)
65
Dtermination de la valeur fixe mettre dans le registre de comparaison
OCR0B qui permet de dfinir le rapport cyclique.
66
Si OCR0x = MAX, le signal la sortie OC0x sera constant de niveau haut
dans le mode non-inverted PWM et constant de niveau bas dans le mode
inverted PWM.
2) On peut avoir des transitions sans quune galit ne se soit produite. Il ya deux
cas :
Lorsque OCR0x=MAX et si la valeur de OCR0x change au moment o
TCNT0= MAX, figure 13. La sortie OC0x est programme selon le cas
dune galit lors de dcomptage.
Lorsque le timer0 commence le comptage partir dune valeur suprieur
la valeur de registre OCR0x. le signal la sortie OC0x est programme
selon ce qui a due ce pass.
67
Canal A
68
Le registre de contrle TCCR0A
Le registre du timer/counter0
69
Tableau 2
Tableau 3. Fonctionnalits des bits COM0A0-1 dans les diffrentes modes dopration du timer/counter0
Mode dopration COM0A1 COM0A0 Description
0 0 OC0A dconnecte (opration du port normale)
0 1 Inverser OC0A sur Compare Match
Mode normal et CTC
1 0 Mise 0 de OC0A sur Compare Match
1 1 Mise 1de OC0A sur Compare Match
0 0 OC0A dconnecte (opration du port normale)
- WGM02 = 0: OC0A dconnecte (opration du port
0 1 normale).
- WGM02 = 1: Inverser OC0A sur Compare Match
Mode Fast PWM
- Mise 0 de OC0A sur Compare Match
1 0
- Mise 1 de OC0A sur TOP
- Mise 1 de OC0A sur Compare Match
1 1
- Mise 0 de OC0A sur TOP
0 0 OC0A dconnecte (opration du port normale)
- WGM02 = 0: OC0A dconnecte (opration du port
0 1 normale).
- WGM02 = 1: Inverser OC0A sur Compare Match
- Mise 0 de OC0B sur Compare Match lors dun
Mode Phase correct comptage.
1 0
PWM - Mise 1 de OC0B sur Compare Match lors dun
dcomptage.
- Mise 1 de OC0B sur Compare Match lors du
comptage.
1 1
- Mise 0 de OC0B sur Compare Match lors de
dcomptage.
70
Tableau 4. Fonctionnalits des bits COM0B0-1 dans les diffrentes modes dopration du timer/counter0
Mode dopration COM0B1 COM0B0 Description
0 0 OC0B dconnecte (opration du port normale)
0 1 Inverser OC0B sur Compare Match
Mode normal et CTC
1 0 Mise 0 de OC0B sur Compare Match
1 1 Mise 1de OC0B sur Compare Match
0 0 OC0B dconnecte (opration du port normale)
0 1 Rserve
- Mise 0 de OC0B sur Compare Match
Mode Fast PWM 1 0
- Mise 1 de OC0B sur TOP
- Mise 1 de OC0B sur Compare Match
1 1
- Mise 0 de OC0B sur TOP
0 0 OC0B dconnecte (opration du port normale)
0 1 Rserve
- Mise 0 de OC0B sur Compare Match lors dun
comptage.
1 0
Mode Phase correct - Mise 1 de OC0B sur Compare Match lors dun
PWM dcomptage.
- Mise 1 de OC0B sur Compare Match lors du
comptage.
1 1
- Mise 0 de OC0B sur Compare Match lors de
dcomptage.
71
Figure 5. Timer/counter0 en mode normal.
72
Figure 7 Connexion du ATtiny 2313 un oscillateur quartz.
73
Figure 9 Timer/counter0 en mode CTC.
74
Figure 11 Timer/counter0 en mode Fast PWM (WGM02=0).
75
Figure 13 Digramme temporel du timer/counter0 en mode phase correct PWM (WGM02=0).
76
Bibliographie
Datasheet - ATtiny2313 - Atmel Corporation :
www.atmel.com/images/doc2543.pdf
Christian Tavernier, Microcontrleurs AVR : des ATtiny aux ATmega - Description et mise en
uvre, Dunod, Collection Technique et Ingnierie 2me dition, 2013.
Florian Schaeffer, Programmation en C des microcontrleurs RISC AVR, traduction Jean-Paul
Brodier : Publitronic-Elektor International Media, cop. 2009.
Richard H. Barnett, Sarah A. Cox, Larry D. O'Cull, Embedded C Programming and the Atmel
AVR, Thomson Delmar Learning, 2002.
Richard H. Barnett, Embedded C Programming And The Atmel AVR, Delmar Cengage
Learning: 2nd edition, 2006.
77