Fréquence max Timer 8051 Mode 1 avec quartz 11,0592 MHz
Le quartz 11,0592 MHz est une « fréquence magique » pour systèmes 8051 car il divise proprement vers débits baud standard. Mais quelle est la fréquence maximum génératable avec Timer 1 en Mode 1 (timer 16-bit) ?
Fonctionnement Timer 1 Mode 1
Mode 1 configure Timer 1 comme timer/compteur 16-bit (TH1:TL1). Le timer s'incrémente chaque cycle machine.
Structure horloge 8051
- Fréquence quartz : FOSC = 11,0592 MHz
- Cycle machine : 12 cycles horloge (8051 standard)
- Fréquence incrémentation timer : FTIMER = FOSC / 12 = 921,6 kHz
- Période timer : TTIMER = 1 / 921,6 kHz ≈ 1,085 μs
Méthodes génération fréquence
Méthode 1 : Basculement sur débordement timer (Logiciel)
Timer compte jusqu'à 0xFFFF (65 536), déborde, positionne drapeau TF1. Logiciel bascule broche sortie dans ISR.
- Taux basculement max = FTIMER / 65 536 = 921 600 / 65 536 = 14,0625 Hz
- Fréquence sortie = taux basculement / 2 = 7,03 Hz (carré)
- Impratique pour génération fréquence — trop lent
Méthode 2 : Rechargement timer avec basculement sortie (Mode 2 - Rechargement auto 8-bit)
Pas Mode 1, mais couramment utilisé pour génération fréquence :
- TH1 contient valeur rechargement, TL1 compte
- Fréquence max (TH1=1) : FTIMER / 2 = 921,6 kHz / 2 = 460,8 kHz
- Fréquence min (TH1=255) : 921,6 kHz / 510 = 1,807 kHz
Méthode 3 : Mode 1 avec sortie matérielle (Si disponible)
8051 standard n'a pas de basculement sortie matériel en Mode 1. Certaines variantes (DS89C420, AT89LP, Silicon Labs) ajoutent broches Timer Output (TO), mais 8051/8031/8052 originaux non.
Méthode 4 : Mode 0 (Timer 13-bit) — Pas Mode 1
Mode 0 : timer 13-bit (TL1[4:0] + TH1[7:0]). Contraintes fréquence max similaires.
La vraie réponse : Ça dépend de votre méthode sortie
Si Mode 1 pur (16-bit) + ISR logiciel :
Fréquence pratique maximum ≈ 1-2 kHz (limité latence ISR ~50-100 cycles)
Si Mode 2 (Rechargement auto 8-bit) avec basculement matériel (variantes supportées) :
Maximum = 460,8 kHz (TH1=1, duty cycle 50%)
Si logique externe avec impulsion débordement timer :
Impulsion débordement Timer 1 tous les 65 536 comptes = train impulsions 14,06 Hz. Peut alimenter diviseur/compteur externe.
Pourquoi 11,0592 MHz ? La liaison débit baud
Ce quartz existe pour la communication série, pas génération fréquence :
| Débit baud | Rechargement Timer 1 (Mode 2) | Erreur |
|---|---|---|
| 9600 | 0xFD (-3) | 0% |
| 19200 | 0xFA (-6) | 0% |
| 38400 | 0xF4 (-12) | 0% |
| 57600 | 0xEE (-18) | 0% |
| 115200 | 0xDC (-36) | 0% |
| 230400 | 0xB8 (-72) | 0% |
| 460800 | 0x70 (-144) | 0% |
| 921600 | 0xE0 (-32) * | 0% (SMOD=1) |
* Nécessite SMOD=1 (PCON.7) pour 921600 baud.
Recommandations pratiques
- Pour débits baud : Utilisez Timer 1 Mode 2 (rechargement auto 8-bit) — conçu pour ça
- Pour génération fréquence : Utilisez Timer 0/1 Mode 2 avec basculement matériel (si variante supporte) ou mode PWM (variantes modernes)
- Pour hautes fréquences : Utilisez PCA (Programmable Counter Array) sur 8052/variantes modernes — jusqu'à FOSC/4 = 2,76 MHz
- Pour Mode 1 spécifiquement : C'est pour mesure temps (largeur impulsion, période), pas sortie fréquence
Conclusion
Avec 8051 standard Timer 1 Mode 1 (timer 16-bit) et quartz 11,0592 MHz : fréquence max générée logiciellement ~1-2 kHz. Le but du quartz 11,0592 MHz est génération débits baud via Mode 2, pas synthèse fréquence Mode 1. Pour fréquences supérieures, utilisez Mode 2, PCA, ou générateurs d'horloge programmables externes.
