Frequenza Massima dal Timer 1 dell'8051 in Modalità 1 con Quarzo 11.0592 MHz
Il quarzo 11.0592 MHz è una "frequenza magica" per sistemi 8051 perché divide pulitamente in frequenze baud standard. Ma qual è la frequenza massima generabile usando il Timer 1 in Modalità 1 (timer a 16 bit)?
Funzionamento Timer 1 Modalità 1
La Modalità 1 configura il Timer 1 come un timer/contatore a 16 bit (TH1:TL1). Il timer incrementa ogni ciclo macchina.
Struttura Orologio 8051
- Frequenza quarzo: FOSC = 11.0592 MHz
- Ciclo macchina: 12 cicli orologio (8051 standard)
- Frequenza incremento timer: FTIMER = FOSC / 12 = 921.6 kHz
- Periodo timer: TTIMER = 1 / 921.6 kHz ≈ 1.085 μs
Metodi di Generazione Frequenza
Metodo 1: Attivazione Overflow Timer (Software)
Il timer conta fino a 0xFFFF (65.536), va in overflow, imposta flag TF1. Il software attiva il pin di output nell'ISR.
- Max toggle rate = FTIMER / 65.536 = 921.600 / 65.536 = 14.0625 Hz
- Frequenza output = toggle rate / 2 = 7.03 Hz (onda quadra)
- Impraticabile per generazione frequenza—troppo lento
Metodo 2: Timer Reload con Attivazione Output (Modalità 2 - 8-bit Auto-Reload)
Non Modalità 1, ma comunemente usato per generazione frequenza:
- TH1 contiene valore di ricarico, TL1 conta su
- Max frequenza (TH1=1): FTIMER / 2 = 921.6 kHz / 2 = 460.8 kHz
- Min frequenza (TH1=255): 921.6 kHz / 510 = 1.807 kHz
Metodo 3: Modalità 1 con Output Hardware (Se Disponibile)
Lo standard 8051 non ha attivazione output hardware timer in Modalità 1. Alcune varianti (DS89C420, AT89LP, Silicon Labs) aggiungono pin Timer Output (TO), ma l'8051/8031/8052 originale non li ha.
Metodo 4: Modalità 0 (Timer 13-bit) — Non Modalità 1
Modalità 0: timer 13-bit (TL1[4:0] + TH1[7:0]). Vincoli di frequenza massima simili.
La Risposta Reale: Dipende dal Metodo di Output
Se Usando Pura Modalità 1 (16-bit) + ISR Software:
Frequenza pratica massima ≈ 1-2 kHz (limitata da latenza ISR ~50-100 cicli)
Se Usando Modalità 2 (8-bit Auto-Reload) con Attivazione Hardware (su varianti supportate):
Massimo = 460.8 kHz (TH1=1, ciclo di lavoro 50%)
Se Usando Logica Esterna con Impulso Overflow Timer:
Impulso overflow Timer 1 ogni 65.536 conteggi = treno impulsi 14.06 Hz. Può alimentare divisore/contatore esterno.
Perché 11.0592 MHz? La Connessione Baud Rate
Questo quarzo esiste per comunicazione seriale, non per generazione frequenza:
| Baud Rate | Ricarico Timer 1 (Modalità 2) | Errore |
|---|---|---|
| 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) |
* Richiede SMOD=1 (PCON.7) per 921600 baud.
Raccomandazioni Pratiche
- Per baud rates: Usa Timer 1 Modalità 2 (8-bit auto-reload)—è progettato per questo
- Per generazione frequenza: Usa Timer 0/1 Modalità 2 con attivazione hardware (se variante supporta) o modalità PWM (varianti moderne)
- Per alte frequenze: Usa PCA (Programmable Counter Array) su 8052/varianti moderne—fino a FOSC/4 = 2.76 MHz
- Per Modalità 1 specificamente: È per misurazione tempo (larghezza impulso, periodo), non output frequenza
Conclusione
Usando lo standard Timer 1 Modalità 1 (timer 16-bit) dell'8051 con quarzo 11.0592 MHz: la frequenza software generata massima è ~1-2 kHz. Lo scopo del quarzo 11.0592 MHz è generazione baud rate tramite Modalità 2, non sintesi frequenza Modalità 1. Per frequenze più alte, usa Modalità 2, PCA o generatori di orologio programmabili esterni.