Académique Documents
Professionnel Documents
Culture Documents
1-Introduction
Les ordinateurs modernes sont proposés sous différentes formes et dimensions et sont utilisés
dans différentes tâches allant des plus sérieuses telles que le contrôle du trafic aérien aux
« moins sérieuses » comme les jeux vidéo. Mais, malgré leurs diversités de formes et
d'applications, les ordinateurs sont similaires dans leurs fonctionnements de base.
BUS D’ADRESSE
BUS DE DONNEES
BUS DE COMMANDE
ENTREES SORTIES
Pour des raisons de simplicité le système a été présenté selon le modèle de Van Neumann.
2-Le microprocesseur
Le microprocesseur a pour rôle de rechercher les instructions qui sont en mémoire, de
les décoder et de les exécuter. Il est construit autour de deux éléments principaux : L’unité de
commande et l’unité de traitement.
MÉMOIRE PROGRAMME
MICROPROCESSEUR
UNITE DE
UNITE DE
COMMANDE
TRAITEMENT
BUS DE BUS DE COMMANDE
COMMANDE
MÉMOIRE DONNEES
BUS D’ADRESSE
BUS DE DONNEES
REGISTRE DECODEUR
D’INSTRUCTION D’INSTRUCTION
BUS D’ADRESSE
PC
BUS D’ADRESSE
L’UNITE DE COMMANDE
REGISTRE D’ADRESSE
• L’unité de traitement : elle est constituée des circuits qui assurent les traitements
nécessaires à l’exécution des instructions, ces circuits sont :
REGISTRE DONNEES
BUS DE COMMANDE
ALU
REGISTRE D’ETAT
ACCUMULATEUR
UNITE DE TRAITEMENT
Les instructions et leurs opérandes (paramètres) sont stockés en mémoire principale. La taille
totale d’une instruction (nombre de bits nécessaires pour la représenter en mémoire) dépend
du type d’instruction et aussi du type d’opérande. Chaque instruction est toujours codée sur un
nombre entier d’octets afin de faciliter son décodage par le processeur. Une instruction peut
contenir les information suivantes : le type d’opération (opération code ou opcode), le type des
opérandes (qui sont-ils, source et cible) , la localisation des opérandes et le type d’accès
(adressage)
b- Architecture RISC (Reduced Instruction Set Computer) : C’est une architecture dans
laquelle les instructions sont en nombre réduit (chargement, branchement, appel sous-
programme). Chacune de ces instructions s’exécutent souvent en un seul cycle d’horloge. Les
accès à la mémoire s’effectuent seulement à partir de deux instructions (Load et Store). Par
contre, les instructions complexes doivent être réalisées à partir de séquences basées sur les
instructions élémentaires, ce qui nécessite un compilateur très évolué dans le cas de
programmation en langage de haut niveau.
3.2 en rapport avec l'organisation des mémoires
a-Architecture VON NEUMANN : dans ce type d’architecture, il n’y a qu’un seul chemin
à la mémoire (un bus de données pour les programmes et les données et un bus d’adresses
pour ROM et RAM) .
Cette architecture est souvent choisie pour les microprocesseurs à usage général.
MÉMOIRE PROGRAMME ET
CPU
BUS
DONNEES
CPU
MÉMOIRE DONNEES
BUS
Architecture HARVARD
Figure I-8 : architecture HARVARD
3.3 le pipeline
Dans un microprocesseur classique, les instructions sont exécutés l’une après l’autre sans
chevauchement, c’est-à-dire que l’instruction suivante ne commence à être traité que lorsque
toutes les étapes de traitement de l’instruction précédente sont achevées.
Exemple pour trois instructions successives traitées chacune sur quatre étapes (la quatrième
étape est pour la sauvegarde).
Dans cet exemple il est possible de traiter neufs instructions (architecture PIPELINE) au lieu de
trois (architecture classique).
1-Définition
Le microcontrôleur au sens le plus réduit est un système minimal à microprocesseur,
intégré sur une seule puce.
De nos jours on rencontre des microcontrôleurs incorporant, en plus des mémoires,
plusieurs types de périphérique comme les timers, les convertisseurs analogiques/numérique
et numériques/analogique, des modules de communication séries et parallèles, des
générateurs de signaux, des comparateurs analogiques… . Une spécialisation des
microcontrôleurs s’est instaurée suivant les besoins, ainsi on retrouve des microcontrôleurs
spécialisés dans l’acquisition des données, d’autres dans la commande des moteurs….
MÉMOIRE PROGRAMME
WATCHDOG EEPROM
MICROPROCESSEUR
PORTS E/S
COMMUNICATION VIA BUS CAN
MICROCONTRÔLEUR
Chaque famille vient avec un nombre d’instructions différent, avec des formats d’instructions
différents et même avec des périphériques ayant des architectures différentes, ce qui rend ces
familles incompatibles entre elles. Les membres de la famille PIC 18F utilisent le même jeu
d’instruction et utilisent des périphériques possédant les mêmes architectures assurant ainsi la
compatibilité entre ces microcontrôleurs.
B. ADR B. ADR
B. DON B. DON
Le PIC18 possède 31 piles utilisées pour sauvegarder les adresses de retour des sous
programmes et des interruptions. Les piles ne font pas parties ni de la mémoire de données ni
de la mémoire programme, elles sont accessibles en lecture et en écriture.
Un cycle instruction consiste en 4 Q cycles ( de Q1 à Q4), ce qui implique que si Fosc est la fréquence
de l'oscillateur et si Fcy et la fréquence en terme de nombre de cycle machine par seconde, alors
Fcy=Fosc/4 et Tcy=4/Fosc=4Tosc
b-Le pipeline
La recherche et l’exécution de l’instruction sont « pipelinisées » de façon que la
recherche de l’instruction est faite dans un cycle alors que le décodage et l’exécution sont fait
dans le cycle suivant ,mais, tout compte fait, et du à l’utilisation du pipeline , l’instruction est
totalement exécuté en un cycle (sauf pour les instruction de branchement).
1-Introduction
Le nombre de ports d’entrées/sorties dépend du PIC choisi, le 18F4520 en possède cinq.
Des lignes d’entrées /sorties peuvent être multiplexées avec d’autre fonctions.
Chaque port est géré par trois registres :
▪ Le registre TRIS pour commander la direction (entrée ou sortie).
▪ Le registre PORT pour lire les niveaux de tension au niveau des broches.
▪ Le registre LAT pour imposer (écrire) les niveaux de tension sur les broches.
Ci-joint le schéma d’un port d’entrées/sorties générique (pour une seule broche)
RD LAT
Data
Bus D Q
WR LAT I/O pin(1)
or Port
CK
Data
WR TRIS
CK
TRIS Latch
RD TRIS
EN
RD Port
RX0
LATX
Données destinées à la
sortie
RX7
Bascules de sorties
Bascule d éntrées
PORTX
Données lues
2- LE REGISTRE TRISx
(x pouvant être un des différents ports du 18F4520 :A, B, C, D ou E)
C'est le registre responsable sur le sens du flux des données (entrées ou sorties)
mettre à 1 un bit de ce registre revient à configurer la broche correspondante en
entrée et inversement, mettre à 0 un bit de ce registre revient à configurer la
broche correspondante en sortie.
3- LE REGISTRE PORTx
(x pouvant être un des différents ports du 18F4520 :A, B, C, D ou E)
C’est un port bidirectionnel de largeur 8bit (sauf pour le port E) le registre de direction qui lui
est associé est le registre TRISx. La mise à 1 d’un bit de ce registre oblige la broche
correspondante du PORTx à fonctionner en entrée et inversement, mettre à 0 un bit de ce
registre transforme la broche correspondante du PORTx en sortie. Cependant, l'utilisation du
registre PORTx en sortie peut causer certains problèmes. En effet, certaines instructions suivent
le schéma READ MODIFY WRITE, ainsi, en essayant de modifier l'état d'une seule broche d'un
port donné, la CPU commence par lire (READ) l'état actuel de toutes les broches du port, les
modifient (MODIFY) puis les envoient vers la sortie (WRITE). Le problème se pose lorsqu'on
essai de manipuler une broche à forte charge capacitive et/ou avec une fréquence élevée.
16%
Lorsque le registre PORTx est utilisé en sortie, l'étape de lecture (read) se fait directement aun
niveau de la broche qui peut être dans un régime transitoire à cause de la charge capacitive,
ainsi, le niveau lu peut être faux, ce qui faussera le résultat final.
4- LE REGISTRE LATx
Ce registre vient résoudre le problème read write modify décrit ci-haut, en effet, l'utilisation
du registre LATx en sortie oblige la CPU à lire (read) directement au niveau de data latch qui
n'est pas affectée par la charge de la broche.
Pour conclure
write PORTx
write LATx Read LATx Read PORTx
LATx regiter
(PORTx output laches)
La lecture du PORTx donne l’état des broches de sorties alors que l’écriture dans ce même port
revient à écrire dans les latches qui lui sont associées.
La lecture du registre LATx donne l’état des latches associées et l’écriture dans ce même registre
revient à écrire dans les latches.
Exemple :
Les PIC18 possèdent deux niveaux de priorité : la haute priorité et la basse priorité.
6-Vecteurs d’interruption
Pour exécuter une ISR le microprocesseur doit identifier de l’adresse de début de l’ISR
ces adresses sont appelées vecteurs d’interruption. Les PIC18 possèdent deux vecteurs
d’interruption : le premier est situé à l’adresse 0008h de la mémoire programme et est réservé
aux interruptions prioritaires et le second est situé à l’adresse 0018h et est réservé aux
interruptions non prioritaires.
Poursuite exécution
de l ISR
Évènement provenant • Restauration 2ème contexte
d une source • Retour à l adresse du 2ème saut
d interruption prioritaire
▪ Matérielles externes :
o Déclenchées par un front actif sur l'une des entrées INT0, INT1 et INT2;
o Déclenchée par le changement d’état d’une des entrées RB4 à RB7 du portB
▪ Matérielles internes : Déclenchées par certaines ressources intégrés :
o Débordements du Timer 0, du Timer1 ou du Timer2.
o Le Comparateur Analogique.
o L’USART en Emission ou Réception de données.
o Le Convertisseur Analogique Digital.
o Le circuit de Capture et de Comparaison CCP.
o Le port série synchrone ou SSP.
o Ecriture dans la mémoire EEPROM
o ….
• RCON
•INTCON
• INTCON2
• INTCON3
• PIR1, PIR2
• PIE1, PIE2
• IPR1, IPR2
Dans le cas général les interruptions sont contrôlées par trois types de bit :
En plus de ces bits spécifiques à chaque interruption, les bits GIE (Global Interrupt Enable) et PEIE
(Peripheral Interrupt Enable) permettent de masquer toutes les interruptions à la fois (cas de GIE) ou
de masquer une catégorie d’interruptions (toutes les interruptions internes peuvent être masquer par
PEIE).
Tout ces bits sont réparties dans les registres cités en haut.
Les registres INTCON et INTCON1 qui regroupent, entre autres, les bits de configuration des
interruptions externes, ont en plus quelques spécificités : le registre INTCON contient les bits
responsables sur l’autorisation globale des interruptions (GIE/GIEH, PEIE/GIEL) ; le registre
INTCON2 contient des bits pour sélectionner le type de fronts actifs sur les interruptions
externes, montants ou descendant (INTEDGx).
Les autres registres contiennent les trois types de bit de contrôle d’interruption déjà vus.
Les figures suivantes sont des extraits du document constructeur décrivant les registres de
contrôles des interruptions.
9-Programmation de l’interruption
La programmation d’une ISR doit de faire sur trois étapes :
▪ Etape 1 : tester qui a déclenché l’interruption, ce qui revient à tester le bit de flag
XXXIF (exemple ADIF pour le bit de flag du convertisseur A/D).
Une bonne pratique consiste à tester aussi le bit d’autorisation de l’interruption
▪ Etape 2 : exécuter le programme d’interruption
▪ Etape 3 : acquitter manuellement l’interruption, ce qui revient à remettre le bit
de flag à 0 (XXXIF=0) .
{
Test du flag
Exécution de l’ISR
Remise à zéro du bit de flag
}
Main
{
séquence d'initialisation;
.....;
autorisation des interruptions;
while(1)
{
tâche n°1;
tâche n°2;
.....;
tâche n°N;
}
}
L’autorisation des interruptions qui figure dans le programme principal varie suivant si l’on veut
utiliser la priorité ou non.
b-Exemple :
Changement des états de deux leds branchées sur RC0 et RC1 chaque fois qu’un front
descendant arrive sur l’une des interruptions INT1 et INT2 .
#include <xc.h>
void interrupt led1(void) //déclaration interruption prioritaire
{
if(INT1IF==1) // test du flag
{
LATC0=!LATC0; //inversion d’état de la sortie RC0
}
INT1IF=0; //acquitement du bit de flag
}
void main(void)
{
TRISC=0; //config port C en sorties
TRISB=255; //config port B en entrées