Un système embarqué est un système électronique et informatique intégré dans un dispositif plus large, dédié à une tâche précise. Il combine : microcontrôleur, logiciel embarqué, interfaces, capteurs et actionneurs.
-
-
Microcontrôleur / Microprocesseur :
- Unité centrale d’exécution (CPU)
- Utilise mémoire RAM, Flash, EEPROM
-
Mémoire :
- Programme (Flash)
- Données (RAM)
- Stockage non volatile (EEPROM)
-
Interfaces d’E/S :
- GPIO, ADC, DAC
- UART, SPI, I2C
- Timers, PWM
-
Capteurs & Actionneurs :
- Capteurs : température, lumière, mouvement…
- Actionneurs : moteurs, relais, écrans, LEDs…
-
-
- Temps réel : respecter des délais stricts
- Contraintes de ressources : mémoire limitée, faible consommation
- Fiabilité & robustesse : fonctionnement continu
- Optimisation : code compact, énergie faible
- Autonomie : batterie, capteurs intégrés
-
- Analyse du besoin
- Conception (hardware + software)
- Programmation (C, C++, assembleur, RTOS)
- Tests & validation (unitaires, temps réel, consommation)
- Déploiement
- Maintenance / mises à jour
-
- Automobile (ESP, ABS, ECU)
- Aéronautique
- Domotique et IoT
- Robotique
- Médical
- Télécommunications
- Industrie 4.0
-
Représentation Binaire d’un Octet (
char) :Un type
charest codé sur 8 bits, numérotés de b0 à b7.b7 b6 b5 b4 b3 b2 b1 b0 MSB LSB -
LSB: bit de poids Faible -
MSB: bit de poids Fort
-
-
Opérations bit à bit (bitwise)
Opération Symbole Code Description AND bit à bit &a = x & yCompare bit par bit. Le résultat vaut 1 seulement si les deux bits = 1. OR bit à bit |a = x | yCompare bit par bit. Le résultat vaut 1 si au moins un bit = 1. XOR bit à bit ^a = x ^ yRésultat vaut 1 si les bits sont différents. NOT (négation) ~a = ~xInverse tous les bits (0→1, 1→0). -
Opérations courantes sur un bit précis
Opération Code Description Mettre un bit à 1 (SET) x |= (1 << n)Active le bit n. Mettre un bit à 0 (CLEAR) x &= ~(1 << n)Désactive le bit n. Inversion d’un bit (TOGGLE) x ^= (1 << n)Complémente le bit n : 0 ↔ 1. Extraction d’un bit (x >> n) & 1Extrait l’état du bit (0 ou 1). Test logique d’un bit (TEST) if (x & (1 << n))Vrai si le bit n vaut 1. Copier la valeur d’un bit bit = (x & (1 << n)) != 0Copie la valeur du bit n dans une variable. Échange de deux bits (SWAP) char bi = (x >> i) & 1;
char bj = (x >> j) & 1;
x = (x & ~((1 << i) | (1 << j))) | (bi << j) | (bj << i);Échange les valeurs des bits i et j. -
Décalages de bits
Opération Symbole Code Description Décalage à Gauche <<x << nDécale les bits vers la gauche (≈ $x \times 2^{n}$ ).Décalage à Droite >>x >> nDécale les bits vers la droite (≈ $\left\lfloor \dfrac{x}{2^{n}} \right\rfloor$ ). -
Rotations de bits
Opération Code Description Rotation à Gauche (x << n) | (x >> (8 - n))Décalage circulaire vers la gauche (valeur conservée modulo $2^8$ )Rotation à Droite (x >> n) | (x << (8 - n))Décalage circulaire vers la droite (valeur conservée modulo $2^8$ )- Les rotations conservent tous les bits, contrairement aux décalages.
- Pour un
char, on considère 8 bits (adapter 8 selon la taille du type).
-
Masques de bits (bit masks)
Opération Code Description Créer un masque mask = 1 << nMasque avec seulement le bit n actif. Garder seulement certains bits x & maskFiltre tout sauf les bits du masque. Mettre certains bits à 1 x | maskForce les bits du masque à 1. Mettre certains bits à 0 x & ~maskForce les bits du masque à 0. |=→ mettre à 1&=~→ mettre à 0^=→ toggle&→ tester<</>>→ décaler
Le PIC18F¹ fait partie de la famille des microcontrôleurs 8 bits de Microchip, conçus pour les systèmes embarqués nécessitant performance, faible consommation, et contrôle bas niveau.
-
- Architecture Harvard² (Au Niveau de la Mémoire) :
- Séparation entre mémoire programme et mémoire données
- Accès parallèles permettant plus de rapidité
- Pipeline matériel pour exécuter certaines instructions en un seul cycle
- Architecture RISC³ (Au Niveau du Processeur) :
- Ensemble d’instructions réduit, simple et optimisé
- Exécution rapide : la majorité des instructions en 1 cycle
- Idéal pour le contrôle temps réel et les applications industrielles
- Architecture Harvard² (Au Niveau de la Mémoire) :
Le PIC18F se distingue également par :
- Des ports d’E/S configurables (digital/analogique)
- Une gestion avancée des interruptions
- Plusieurs Timers 8/16 bits
- Interfaces intégrées : UART, SPI, I²C, PWM
- Convertisseur ADC 10 ou 12 bits selon modèle
-
Pin Nom Fonction principale 1 MCLR / Vpp / RE3 Reset + programmation 2 RA0 / AN0 E/S digitale + ADC 3 RA1 / AN1 E/S digitale + ADC 4 RA2 / AN2 E/S digitale + ADC 5 RA3 / AN3 E/S digitale + ADC 6 RA4 E/S digitale (open-drain) 7 RA5 / AN4 / SS ADC + SPI Slave Select 8 RE0 / AN5 ADC 9 RE1 / AN6 ADC 10 RE2 / AN7 ADC 11 Vdd Alimentation +5V 12 Vss Masse 13 RA7 Horloge externe (OSC1) 14 RA6 Horloge externe (OSC2) 15 RC0 Timer 16 RC1 / CCP2 PWM 17 RC2 / CCP1 PWM 18 RC3 / SCL / SCK I²C / SPI Clock 19 RD0 E/S digitale 20 RD1 E/S digitale 21 RD2 E/S digitale 22 RD3 E/S digitale 23 RC4 / SDA / SDI I²C / SPI data 24 RC5 / SDO SPI 25 RC6 / TX UART Transmission 26 RC7 / RX UART Réception 27 RD4 E/S digitale 28 RD5 E/S digitale 29 RD6 E/S digitale 30 RD7 E/S digitale 31 Vss Masse (-) 32 Vdd Alimentation (+) 33 RB0 / INT0 Interruption externe 34 RB1 / INT1 Interruption 35 RB2 / INT2 Interruption 36 RB3 / CCP2 PWM / Capture 37 RB4 E/S digitale 38 RB5 E/S digitale 39 RB6 / PGC Programmation ICSP 40 RB7 / PGD Programmation ICSP ADC = “Analog Digital Converter”
- Il sert à convertir une tension analogique (0 à 5 V) en une valeur numérique (0 à 1023 pour un ADC 10 bits).
PGC = “Program Clock (Horloge de programmation)”
- Donne le timing
PGD = “Program Data (Données de programmation)”
- Transporte les valeurs 0/1 pour programmer la mémoire Flash
Rxx = “Registres / Pins (RA0, RB5, RC6, etc.)”
- R = Register (PORT)
- A/B/C/D/E = le port
- numéro = le bit/pin
CCP = “Capture / Compare / PWM”
- Capture : Mesurer la durée d’un signal, une fréquence…
- Compare : Déclencher un événement à un moment précis.
- PWM : Générer un signal PWM (moteurs, servos, LED dimming…)
MCLR = “Master Clear (Broche Reset)”
- Réinitialiser (redémarrer) le PIC
- Activer le mode programmation (Vpp ≈ 12 V)
- Utilisé par Pickit/ICD
-
Registre Fonction Configuration PORTx Lecture/Écriture logique réel des broches Entrée / Sortie LATx Registre tampon (Latch) pour une écriture Stable Sortie Uniquement TRISx Direction du Port 1 = Entrée
0 = SortieANSELx Sélection du Mode Analogique ou Numérique 1 = Entrée Analogique
0 = Numérique (Digital)SLRCONx Contrôle du Slew Rate (réduction des EMI) Sortie (selon port / MCU) - Lire avec
PORTx, Écrire avecLATxpour Évite Risque de Read-Modify-Write (RMW) ANSELx = 1⇒ Entrée Analogique ⇒TRISx = 1Obligatoire !!- Pour toute E/S Digitale ⇒
ANSELx = 0 - Manipulation des Sorties Toujours via
LATx
- Lire avec
-
Nom Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 ANSELA — — ANSA5 — ANSA3 ANSA2 ANSA1 ANSA0 CM1CON0 C1ON C1OUT C1OE C1POL C1SP C1R C1CH<1:0> CM2CON0 C2ON C2OUT C2OE C2POL C2SP C2R C2CH<1:0> LATA LATA7 LATA6 LATA5 LATA4 LATA3 LATA2 LATA1 LATA0 VREFCON1 DACEN DACLPS DACOE — DACPSS<1:0> — DACNSS VREFCON2 — — — DACR<4:0> HVLDCON VDRMAG BGVST IRVST HLVDEN HLVDL<3:0> PORTA RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0 SLRCON — — — SLRE SLRD SLRC SLRB SLRA SRCON0 SRLEN SRCLK<2:0> SRQEN SRNQEN SRPS SRPR SSP1CON1 WCOL SSPOV SSPEN CKP SSPM<3:0> T0CON TMR0ON T08BIT T0CS T0SE PSA T0PS<2:0> TRISA TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 - — = emplacements non implémentés, lus comme ‘0’.
<n:m>→ on prend tous les bits du bit n jusqu’au bit m, inclus.
-
Nom Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 ANSELB — — ANSB5 ANSB4 ANSB3 ANSB2 ANSB1 ANSB0 ECCP2AS CCP2ASE CCP2AS<2:0> PSS2AC<1:0> PSS2BD<1:0> CCP2CON P2M<1:0> DC2B<1:0> CCP2M<3:0> ECCP3AS CCP3ASE CCP3AS<2:0> PSS3AC<1:0> PSS3BD<1:0> CCP3CON P3M<1:0> DC3B<1:0> CCP3M<3:0> INTCON GIE / GIEH PEIE / GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF INTCON2 RBPU INTEDG0 INTEDG1 INTEDG2 — TMR0IP — RBIP INTCON3 INT2IP INT1IP — INT2IE INT1IE — INT2IF INT1IF IOCB IOCB7 IOCB6 IOCB5 IOCB4 — — — — LATB LATB7 LATB6 LATB5 LATB4 LATB3 LATB2 LATB1 LATB0 PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 SLRCON — — — SLRE SLRD SLRC SLRB SLRA T1GCON TMR1GE T1GPOL T1GTM T1GSPM T1GGO / ¬DONE T1GVAL T1GSS<1:0> T3CON TMR3CS<1:0> T3CKPS<1:0> T3SOSCEN ¬T3SYNC T3RD16 TMR3ON T5CON TMR5GE T5GPOL T5GTM T5GSPM T5GGO / ¬DONE T5GVAL T5GSS<1:0> TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 WPUB WPUB7 WPUB6 WPUB5 WPUB4 WPUB3 WPUB2 WPUB1 WPUB0 - — = emplacements non implémentés, lus comme ‘0’.
- Les bits grisés ne sont pas utilisés pour PORTB.
<n:m>→ on prend tous les bits du bit n jusqu’au bit m, inclus.
-
Nom Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 ANSELC ANSC7 ANSC6 ANSC5 ANSC4 ANSC3 ANSC2 — — ECCP1AS CCP1ASE CCP1AS<2:0> PSS1AC<1:0> PSS1BD<1:0> CCP1CON P1M<1:0> DC1B<1:0> CCP1M<3:0> ECCP2AS CCP2ASE CCP2AS<2:0> PSS2AC<1:0> PSS2BD<1:0> CCP2CON P2M<1:0> DC2B<1:0> CCP2M<3:0> CTMUCONH CTMUEN — CTMUSIDL TGEN EDGEN EDGSEQEN IDISSEN CTTRIG LATC LATC7 LATC6 LATC5 LATC4 LATC3 LATC2 LATC1 LATC0 PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 RCSTA1 SPEN RX9 SREN CREN ADDEN FERR OERR RX9D SLRCON — — — SLRE SLRD SLRC SLRB SLRA SSP1CON1 WCOL SSPOV SSPEN CKP SSPM<3:0> T1CON TMR1CS<1:0> T1CKPS<1:0> T1SOSCEN ¬T1SYNC T1RD16 TMR1ON T3CON TMR3CS<1:0> T3CKPS<1:0> T3SOSCEN ¬T3SYNC T3RD16 TMR3ON T3GCON TMR3GE T3GPOL T3GTM T3GSPM T3GGO / ¬DONE T3GVAL T3GSS<1:0> T5CON TMR5CS<1:0> T5CKPS<1:0> T5SOSCEN ¬T5SYNC T5RD16 TMR5ON TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 TXSTA1 CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D - — = emplacements non implémentés, lus comme ‘0’.
- Les bits grisés ne sont pas utilisés pour PORTC.
<n:m>→ on prend tous les bits du bit n jusqu’au bit m, inclus.
-
Nom Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 ANSELD ANSD7 ANSD6 ANSD5 ANSD4 ANSD3 ANSD2 ANSD1 ANSD0 BAUDCON2 ABDOVF RCIDL DTRXP CKTXP BRG16 — WUE ABDEN CCP1CON P1M<1:0> DC1B<1:0> CCP1M<3:0> CCP2CON P2M<1:0> DC2B<1:0> CCP2M<3:0> CCP4CON — — — DC4B<1:0> CCP4M<3:0> LATD LATD7 LATD6 LATD5 LATD4 LATD3 LATD2 LATD1 LATD0 PORTD RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 RCSTA2 SPEN RX9 SREN CREN ADDEN FERR OERR RX9D SLRCON — — — SLRE SLRD SLRC SLRB SLRA SSP2CON1 WCOL SSPOV SSPEN CKP SSPM<3:0> TRISD TRISD7 TRISD6 TRISD5 TRISD4 TRISD3 TRISD2 TRISD1 TRISD0 - — = emplacements non implémentés, lus comme ‘0’.
<n:m>→ on prend tous les bits du bit n jusqu’au bit m, inclus.
-
Nom Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 ANSELE — — — — — ANSE2 ANSE1 ANSE0 INTCON2 ¬RBPU INTEDG0 INTEDG1 INTEDG2 — TMR0IP — RBIP LATE — — — — — LATE2 LATE1 LATE0 PORTE — — — — RE3 RE2 RE1 RE0 SLRCON — — — SLRE SLRD SLRC SLRB SLRA TRISE WPUE3 — — — — TRISE2 TRISE1 TRISE0 - — = emplacements non implémentés, lus comme ‘0’.
- Les bits grisés ne sont pas utilisés pour PORTC.
Une interruption est un événement qui provoque l'arrêt immédiat du programme principal pour exécuter une fonction spécifique appelée ISR (Interrupt Service Routine). Une fois le traitement terminé, le microcontrôleur reprend l'exécution du programme principal exactement là où il s'était arrêté.
-
(1): L’interruption RBIF nécessite également l’activation individuelle des broches IOCB. -
-
Source Broche Description INT0 RB0Interruption sur front externe INT1 RB1Interruption sur front externe INT2 RB2Interruption sur front externe RBIF RB4àRB7Changement d’état des broches PORTB -
Catégorie Source Description Timers Timer0 Débordement du Timer0 Timer1 Débordement du Timer1 Timer2 Débordement du Timer2 Timer3 Débordement du Timer3 Analogiques ADC Fin de conversion A/N Comparateurs Interruption comparateur HLVD Détection basse tension Communication USART RX Réception série USART TX Fin d’émission SSP SPI / I²C Contrôle CCP1 Capture / Compare / PWM CCP2 Capture / Compare / PWM Mémoire / Bus EEPROM / FLASH Fin d’écriture Bus Collision Collision sur le bus
-
-
-
Catégorie Registres Fonction Description Contrôle Global INTCON,INTCON2,INTCON3Interruptions de Base et Contrôle Global Bits GIE/PEIE : 0= Interruptions désactivées1= Interruptions activées
Bits IE :0= Source désactivée1= Source activée
Bits IF :0= Pas d'événement1= Événement détectéPriorité IPR1àIPR5Niveaux de Priorité (si IPEN=1) Bits IPx : 0= Priorité basse1= Priorité haute (uniquement valide siIPEN=1)Activation PIE1àPIE5Masques d'Activation Individuelle Bits IEx : 0= Interruption masquée1= Interruption autoriséeFlags PIR1àPIR5Indicateurs d'Événements Périphériques Bits IFx : 0= Événement non survenu1= Événement survenu (à effacer manuellement)Configuration RCONChoix du Mode Bit IPEN : 0= Mode Priorité Unique (GIE/PEIE)1= Mode Deux Priorités (GIEH/GIEL)- INTCON = INTerrupt CONtrol
- IPR = Interrupt Priority Register
- PIE = Peripheral Interrupt Enable
- PIR = Peripheral Interrupt Request
- RCON = Reset CONtrol
-
Bit Registre Nom Fonction Description IPEN RCON<7>Interrupt Priority Enable Définit l'architecture d'interruption 0= Mode priorité unique1= Mode deux prioritésGIEH/GIE INTCON<7>Global Interrupt Enable (High) Gardien principal (nom change selon IPEN) 0= Interruptions désactivées1= Interruptions activéesGIEL/PEIE INTCON<6>Global Interrupt Enable Low Contrôle secondaire (nom change selon IPEN) 0= Périphériques désactivés1= Périphériques activés -
Bit Symbole Localisation Fonction Description IE PIE1<bit>Registres PIE1-PIE5 Autorise l'interruption pour ce périphérique spécifique 0= Source masquée1= Source autoriséeIF PIR1<bit>Registres PIR1-PIR5 Indicateur matériel d'événement (set automatiquement) 0= Pas d'événement1= Événement détecté (à effacer)IP IPR1<bit>Registres IPR1-IPR5 Définit la priorité (seulement si IPEN=1)0= Priorité basse1= Priorité haute
-
-
-
Priorité Adresse vecteur Routine Haute priorité 0008hvoid interrupt()Basse priorité 0018hvoid interrupt_low()- La gestion des priorités est assurée par les registres
IPRx. - Exception : l’interruption
INT0ne possède pas de bit de priorité → toujours haute priorité.
- La gestion des priorités est assurée par les registres
-
Bit IPEN = 0 (Mode Simple) IPEN = 1 (Mode Priorité) INTCON<7> : (GIE/GIEH)GIE = 1: Active ToutGIE = 0: Désactive ToutGIEH = 1: Active Haute PrioritéGIEH = 0: Désactive ToutINTCON<6> : (PEIE/GIEL)PEIE = 1: Active PériphériquesPEIE = 0: Désactive PériphériquesGIEL = 1: Active Basse PrioritéGIEL = 0: Désactive Basse Priorité
-
-
-
-
INTCON - Contrôle Interruptions de Base
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF - Bits 7-6 : Contrôle global (noms changent selon IPEN)
- Bits 5-3 : Activation des interruptions de base
- Bits 2-0 : Flags d'interruption de base
-
INTCON2 - Configuration Interruptions Externes
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RBPU INTEDG0 INTEDG1 INTEDG2 — TMR0IP — RBIP -
INTCON3 - Interruptions Externes 1 & 2
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 INT2IP INT1IP — INT2IE INT1IE — INT2IF INT1IF
-
-
-
IPR1 - Priorités Périphériques (Groupe 1)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 — ADIP RC1IP TX1IP SSP1IP CCP1IP TMR2IP TMR1IP -
IPR2 - Priorités Périphériques (Groupe 2)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 OSCFIP C1IP C2IP EEIP BCL1IP HLVDIP TMR3IP CCP2IP -
IPR3 - Priorités Périphériques (Groupe 3)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 SSP2IP BCL2IP RC2IP TX2IP CTMUIP TMR5GIP TMR3GIP TMR1GIP -
IPR4 - Priorités Périphériques (Groupe 4)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 — — — — — CCP5IP CCP4IP CCP3IP -
IPR5 - Priorités Périphériques (Groupe 5)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 — — — — — TMR6IP TMR5IP TMR4IP
Valeurs IP bits :
0= Basse priorité,1= Haute priorité (si IPEN=1) -
-
-
PIE1 - Activation Périphériques (Groupe 1)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 — ADIE RC1IE TX1IE SSP1IE CCP1IE TMR2IE TMR1IE -
PIE2 - Activation Périphériques (Groupe 2)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 OSCFIE C1IE C2IE EEIE BCL1IE HLVDIE TMR3IE CCP2IE -
PIE3 à PIE5 - Structure identique à IPR3-IPR5 mais avec suffixe IE
Valeurs IE bits :
0= Désactivé,1= Activé -
-
-
PIR1 - Flags Périphériques (Groupe 1)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 — ADIF RC1IF TX1IF SSP1IF CCP1IF TMR2IF TMR1IF -
PIR2 à PIR5 - Structure identique à PIE2-PIE5 mais avec suffixe IF
Valeurs IF bits :
0= Pas d'événement,1= Événement détecté (à effacer manuellement) -
-
-
ANSELB - Configuration Analogique/Digital
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 — — ANSB5 ANSB4 ANSB3 ANSB2 ANSB1 ANSB0 -
IOCB - Interrupt-on-Change Port B
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 IOCB7 IOCB6 IOCB5 IOCB4 — — — — -
RCON - Registre de Contrôle Système
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 IPEN SBOREN — RI TO PD POR BOR - Bit 7 (IPEN) :
0=Mode simple,1=Mode deux priorités - Bits 4-0 : Indicateurs de reset (Power-on, Brown-out, etc.)
- Bit 7 (IPEN) :
-
-
Un Timer est un périphérique matériel qui agit comme un chronomètre ou un compteur indépendant du processeur. Il permet d'exécuter des tâches répétitives avec une précision temporelle parfaite sans bloquer le programme principal.
-
Caractéristique des Timers
Caractéristique Timer 0 Timer 1/3/5 Timer 2/4/6 Taille 8/16-bit16-bit(TMRxH:TMRxL)8-bit(TMRxetPRx)Mode Timer / Compteur Timer / Compteur Timer Prédiviseur (Prescaler) 8-bitProgrammable SoftwarePrédiviseur 2-bitProgrammable Software ( 1:1,1:4,1:16)Post-diviseur (Postscaler) Non Non Programmable ( 1:1à1:16)Source Horloge Interne (Système) / Externe Interne / Externe / 32kHz Interne Interruption Overflow Overflow Sur match TMRx=PRxApplications Délais, Comptage Mesure, RTC, CCP PWM, Timing -
Prédiviseur : Diviseur de Fréquence AVANT le Compteur.
- Sans Prédiviseur : 1 tic = 1s
-
Prédiviseur
1:8: 8 tics = 1s → (1:8=1:2ᵇⁱᵗ)
-
Post-diviseur : Diviseur de Fréquence APRÈS le Compteur, sur l'interruption.
- Sans Post-diviseur : Interruption à Chaque Overflow
-
Post-diviseur
1:10: Interruption Tous les 10 Overflows
-
Prédiviseur : Diviseur de Fréquence AVANT le Compteur.
-
Timer 0 (TMR0)
-
Registre de Contrôle
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 TMR0ON T08BIT T0CS T0SE PSA T0PS<2:0> -
Bit 7 :
TMR0ON- Timer0 Activation-
0= Désactivé -
1= Activé
-
-
Bit 6 :
T08BIT- Mode Timer0-
0= Mode16-bit -
1= Mode8-bit
-
-
Bit 5 :
T0CS- Source d'Horloge-
0= Horloge Interne (Cycle d'Instruction Fosc/4) -
1= Horloge Externe (Broche RA4 / T0CKI)
-
-
Bit 4 :
T0SE- Front d'Horloge Externe-
0= Front Montant (LOW→HIGH) -
1= Front Descendant (HIGH→LOW)
-
-
Bit 3 :
PSA- Attribution du Prédiviseur-
0= Attribué -
1= NON Attribué
-
-
Bits 2-0 :
T0PS<2:0>- Sélection du PrédiviseurT0PS2 T0PS1 T0PS0 Valeur Prédiviseur 0 0 0 1:2 0 0 1 1:4 0 1 0 1:8 0 1 1 1:16 1 0 0 1:32 1 0 1 1:64 1 1 0 1:128 1 1 1 1:256
-
-
Mode Fonctionnement
Champ / Bit Mode Timer ( T0CS = 0)Mode Compteur ( T0CS = 1)T0CON<5> : T0CS0: Source Interne (Fosc/4)1: Source Externe (Broche RA4 / T0CKI)T0CON<4> : T0SEIgnoré (Sans Effet) 0: Comptage sur Front Montant1: Comptage sur Front Descendant -
Registres Associés
Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 INTCON GIE / GIEH PEIE / GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF INTCON2 RBPU INTEDG0 INTEDG1 INTEDG2 — TMR0IP — RBIP T0CON TMR0ON T08BIT T0CS T0SE PSA T0PS<2:0> TMR0H Timer0 Register, High Byte <15:8> TMR0L Timer0 Register, Low Byte <7:0> TRISA TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 - Si T08BIT = 1 (
8-bit) :-
TMR0Hest Ignoré - Seul
TMR0Lest Utilisé
-
- Si T08BIT = 1 (
-
Période de Débordement (Overflow)
-
Période d’Horloge du Timer
En mode Timer (
T0CS = 0) :$T_H = \frac{4}{F_{osc}}$ -
Temps Avant Débordement
$T_0 = \text{Iteration} \times \text{Prediv} \times T_H$ - Iteration = nombre d’incréments du Timer
- Prediv = prescaler
-
$T_H$ = période d’horloge
-
Valeur initiale du Timer0
$\text{TMR0}_{init} = \text{Max}_{Timer0} - \text{Iteration} + 1$ -
Valeur maximale du Timer0
Mode Max 8-bits255 16-bits65535 -
Valeurs Possibles du Prédiviseur
$\text{Prediv} \in \{1, 2, 4, 8, 16, 32, 64, 128, 256\}$
-
-
-
Timer 1/3/5 (TMR1/3/5)
-
Timer 2/4/6 (TMR2/4/6)