ATC Uc
ATC Uc
SYSTEMES PROGRAMMABLES
Microprocesseur
Ci-contre, la structure d’un système
( CPU )
programmable minimal :
Interfaces d’E/S
1. Microprocesseur (ou CPU pour Central série et parallèle
Processing Unit)
Le μP exécute le programme situé dans la
mémoire de programme .Toute l’activité du µP est
cadencée par une horloge Processus technique :
capteurs, actionneurs…
2. Les bus
Un bus est ensemble de fils destiné à véhiculer les données entre les différents composants du système. On
distingue :
Le bus de données : à travers lequel transitent les données
Le bus d’adresse : à travers lequel le μP applique l’adresse de la donnée à lire ou à écrire
Le bus de contrôle : à travers lequel le µP dialogue avec le composant adressé
3. Les mémoires
Ce sont des composants chargés de conserver des contenus. En fonction des propriétés des mémoires, on peut
les classer selon l'arborescence suivante :
4. Périphériques
Généralités
Fréquence
Le µC se présente sous la forme d’un circuit intégré Oscillateur
réunissant tous les éléments d’une structure à base de µP
ainsi que certains modules auxiliaires :
RESET µP ROM RAM Chien de
Un µP (CPU) FLASH EEPROM garde
De la mémoire de données (RAM, EEPROM)
De la mémoire de programme (FLASH, EEPROM)
Des ports pour la connexion des entrées/sorties
Des timers pour générer des impulsions, compter des Bus de données, d’adresse et de contrôle
évènements, mesurer des fréquences…
Des CAN pour le traitement des signaux analogiques
Timer CAN Ports
Un chien de garde : qui détecte s'il y a un problème logiciel et
d’E/S
provoque un RESET
Architecture interne
Une mémoire programme de type flash de 8K mots de 14 bits de h'0000' à h'1FFF' (1K = 210 = 1024)
Une mémoire RAM constituée :
96 registres de configuration ayant des fonctions spéciales
368 registres d’espace utilisateur
Une mémoire EEPROM Data de données de 256 octets
3 Timers avec prédiviseur programmable : 2 timers 8 bits TMR0, TMR2 et un autre 16 bits TMR1
Un chien de garde WDT
CAN 10 bits à approximations successives à 8 entrées multiplexées
33 Entrée-Sortie bidirectionnelles réparties sur 5 ports : PORTA à 6 bits, PORTB, PORTC, PORTD à 8 bits et
PORTE à 3 bits
1 registre de travail (accumulateur) W à 8 bits.
Bus DATA sur 8 bits.
Jeu de 35 instructions de durée 1 ou 2 cycles.
Plusieurs sources d'interruption
Autres modules : USART pour transmission série, interface I2C, 2 modules pour PWM…
ATC / 2e STE
La RAM de données
Accès à la RAM
Les bits RP1 et RP0 du registre STATUS permettent la sélection des pages de la RAM
L’assembleur considère les nombres dans la base indiquée par la spécification adjointe
Binaire b b’00011011’
Exercice
Registre Bank
En utilisant le plan d’organisation de la RAM,
trouver la page concernée PORTA ………….
TRISA ………….
TMR0 ………….
ADCON1 ………….
Exercice
Question Réponse
………………………………
Sélectionner la page 2
………………………………
La direction des données sur les ports est programmée à travers les registres TRISA, TRISB, TRISC, TRISD et
TRISE (0 sortie 1 entrée)
Exemples : Mettre la valeur ‘00000011’ dans TRISB configure les broches RB0 et RB1 en entrée et les autres en sortie
La manipulation des données (lecture/écriture) sur les ports est programmée à travers les registres PORTA,
PORTB, PORTC, PORTD et PORTE
RD0 RB0
RD1 RB1 ………………………….. ; activer banque 1
RD2 RB2
RD3 RB3 …………………………..
RD4 RB4
RD5 RB5 ………………………….. ; configurer port B
RD6 RB6
RD7 PIC RB7 ………………………….. ; configurer port C
16F877 …………………………..
RA0 RC0
RA1 RC1 ………………………….. ; configurer port D
RA2 RC2
RA3 RC3 …………………………..
RA4 RC4
RC5 ………………………….. ; configurer port E
RE2 RC6
RC7 ………………………….. ; configurer port A
…………………………..
TRISA = ……………………………… ………………………….. ; activer banque 0
TRISB = ……………………………… …………………………..
TRISC = ………………………………
TRISD = ………………………………
TRISE = ………………………………
Exercice
Configurer le port D ainsi que les 5 bits de poids faible du port C conformément à la figure
Allumer les 2 LED supposées connectées aux broches RC3 et RC4 de PORTC
Lire le contenu de PORTD pour le stocker dans le registre d’adresse 7F
Exercice
RB0
S0 non
RC0 RB1 …..
.
.
5V
PIC 16F877
……………………
S1
RC1 .
RB7
non
…..
TRISB ………………………………………
TRISC ……………………………………….
........................................... ; page 1
.......................................
........................................... ; configurer PORTB en sortie
........................................... ; configurer PORTC
...........................................
........................................... ; page 0
...........................................
Techniques de comparaison
Le bit Z est l'indicateur Zéro; Z = 1 si le résultat d'une opération arithmétique ou logique est zéro.
Z = 0 si le résultat est différent de zéro
Question Réponse
……………………………… ; copier F1 dans W puis contrôler le bit Z
Si F1 = 0
………………………………
Temporisation et sous-programme
Exercice
Faire clignoter à, 1 Hz, les 8 LED (à la fois) supposées montées sur PORTB
On suppose déclaré un sous-programme "tempo" qui réalise une temporisation de 0,5 s
Exercice
Faire clignoter la LED du montage suivant ; le bouton permet de lancer les clignotements
Réaliser la temporisation par une boucle de retard (temporisation logicielle) et la confier à un sous-programme
RB1
VDD
RB5
ATC / 2e STE Lycée technique jbh
Programme
N equ 0x20 ; Initialisation des variables
........................... ; page 1
Début ...........................
........................... ; configurer port B
Configurations
...........................
........................... ; page 0
...........................
............
............ test ........................... ; tester si RB5 = 1 et saut si vrai
... oui ........................... ; revenir à ‘test’
....................... lab ........................... ; allumer
.... ........................... ; appel du sous-programme ‘tempo’
........................... ; éteindre
......................
..... ........................... ; temporisation
Sous-programme de temporisation
tempo
NFF
tempo ........................... ; N FF
...........................
loop ........................... ; décrémente N et test si N=0
N N-1 ........................... ; sinon retour à l’étiquette ‘loop’
return ; retour au programme principal
non
N=0
retour
ATC / 2e STE Lycée technique jbh
La fréquence f de fonctionnement interne du PIC est le quart de celle du quartz soit f = Fosc /4
Augmenter la durée de temporisation peut être obtenu par imbrication des boucles de retard
tempo ...........................
...........................
loop ........................... Durée T = …………… avec un quartz de ……………
...........................
return
tempo1 ...........................
...........................
loop1 ...........................
Durée T1 = ……………
...........................
...........................
return
tempo2 ...........................
...........................
loop2 ...........................
........................... Durée T2 = ……………
...........................
return
ATC / 2e STE Lycée technique jbh
Le module Timer 0
Le Timer 0 est un compteur 8 bits qui peut servir de temporisateur (timer) ou de compteur d’évènements
TMR0 est un registre associé au Timer 0
Horloge interne
PS2 PS1 PS0
Configuration
Le facteur de division de la fréquence est fixé par les bits PS2, PS1 et PS0
PS2 PS1 PS0 000 001 010 011 100 101 110 111
Dans ce mode, Timer 0 est piloté par l’horloge interne du microcontrôleur et sert de temporisateur
La durée de temporisation est T = Tc.Prédiviseur.(256 – TMR0)
Tc : durée d’un cycle horloge
Prédiviseur : valeur de prédivision
TMR0 : valeur de départ du registre TMR0
Fosc Tc Tc.Prédiviseur
/4 Prédiviseur Timer 0
Exercice
On désire obtenir une temporisation de 10 ms, trouver le mot de configuration(OPTION_REG) et la valeur initiale de TMR0.
On donne Fosc = 4 MHz
Ecrire, ensuite, un sous-programme qui met en œuvre cette temporisation en scrutant le bit TOIF
Avec un quartz de Fosc = 4MHz, la période du signal de l’horloge interne est ……….
………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………
Sous-programme de temporisation de 10 ms par scrutation du bit TOIF
..
……….……….. ; configurer Timer 0 via OPTION_REG
………………...
..
tempo10ms ........................... ; valeur de départ du registre TMR0
...........................
........................... ; baisser le drapeau càd mettre TOIF = 0
attente ........................... ; tester si TOIF = 1
........................... ; sinon revenir à ‘attente’
........................... ; retour au programme principal
Exercice
Donner la valeur initiale de TMR0 et trouver le mot de configuration(OPTION_REG) pour obtenir la temporisation maximale
possible. On donne Fosc = 4 MHz
Ecrire, ensuite, un sous-programme qui met en œuvre cette temporisation
………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………
C’est un compteur 8 bits incrémenté par une horloge indépendante de l'horloge système (même si le µC est
en mode sleep). Lorsqu’il déborde (après 18 ms), deux situations sont possibles :
Si le µC est en fonctionnement normal, cela provoque un RESET.
Si le µC est en mode SLEEP, cela provoque un WAKE-UP (l’exécution du programme reprend)
Configuration
Registre OPTION_REG
RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
(pages 1 et 3)
Il est possible d'augmenter la durée par utilisation du prédiviseur (celui partagé avec le timer 0). Le coefficient
de prédivision est fixé par les bits PS0, PS1 et PS2
PSA = 0 le prédiviseur est affecté au timer TMR0
PSA = 1 le prédiviseur est affecté au Watchdog WDT
Le coefficient de prédivision de la fréquence est fixé par les bits PS2, PS1 et PS0
PS2 PS1 PS0 000 001 010 011 100 101 110 111
Le mode SLEEP
Dans ce mode, l'horloge système est arrêtée ce qui suspend l'exécution du programme.
Pour sortir du mode SLEEP et donc continuer l’exécution, il faut provoquer un WAKE-UP par :
Un RESET externe dû à l'initialisation du PIC; dans ce cas, l’exécution recommence
Ou par un débordement du chien de garde WDT s’il est activé; dans ce cas, l’exécution continue
On met le µC dans le mode Sleep ; le programme est alors suspendu et reprendra après débordement du WDT.
Exercice
On optera pour une prédivision par ……….. donc PSA = …….. et PS2 PS1 PS0 = ………..….
Taux de
PS2, PS1, Mot de configuration Durée indicative
PSA prédivision du
PS0 (OPTION_REG)
WDT
1 000 …….. ……………………………… ……………
Le système est une perceuse automatique simple. Lorsque la pièce à usiner est en place, un appui sur le bouton M
lance le cycle : la machine descend jusqu'à Cb puis remonte pour s'arrêter en Ch
RB1 Ch
RB2 Cb
RB3 hP
RB4 M
Fournir le GRAFCET, le traduire en organigramme puis en un programme assembleur pour le microcontrôleur PIC16F877.
ATC / 2e STE
Début
Configurations
RB3=1
1
oui …………
………… …………
…… …………
2 …….. …… ...
oui
………. …………
…………
........
3 …….. ........
oui
........
………
...
........ …………
........
oui
........
...
Les interruptions
Une interruption provoque l’arrêt du programme principal pour aller exécuter un sous-programme, dit
d'interruption, qui se trouve à l’adresse 0004.
A la fin de cette procédure, le microcontrôleur reprend le programme principal à l’endroit où il l’a laissé.
Sources d'interruption
Toutes les interruptions peuvent être validées/interdites à la fois par le bit GIE
Chaque interruption peut être validée/interdite par son bit de validation individuel
Un bit drapeau (flag) permet de savoir si l’évènement déclenchant l’interruption arrive
L’interruption INT
Cette interruption externe arrive via la broche RB0/INT, sa mise en œuvre nécessite de :
Le bit INTF (flag) est un indicateur, il est mis à 1 si une interruption arrive sur RB0/INT. Il doit être remis à 0
dans le programme de traitement de l'interruption.
Registre INTCON GIE EEIE T0IE INTE RBIE T0IF INTF RBIF
ATC / 2e STE
Il s’agit d’alerter les responsables en cas de danger autour de la perceuse de l’exercice traité plus haut : en cas d’anomalie
signalée par le détecteur D sur la broche RB0, la sirène S montée sur RC3 entre en action
RB1 Ch
RB2 Cb
RB3 hP
RB4 M
RB0 D (Détecteur d’anomalie)
ORG 0000
goto depart
ORG 0004
........................... ; déclencher la sirène
Sous-prg
........................... ; remettre à 0 le flag INTF d’interruption
........................... ; retour au prog.principal
depart ..
........................... ; configurer l’interruption
Prog.principal
...........................
...........................
..
ATC / 2e STE