Cours 4 ASP GBM3-LMD
Cours 4 ASP GBM3-LMD
Cours 4 ASP GBM3-LMD
de Tunis
4.1 Le CAN
4.2 La liaison série
4.3 Le watchdog
Le Convertisseur Analogique Numérique
3
Illustration du fonctionnement d’un CAN
Etude du CAN du 16F877a
5
Bloc diagramme du CAN du 16F87XA
6
Exemple d’application
Sur l’application ci-dessous, quelle est la résolution maximale possible ?
8
Les tensions de références
Le schéma représente les plages de valeurs possibles pour Vref+ et Vref-.
9
Etude de cas pratique
La tension d’une batterie est celle d’une cellule lithium-ion qui possède les
caractéristiques suivantes :
Umin=2,5 V Umax= 4,3V
Danger si en dehors de cette zone
11
Exemple de codes
#include <16F877A.h>
#device ADC=10 //N=10bits pour le CAN interne
#use delay(clock=8000000) //Horloge à 8 MHz
#fuses HS,NOWDT,NOLVP
void main()
{
int16 valeur; //Déclaration d’une variable valeur en entier 16 bits
int tension;
setup_adc_ports(ALL_ANALOG); //Configuration des 8 voies du CAN en analogique
setup_adc(ADC_CLOCK_INTERNAL); //Utilisation de l’horloge interne
while(1) //Boucle infinie
{ set_adc_channel(1); //Utilisation de la voie 1 du micro-contrôleur (broche A1)
valeur=read_adc(); //Lecture de la broche A1, dans la variable valeur
Tension=(int)(5/1023)*valeur;
}
} 12
Chapitre 4
Programmation Avancée des microcontrôleurs
4.1 Le CAN
4.2 La liaison série
4.3 Le watchdog
La liaison série
La liaison série USART (Universal Synchronous Asynchronous Receiver Transmitter)
est le mode le plus répondu pour communiquer (et aussi le plus vieux).
14
Principe
Connexions (1)
d’une communication série
Cette liaison peut être « half duplex » (liaison synchrone) ou « full duplex » (liaison
asynchrone).
Sur
le microcontrôleur PIC16F877A, la liaison série asynchrone peut être mise en
œuvre à l’aide des pins RxD et TxD. Elle est réalisée par un USART :
- RxD, signal de réception de l’USART
- TxD, signal de transmission de l’USART
15
Détails des connexions de la liaison série
1ère étape : Configurer la transmission
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
}
}
Liaison SPI (Serial Peripheral Interface)
- Protocole de communication série proposé par Motorola dans les années 1980
- SPI : utilisation d’un signal de synchronisation entre maître et esclave et d’une ligne de données
18
Principes de la communication SPI (1/2)
Bus SPI : un seul maître et au moins un esclave
19
Principes de la communication SPI (2/2)
- La liaison SPI est une communication full-duplex : à chaque cycle d’horloge un bit
de donnée est échangé simultanément du maître vers l’esclave (ligne MOSI) et de
l’esclave vers le maître (ligne MISO)
- Après 8 cycles d’horloge 1 octet de données est échangé dans les deux sens
- Il est possible d’avoir plusieurs esclaves mais il n’est possible au maître que de
communiquer avec un seul d’entre eux, en utilisant la ligne CS (ou SS)
20
Configurations SPI
Dans un bus SPI, deux configurations sont possibles :
“Independent Slave Configuration” ou “Daisy Chain Configuration”
- Le maître réserve une ligne CS pour chaque esclave - Une seule ligne CS pour tous les esclaves
du bus SPI - Connexions MOSI-M/MOSI-E1, MISO-E1/MOSI-
- Toutes les lignes MOSI et MISO des esclaves sont E2,…, MISO-En/MISO-M
reliées aux lignes MOSI et MISO du maître
21
Commandes SPI (compilateur CCS)
Directive de configuration du bus SPI
#use spi (options)
Principales fonctions
setup_spi(mode), setup_spi2(mode) : configuration du mode SPI
22
Liaison série I2C (Inter-Integrated Circuit)
- Bus de communication développé par la société Philips dans les années 1980
- Bus série synchrone bifilaire : SDA (Serial Data Line) : ligne de données bidirectionnelle,
half-duplex et SCL (Serial Clock Line) : horloge de synchronisation bidirectionnelle
23
Communication maître/esclave
- Seul le maître peut initier (condition Start) ou terminer (condition Stop) le dialogue
- La fréquence d’horloge du bus I2C est imposée par l’élément le plus lent
- Condition Start : le maître fait passer la ligne SDA du niveau haut au niveau bas,
SCL étant au niveau haut.
- Condition Stop : une fois l’échange est terminée, le maître fait passer la ligne SDA
du niveau bas au niveau haut, SCL étant au niveau haut.
25
Spécificités du protocole I2C (2/2)
- Bits d ’adresse : l’adresse de l’esclave avec qui le maître échange (émet/reçoit) des
données. Elle est envoyée à tous les esclaves connectés au bus I2C
- Bit Read/Write : spécifie le sens des données échangées
(0 : maître vers esclave et 1 : esclave vers maître)
- Bit ACK/NACK : prend 0 si un esclave connecté au bus dispose de l’adresse diffusée par le
maître sinon prend 1 (valeur par défaut)
- 8 bits de données : présente l’information envoyée par l’émetteur (maître ou esclave). Le bit ACK
prendra 0 si le récepteur a reçu les données. La séquence 8 bits de données suivi par le Bit
ACK/NACK se répète jusqu’à ce que toutes les données sont envoyées 26
Commandes I2C (compilateur CCS)
Directive de configuration du bus I2C
#use I2C(options)
- #use i2c(master, fast, SCL=PIN_C3, SDA=PIN_C4, Force_HW)
master : déclaration du bus I2C pour un PIC fonctionnant en maître
fast : échange à une vitesse de 400 kHz. (Par défaut le bus fonctionne en mode slow :
100 kHz)
- #use i2c(slave, SCL=PIN_C3, SDA=PIN_C4, address=0xA0)
slave : déclaration du bus I2C pour un PIC fonctionnant en esclave
Principales fonctions
- i2c_start() : lancement (ou changement du sens) d’un dialogue I2C par un maître
- i2c _stop() : arrêt d’un dialogue I2C
- i2c _write(data) : envoie d’une information
- i2c _read() : réception d’une information
- i2c_poll() : retourne TRUE si le hardware a reçu un octet dans le buffer. Ne concerne que le
mode esclave.
27
Exemple : communication PIC16F877/DS1621 (1/2)
DS1621 : thermomètre numérique et thermostat
28
Exemple : communication PIC16F877/DS1621 (1/2)
Adressage du DS1621
Ici A2, A1 et A0 seront reliées au GND
L’adresse du DS1621 est donc 0x90 en écriture(bit R/W=0) et 0x91 en lecture(bit R/W=1)
Commandes/Valeurs de contrôle
29
Liaison I2C PIC16F877/DS1621
U1
13 33
OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
35
RB2
2 36
RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5 R2 R1
5 39
RA3/AN3/VREF+ RB6/PGC 4.7k 4.7k
6 40
RA4/T0CKI/C1OUT RB7/PGD
7
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
8 16
RE0/AN5/RD RC1/T1OSI/CCP2
9 17
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL
23
R 1
RC4/SDI/SDA
24
MCLR/Vpp/THV RC5/SDO
25
10k RC6/TX/CK
26
RC7/RX/DT
19 U2
RD0/PSP0
20 2 3
RD1/PSP1 SCL TOUT
21 1
RD2/PSP2 SDA
22 7
RD3/PSP3 A0
27 6
RD4/PSP4 A1
28 5 27.0
RD5/PSP5 A2
29
RD6/PSP6
30 DS1621
RD7/PSP7
PIC16F877A
SDA
30
SCL I2C
TRIG
Programme PIC 16F877a
4.1 Le CAN
4.2 La liaison série
4.3 Le watchdog
Le Watchdog (1)
Le chien de garde (watchdog) est un dispositif matériel et logiciel qui permet
de se prémunir contre les plantages accidentels.
L’idée est de provoquer un RESET du CPU afin de relancer l’application (les
données sont bien sur perdues).
Le plantage est défini lorsque le programme n’est pas venu à temps faire signe au
watchdog.
Instructions
« Clear Watchdog »
Si je reçoit rien,
j’appuie sur le
RESET!!!
Le Watchdog (2)
MICROCONTROLEUR