|
24 | 24 |
|
25 | 25 | ### Transmit Holding Register (THR)
|
26 | 26 |
|
27 |
| -Tout ce qui sera ecrit sur ce registre sera transmis en liaison série. |
| 27 | +Tout ce qui sera ecrit sur ce registre sera transmis par l'UART. |
28 | 28 |
|
29 | 29 | ### Receive Buffer Register (RBR)
|
30 | 30 |
|
| 31 | +Tout ce qui est reçu par l'UART sur la laison série sera accessible sur ce registre. |
31 | 32 |
|
| 33 | +### Interrupt Enable Register (IER) |
32 | 34 |
|
33 |
| -## Interrupt Enable Register (IER) |
| 35 | +| 7-4 | 3 | 2 | 1 | 0 | |
| 36 | +|---------|--------------|----------------------|-----------|-------------------------| |
| 37 | +| reservé | MODEM Status | Receiver Line Status | THR Empty | Received Data Available | |
34 | 38 |
|
35 |
| -| 7-4 | 3 | 2 | 1 | 0 | |
36 |
| -|----------|--------------|----------------------|-----------|-------------------------| |
37 |
| -| reserved | MODEM Status | Receiver Line Status | THR Empty | Received Data Available | |
| 39 | +- **__Received Data Available__**: Si le bit est à 1 alors une interruption sera généré à la réception d'un charactère. |
| 40 | +- **__THR Empty__**: si le bit est à 1 alors une interruption sera généré quand il sera possible d'écrire à nouveau dans le registre **THR** |
38 | 41 |
|
39 |
| -## Interrupt Identification Register (IIR) |
| 42 | +### Interrupt Identification Register (IIR) |
40 | 43 |
|
| 44 | +### Line Control Register (LCR) |
41 | 45 |
|
| 46 | +### Modem Control Register (MCR) |
| 47 | + |
| 48 | +### Line Status Register (LSR) |
| 49 | + |
| 50 | +### Modem Status Register (MSR) |
| 51 | + |
| 52 | +### Scratch Register (SCR) |
| 53 | + |
| 54 | +### Divisor Latch LSB (DLL) & Divisor Latch MSB (DLH) |
| 55 | + |
| 56 | +| Baud Rate | 1.8432Mhz | 3.072 MHz | 8.0 MHz | |
| 57 | +|-----------|-----------|-----------|---------| |
| 58 | +| 50 | 2304 | 3840 | 10000 | |
| 59 | +| 75 | 1536 | 2560 | 6667 | |
| 60 | +| 110 | 1047 | 1745 | 4545 | |
| 61 | +| 134.5 | 857 | 1428 | 3717 | |
| 62 | +| 150 | 768 | 1280 | 3333 | |
| 63 | +| 300 | 384 | 640 | 1667 | |
| 64 | +| 600 | 192 | 320 | 833 | |
| 65 | +| 1200 | 96 | 160 | 417 | |
| 66 | +| 1800 | 64 | 107 | 277 | |
| 67 | +| 2000 | 58 | 96 | 250 | |
| 68 | +| 2400 | 48 | 80 | 208 | |
| 69 | +| 3600 | 32 | 53 | 139 | |
| 70 | +| 4800 | 24 | 40 | 104 | |
| 71 | +| 7200 | 16 | 27 | 69 | |
| 72 | +| 9600 | 12 | 20 | 52 | |
| 73 | +| 19200 | 6 | 10 | 26 | |
| 74 | +| 38400 | 3 | 5 | 13 | |
| 75 | +| 56000 | 2 | - | 9 | |
| 76 | +| 128000 | - | - | 4 | |
| 77 | + |
| 78 | +Pour l'IBM PC la clock est de 1.8432Mhz |
| 79 | + |
| 80 | +## Exemple (en pseudo C) |
| 81 | + |
| 82 | +Partons du principe que nous avont `uart8250_write` permetant d'ecrire une valeur dans un registre et `uart8250_read` permetant de lire la valeur d'un registre. |
| 83 | + |
| 84 | +### Initialisation de l'UART |
| 85 | + |
| 86 | +```c |
| 87 | + /* on desactive les interuptions en metant IER à zero */ |
| 88 | + uart8250_write(IER, 0x0); |
| 89 | + |
| 90 | + /* DLAB à 1 */ |
| 91 | + uart8250_write(LCR, (1 << 7)); |
| 92 | + |
| 93 | + /* 9600 baud donc un diviseur de 12 (voir le tableau) */ |
| 94 | + uart8250_write(DLH, 0x0); |
| 95 | + uart8250_write(DLL, 0xC); |
| 96 | + |
| 97 | + /* TODO */ |
| 98 | +``` |
42 | 99 |
|
43 | 100 | ## Références
|
44 | 101 |
|
|
0 commit comments