Professional Documents
Culture Documents
Semestre 2008
1ère partie
P. Pouletaut
J.-F. Lerallut
MICROPROCESSEURS
INTERFACES ET LOGICIELS DE BASE
NOTES DE COURS
• Sommaire
Bus Dispositifs
Programmes
Mémoire Entrées /
Données Sorties
• Organisation de la mémoire
zones de programmes (instructions) et
zones de données (valeurs numériques)
¾ Architecture Von Neumann : instructions et données dans une seule mémoire
architecture dépréciée, lent
¾ Architecture Harvard : instructions et données dans deux mémoires séparées
architecture très utilisée car plus rapide (l’UC a accès simultanément à
l’instruction et aux données associées), structure interne plus complexe
Mémoire
programme
UC
Mémoire
données
Rapidité
Cache
Mémoire principale
• Types de logiciel
¾ Noyau :
exécuteur de programme, cœur du système exécutif
¾ Système d’exploitation :
gestionnaire de la mémoire et du programme d’exécution
(ex. : IRIX, MacOS, Windows 2000, Unix, Linux)
¾ Programme d’application :
traitement de texte, tableur, lecteur PDF, ...
(ex. : OpenOffice, Word, Gimp, Adobe Acrobat, ImageJ)
• Microprocesseur
¾ Ensemble d’UCs réunis dans une seule puce
Pentium, AMD, Athlon
• Microordinateur
¾ Système avec pour UC un microprocesseur
PC, station de travail
• Microcontrôleur
¾ Système avec tous les composants d’ordinateur réunis dans une puce (VLSI)
Very Large Scale Integration (+ 100 000 transistors)
Motorola 68HC12, Microchip PIC 16F628, Atmel AVR,
Parallax BASIC STAMP, ST6 de STMicroelectronics
68HC05
68HC11 68HC08
68HC12
HCS12
• Logiciel
* Jeu de 209 instructions
* Instructions du microcontrôleur parent 68HC11
* Transfert de données
* Opérations logiques et arithmétiques
* Appel de sous-programmes
* Logique floue
* Test et branchement
* Instructions pour données 8 ou 16 bits
1.4 Applications
• Détecteur d’obstacles
• Quelques liens
¾ Livres
Embedded systems design and applications with the 68HC12 and HCS12,
Steven F. Barrett, Daniel J. Pack, Pearson/Prentice Hall, 2004,
TK7895.E42 BAR
¾ Internet
http://microcontrollerssolutions.info/
http://www.microchip.com
http://www.freescale.com/
NF15 Chapitre 1 : Introduction aux microcontrôleurs Philippe Pouletaut © UTC 2007 15
1.5 Tests
• Sommaire
Mémoire
contrôle
et adresse
donnée instruction
entrée
UAL contrôle Contrôle
sortie
Horloge
état
Adresses
HCS12 Mémoire
Données
E
R/W
LSTRB
• Décodage d’adresse
Portion de la carte HCS12 utilisée en TP
2.5 Applications
• Entrées :
¾ Interrupteurs
¾ Claviers
• Sorties :
¾ LED
¾ LCD
2.6 Tests
• Sommaire
3.1 Introduction
3.2 RAM
3.3 ROM
3.4 PAL
3.5 Applications
3.6 Tests
3.1 Introduction
• Types principaux :
¾ RAM (random access memory)
• mémoire volatile
• écriture ou lecture
• temps d’accès plus rapide
• utilisation pour stockage temporaire de donnée
¾ ROM (read only memory)
• mémoire non volatile
• lecture seule
• temps d’accès plus lent
• utilisation pour stockage d’instructions et de
constantes pendant l’exécution de programmes
3.1 Introduction
3.2 RAM
• Temps d’accès : adresse (tADDR), sélection (tCS), sortie (tOE)
3.2 RAM
• Cycle de lecture du HCS12 (bus multiplexé)
3.2 RAM
• Cycle d’écriture d’une RAM 35 ns
3.3 ROM
• Fusible
• Contrôle
3.3 ROM
• Matrices de OU et ET
3.4 PAL
• Procédure de programmation de PAL
Vérification du circuit
Programmation du circuit
Test du circuit
3.4 PAL
• Options de sortie
• Programmation de PAL
3.5 Applications
• AmPAL16L8
10 sorties
macrocellule logique
en sortie
3.5 Applications
• Exemple de composants décrits en VHDL
(Very high-speed integrated circuit Hardware Description Language)
¾ Porte ET à 2 entrées
ENTITY TwoStateNand2 IS
PORT (a, b, outen: IN BIT; c: OUT BIT);
END TwoStateNand2;
ARCHITECTURE show OF TwoStateNand2 IS
SIGNAL temp: BIT;
BEGIN
CALCUL : PROCESS
BEGIN
temp <= a NAND b;
IF outen='1' THEN c <= temp;
ELSE c <= '1';
END IF;
END PROCESS CALCUL;
END show;
• Sommaire
4.1 CNA
4.2 Introduction au CAN
4.3 Transducteur
4.4 Caractéristiques du CAN
4.5 Technologies du CAN
4.6 Cas du HCS12
4.7 Tests
4.1 CNA
R
Vs = − (a 0 + 2a 1 + 4a 2 + 8a 3 ) E
R0
R
Vs = − (a 0 + 2a 1 + 4a 2 + 8a 3 ) E
32 R0
• Caractéristiques
¾ Résolution (8 à 16 bits)
¾ Linéarité mieux que ½ LSB
¾ Précision
¾ Temps d’établissement (settling time)
4.1 CNA
• CNA MC1408L8
• Montage standard
2n -1
signal analogique
temps
valeurs
0 échantillonnées et
codées sur n bits
• Caractéristiques
Grandeur
U1 U2
physique
Amplificateur- CAN
X Capteur Additionneur Filtrage
K, B
U2 = K U1 + B
K : gain
B : offset
• Calibration pour avoir la pleine échelle en entrée du CAN
4.3 Transducteur
• Filtrage anti-repliement
fM : fréquence maximale du
signal d’entrée
Filtre fE : fréquence
d’échantillonnage du CAN
repliement
tension analogique
• Caractéristiques
¾ tensions de référence en entrée : VRL (basse), VRH (haute)
¾ nombre n de bits
¾ résolution R en tension
R = (VRH – VRL) / 2n
¾ gamme dynamique en dB
G = 20 log 2n
¾ fréquence d’échantillonnage fE
fE > 2 fM (théorème de Shannon)
¾ temps de conversion
¾ débit binaire
D = n fE
¾ isolement analogique / numérique
¾ réglage de gain et de décalage
• Types principaux
¾ Approximations successives
¾ Intégration
¾ Comptage
¾ Parallèle
Vn Comparateur
Vréf
Convertisseur
numérique-analogique
Start
Contrôleur
Sortie série numérique
Algorigramme Chronogramme
Vs Pleine échelle
Demi-échelle
Vref T2
Vx = Quart-échelle
T1
t
T1 fixé T2 mesuré
NF15 Chapitre 4 : Convertisseurs CNA et CAN Philippe Pouletaut © UTC 2007 15
Vn Comparateur
Vréf
Convertisseur
numérique-analogique
Start
Générateur de rampe
Sortie série numérique
¾ 2n-1 comparateurs
¾ Conversion rapide
¾ Coût élevé
• Brochage
¾ Broches AN0 à AN7 (module AD0)
¾ Broches AN8 à AN15 (module AD1)
¾ Broche AN7 ou AN15 configurable en signal de déclenchement
¾ VRH et VRL : tensions de référence haute et basse
¾ VDDA et VSSA : tension d’alimentation et masse pour le convertisseur.
NF15 Chapitre 4 : Convertisseurs CNA et CAN Philippe Pouletaut © UTC 2007 19
¾ ATDxCTL2 ($62) :
- mise en service du convertisseur (ADPU)
- mise à zéro des drapeaux (AFFC)
- mode d’attente (AWAI)
- validation et polarité du déclenchement (ETRIGE, ETRIGP)
- validation et drapeau d’interruption (ASCIE, ASCIF)
¾ ATDxCTL3 ($63) :
- suspension de la conversion (FRZ0, FRZ1)
- utilisation cyclique des 8 registres de résultats (FIFO)
- nombre limite de conversions de 1 à 8 (S8C, S4C, S2C, S1C)
¾ ATDxCTL5 ($65) :
- choix du mode de conversion (simple, continu, multi-canaux)
(SCAN, MULT)
- sélection du canal à convertir (CC, CB, CA)
- résultat signé ou non (DSGN), justifié à droite ou à gauche (DJM)
¾ Programme principal
INCLUDE 'mc9s12dp256.inc‘
; data
ORG $1200
DATA: RMB 40
; code section
ORG $1000
Entry:
CLR COPCTL ; clear watchdog
LDS #$3FFE ; initialize stack pointer
JSR OPENAD0
JSR MEASURE
BGND
• Sommaire
• Générateur d’horloges
• Générateur d’horloges
¾ choix de l’horloge du quartz externe (4 MHz), ou d’une fréquence
multiple issue d’une boucle à verrouillage de phase (PLL)
registre CLKSEL ($39)
• Le HCS12 a un module
standard TIM
qui comprend :
¾ 8 canaux de capture
d’entrée et de comparaison
de sortie (port T)
¾ 1 accumulateur pulsé 16
bits
¾ 1 compteur 16 bits
• Le MC9S12DP256B
comprend un module
timer à capture renforcée
(ECT) :
¾ Caractéristiques
principales du TIM
¾ 1 tampon 16 bits pour
chaque entrée de capture
¾ 2 accumulateurs pulsés 16
bits
¾ 1 décompteur 16 bits avec
prédiviseur 4 bits
¾ 4 compteurs de retard pour
immuniser face au bruit
• Registres de comptage :
registre 16 bits TCNT, concatenation de TCNTHi ($44) et
TCNTLo ($45)
• 2 modes d’opération :
¾ Mode compteur d’évènements
L’accumulateur PACA peut opérer dans ce mode et compter le
nombre d’évènements sur l’entrée PT7. L’accumulateur PACB et les 4
accumulateurs 8 bits n’opèrent que dans ce mode.
¾ Mode accumulateur commandé
L’accumulateur PACA peut opérer dans ce mode. Tant que l’entrée
PT7 est active, le compteur PACA est synchronisé par une horloge du
bus prédivisée par 64.
5.6 Applications
• Sommaire
• Fonctionnement
IC
mode mémoire
(latch)
• Fonctionnement
IC
mode
file d’attente
(queue)
• Fonctionnement
PA 8 bits
mode
mémoire
(latch)
• Fonctionnement
PA 16 bits
mode
mémoire
(latch)
6.4 Tests
• Sommaire
• Caractéristiques
¾ Pas de ligne d’horloge, utilisation d’horloge interne de même
fréquence
¾ Transmission des données par série de bits (8 ou 9), avec bit de
start, bit de parité et bit de stop
¾ Les bits de start et de stop servent à la synchronisation du transfert
¾ Ligne de transmission entre émetteur (TxD) et récepteur (RxD)
HCS12 Périphérique
TxD RxD
RxD TxD
GND GND
• Fonctionnement
¾ Exemple de transmission d’une donnée %11010110
au format NRZ (non retour à zéro)
TxD/RxD RxD/TxD
GND GND
TxD RxD
RxD TxD
GND GND
• Parité
¾ Détection d’une erreur de transmission
• Calcul du bit de parité de la donnée
• Ajout du bit à la fin de la donnée émise
• Calcul du bit de parité de la donnée à la réception
• Si bit de parité calculé à la réception différente de celle lue à la
suite de la donnée, détection d’une erreur de transmission
• Parité
¾ Exemple simplifié d’une parité paire pour un message 3 bits (m1m2m3)
• Le bit de contrôle k qui est ajouté à l’émission est en fait :
m1 m2 m3 k
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0 k = m1 ⊗ m2 ⊗ m3
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 1
• Architecture de l’émetteur
• Architecture du récepteur
; programme
INCLUDE 'mc9s12dp256.inc’
ORG $1300
DATA FCB ‘HCS12’,$0D,$0A
EOT FCB $04; end of text
RDATA RMB 8
ORG $1000
Entry: LDS #$3FFF; set up stack pointer
BSR SCI1_INIT
LOOP: BSR SCI1_TRANSMIT
BSR SCI1_RECEIVE
CPX #EOT
BNE LOOP
BGND
7.3 Exemples
• Programme d’émission-réception de chaîne ASCII sur SCI1
SCI1_INIT: MOVB #$08,DDRS; PS3/TxD1 as output PS2/RxD1 as input
MOVB #$0D,SCI1BDL; baud rate to 9600 if Bus clock = 2 MHz
MOVB #$00,SCI1BDH
MOVB #$02,SCI1CR1; eight-bit data, disable LOOP, parity, parity odd, Idle after start
MOVB #$0C,SCI1CR2; no interrupt, transmitter enable, receiver enable
LDAA SCI1SR1; 1st step to clear TDRE and RDRF
STAA SCI1DRL; 2nd step to clear TDRE and RDRF
LDX #DATA
LDY #RDATA
RTS
SCI1_TRANSMIT: LDAA 1,X+
STAA SCI1DRL; load data register
WAIT_TDRE: BRCLR SCI1SR1,$80,WAIT_TDRE; wait for TDRE flag to 1
STAA SCI1DRL; clear TDRE flag
RTS
SCI1_RECEIVE: BRCLR SCI1SR1,$20,SCI1_RECEIVE; wait for RDRF flag to 1
LDAA SCI1DRL
ANDA #$7F ; mask parity
STAA 1,Y+; store data register
RTS
NF15 Chapitre 7 : Interface série asynchrone Philippe Pouletaut © UTC 2007 18
7.3 Exemples
• Utilisation de la liaison série COM1 du PC vers SCI0
¾ Sous-programmes com1_routines.inc :
ONSCI : initialisation du module SCI0
(9600 Baud, 8 bits, sans parité)
OUTSTRG : envoi à l’écran du PC d’une chaîne de caractères
pointée par X et terminée par le caractère EOT ($04)
OUTCRLF : retour à la ligne du curseur de l’écran du PC
OUTPUT : envoi d’un caractère contenu dans A
INPUT : saisie dans A d’un caractère au clavier
7.3 Exemples
• Utilisation de la liaison série COM1 du PC vers SCI0
¾ Adaptation RS232
• Niveau 0 V en entrée - 10 V en sortie
• Niveau 5 V en entrée 10 V en sortie
;******************************************** ONSCI:
; ROUTINES for COM1 / SCI0 communications * LDAA #$0D ; set baud rate to 9600 baud
; ONSCI * STAA SCI0BDL ; store low byte
; OUTSTRG * CLR SCI0BDH ; clear high byte
; OUTCRLF * LDAA #$00 ; configure SCI0 control registers :
; OUTPUT * eight-bit data, disable LOOP and parity
; INPUT * STAA SCI0CR1
;******************************************** LDAA #$0C; enable transmit and receive
;************** staa SCI0CR2
; EQUATES * LDAA SCI0SR1 ; to clear TDRE
;************** flag (1)
EOT: EQU $04 ; end of text/table character STD SCI0DRH ; (2)
;********************** RTS
; Initialize the SCI0 for 9600 baud
; Since we're using a 16.0 MHz clock and the Baud rate
register is calculated:
; BR = MCLK / (16 * Baud_Rate)
; MCLK = crystal / 2
; BR = 8,000,000 / (16 * 9600) which is 153,600
; BR = 52 which is 34 hex
7.3 Exemples
;**********************
;********************** ;**********************
; Output A to SCI0 ; Input A from SCI0
OUTPUT: INPUT:
OUTSCI2: INSCI2:
LDAB SCI0SR1 ; read status LDAB SCI0SR1 ; read status
BITB #$80 ; test Transmit Data Register BITB #$20 ; test Receive Data Register Empty bit
Empty bit BEQ INSCI2 ; loop if RDRF=1
BEQ OUTSCI2 ; loop if TDRE=1 LDAA SCI0DRL ; send character
ANDA #$7F ; mask parity RTS
STAA SCI0DRL ; send character
RTS
7.3 Exemples
INCLUDE 'mc9s12dp256.inc' ; include register equates ORG PROGSTRT
;************** INCLUDE 'com1_routines.inc' ; include routines
; DATA * Entry:
;************** ; If programming to Flash, uncomment the
ORG DATASTRT following line
BUF: RMB 2 LDS #$3FFF
;**************
; TEXT TABLES * JSR ONSCI ; initialize serial port
;************** LDX #MSG ; get message string
MSG FCC 'Do you enjoy HCS12 ? (O/N) ' JSR OUTSTRG ; send it out serial port
FCB EOT JSR OUTCRLF ; output carriage-return
JSR INPUT ; receive from serial port
;********************** LDX #BUF
STAA 0,X
MOVB #EOT,1,X
; JSR OUTSTRG ; send it out serial port
JSR OUTPUT; send char from serial port
; JSR OUTCRLF ; output carriage-return
ENDPROG:
BRA ENDPROG ; endless loop
7.4 Tests
• Sommaire
• Fonctionnement
¾ Exemple de transmission d’une donnée %11010110 sur MOSI
avec front actif montant de l’horloge
¾ Envoi des bits successifs MSB à LSB (ou LSB à MSB) en 8 périodes
¾ Largeur d’un bit : inverse de la vitesse de transmission (Baud ou bit/s)
8.3 Exemples
; programme
INCLUDE 'mc9s12dp256.inc’
ORG $1300
DATA FCB ‘HCS12’,$0D,$0A
EOT FCB $04; end of text
RDATA RMB 8
ORG $1000
Entry: LDS #$3FFF; set up stack pointer
BSR SPI0_INIT
LOOP: BSR SPI0_TRANSMIT
BSR SPI0_RECEIVE
CPX #EOT
BNE LOOP
BGND
8.3 Exemples
8.3 Exemples
• Écriture
• Lecture
Registre à décalage
Mode écriture seule
3 Transferts :
- Transfert D0-D3 et RS
(Register Select)
- Transfert avec EN à 1
- Transfert avec EN à 0
8.3 Exemples
• Interface SPI vers port LCD 4 bits parallèle sur la carte
8.3 Exemples
8.4 Tests