| Con la presenza di un
buffer FIFO (per esempio di 16
bytes):
| la ricetrasmissione viene gestita dall'UART
senza l'intervento del processore, che nell'attesa è libero di fare altre cose |
| l'intervento del processore è richiesto dall'UART
(attivando da hardware una linea di interruzione)
solo quando sono stati
inviati tutti i 16 bytes predisposti nel
buffer o ne sono stati
ricevuti fino a 14, riducendone
quindi drasticamente il
numero |
| il valore massimo di bytes (14
su 16, detto trigger level)
da ricevere prima di far partire una
richiesta di interrupt, si può predisporre da programma anche ai
valori 8, 4
e 1 |
| il processore può
trasferire (o
leggere) in
blocco tutti i bytes da
trasmettere (o ricevuti), con ulteriore ottimizzazione dei tempi |
| se le
richiesta di interruzione sono fatte (mediamente) ogni 16 bytes
ricevuti o trasmessi, i tempi a disposizione per il
servizio
diventano ovviamente 16 volte più grandi; la tabella mostra una
stima dei tempi nell'ipotesi precedente, formattazione con
solo bit di start e
di stop cioè 10 bit per ogni byte
d'informazione:
velocità
bit/sec |
caratteri
al sec |
interrupt
al sec |
tempo a disposizione
per ogni interrupt |
1200 |
120 |
7,5 |
[120/16] |
133
ms |
[1000/7,5] |
2400 |
240 |
15 |
[240/16] |
66,6
ms |
[1000/15] |
4800 |
480 |
30 |
[480/16] |
33,3
ms |
[1000/30] |
9600 |
960 |
60 |
[960/16] |
16,6 ms |
[1000/60] |
19200 |
1920 |
120 |
[1920/16] |
8,33 ms |
[1000/120] |
38400 |
3840 |
240 |
[3840/16] |
4,16 ms |
[1000/240] |
57600 |
5760 |
360 |
[5760/16] |
2,77 ms |
[1000/360] |
115200 |
11520 |
720 |
[11520/16] |
1,38
ms |
[1000/720] |
|
| la velocità di comunicazione può raggiungere
tranquillamente 115200 baud, senza perdita
d'informazione |
|