Microcontrôleurs
Pr. Mohamed Hamlich
Sige.ensam@gmail.com
https://www.youtube.com/watch?v=j8eHI_G4TSY&t=73s
https://www.youtube.com/watch?v=mSscUjkxueQ&t=43s
https://www.youtube.com/watch?v=Ne8PP6d5rf8&t=80s
https://www.youtube.com/watch?v=LTF2tCrji4c&t=30s
https://www.youtube.com/watch?v=JJv_vQcMgxA&t=67s
https://www.youtube.com/watch?v=OfBQayj330g&t=520s
https://www.youtube.com/watch?v=U8X9AHBpDao&t=754s
https://www.youtube.com/watch?v=FVrE9RDM-kU&t=142s
Pr. Mohamed Hamlich 1
Plan
1. Structure interne des microcontrôleurs
1.1 Microprocesseur
1.2 Mémoires
1.3 Ports d’entrées sorties
a) Configuration
b) Programmation
2. Timers et interruptions
2.3 Interruptions
2.4 Timers
3. Ports analogiques
3.1 Description
3.2 Configuration et programmation
3.3 Applications
4. Ports séries
4.1 Description
4.2 Configuration et programmation
4.3 Applications
1. Microprocesseur
Critères de choix :
Type
Fréquence d’horloge
Mémoire cache
Capacité
Rapidité
Variantes:
EPROM
EEPROM
2) Void interrupt()
Tosc x 4 x 256 x Pr = 0,05
{PORTC.B0=!PORTC.B0;
Pr≈195
INTCON.TMR0IF=0;
Nous allons prendre Pr=256 et nous recalculons le
modulo du TMR0. TMR0=61;
Modulo= 195, donc il faut charger le TMR0 par }
256-195= 61 pour avoir ce modulo.
1) main() main()
{ TRISC.B0=0; { TRISC.B0=0;
while (1) INTCON.GIE=1;
{INTCON.TMR0IF=0; TMR0=61; INTCON.TOIE=1;
while(INTCON.TMR0IF==0); TMR0=61;
PORTC.B0=!PORTC.B0; while (1);
}} }
TMR1 peut être précédé d'un prédiviseur (Prescaler) qui peut diviser la
fréquence par 1, 2, 4 ou 8 selon la valeur des bits T1CKPS1 et T1CKPS0
Quelle est la relation entre la tension analogique convertie et le nombre N recueilli dans le
registre ADRES ?
Si on note :
• Q = pas de quantification = (Vref+ - Vref-)/1024
• Va = tension analogique à convertir
• N = valeur numérique obtenue,
Programmation:
Configurer les E/S en Analogique/digital/Référence
Configurer les entrées analogiques en entrées
Définir l'horloge de conversion, Valider le module (ADCON0)
Choisir le canal à convertir (ADCON0)
Lancer la conversion, GO_DONE = 1 (ADCON0)
Attendre fin de conversion, GO_DONE = 0 ou interruption si validée
Lire le résultat
Arrêter le convertisseur ou recommencer au point 6
}
} Pr. Mohamed Hamlich 42
• unsigned int x;
• main()
• {
• unsigned int u,d;
• ANSELH = 0;
• ANSEL=0xFF;
• TRISA.B2=1;
• TRISC=0;
• TRISD=0;
• while(1)
• {
• x = ADC_Read(2);
• x=x/2.07;
• d=x/10;
• u=x%10;
• Portc=d;
• Portd=u;
• }
• }
Pr. Mohamed Hamlich 43
GESTION D’UN AFFICHEUR LCD
EN MIKROC
• Le module vient dans différentes formes et tailles. Des
modules avec 8, 16, 20, 24, 32 et 40 caractères sont
disponibles.
ENSAM- Casablanca
EM
REC
• 0 1 0 0 0 0 0 1
Récepteur: 010000111
000000111
• 0
• 0
• 1
• Transmission série
• 0 1 0 0 0 0 0 1
Prof : M.HAMLICH-
Intérêts :
Prof : M.HAMLICH-
Types de liaisons
Prof : M.HAMLICH-
Ports des ordinateurs
Prof : M.HAMLICH-
Transmission synchrone et
transmission asynchrone
Transmission asynchrone :
• les caractères sont émis de façon irrégulière, comme par exemple des
caractères tapés sur un clavier, l’intervalle de temps entre deux caractères
est aléatoire, le début d’un caractère peut survenir à n’importe quel moment.
• les bits de départ et d’arrêt souvent désignés par leur appellation anglo-
saxonne de START (élément de départ) et de STOP (élément d’arrêt). Ces
bits, sont en fait des signaux encadrent ceux qui constituent un caractère, le
bit de départ (START) indique le début d’un caractère et celui ou ceux
d’arrêt (STOP) – il peut y’en avoir ‘1’ ou ‘2’ – marquent la fin de caractère.
• Un octet transmet d’une façon asynchrone est illustré sur la page suivante :
Prof : M.HAMLICH-
Exemple de trame
Remarque : Un bit de parité peut être utilisé pour détecter les erreurs
susceptibles d’apparaître pendant la transmission.
Prof : M.HAMLICH-
• Emetteur: 110000101
• Recepteur:110000101 Erreur:100000101
• yassmina041099@gmail.com
Prof : M.HAMLICH-
Bit de parité
Exemple :
Prof : M.HAMLICH-
Transmission synchrone
Prof : M.HAMLICH-
Le support physique
Prof : M.HAMLICH-
Prof : M.HAMLICH-
I2C : Introduction
I2C est le sigle d'Inter-Integrated Circuit. À la fin des années 1970, la division
des semi-conducteurs de chez Philips (maintenant devenue NXP) avait vu la
nécessité de simplifier et standardiser les échanges de données entre les
différents circuits intégrés dans leurs produits.
Leur solution fut le bus I2C, elle réduisait le nombre de lignes nécessaires à
seulement deux lignes, SDA - Serial DAta, et SCL - Serial CLock.
Pour des débits plus rapides, de nouvelles spécifications sont nées. D'abord un
Fast Mode à 400 kbit/s, puis un Fast Mode plus (FM+) à 1 Mbit/s.
Depuis 1998, il y a une version High Speed à 3,4 Mbit/s. Le débit maximal possible
via un bus I2C est spécifié dans l'Ultra Fast mode à 5 Mbit/s, mais avec un
fonctionnement un peu particulier.
•la relation entre les périphériques du bus est de type maître-esclave (master/slave).
•chaque périphérique sur le bus I2C possède une adresse unique sur 7bits;
Sur le bus I2C le niveau logique dominant est le 0, le niveau récessif est
le 1. En absence de commande le niveau logique (repos) est donc 1. Le
bus doit être équipé de deux résistances de pull-up (4K à 10K)
Pr. Mohamed Hamlich 90
I2C : Contrôle du bus
• Le bit de R/W = 0;