Pour obtenir un baud rate parfait avec l’UART, sachant que l’on doit utiliser 9.600 bits/sec ou le double, 19.200 bits/sec, certaines vitesses sont très bien, comme :
BRGH=1
- 19,6608 = 16 x 19.200 x 64
- 14,7456 = 16 x 19.200 x 48
- 6,1440 = 16 x 19.200 x 20
- 12,2880 = 16 x 19.200 x 40
- 18,4320 = 16 x 19.200 x 60
- 24,5760 = 16 x 19.200 x 80
Voyons maintenant les valeurs intéressantes pour un usage facile des timers.
Le but est d’obtenir des fractions du temps « intéressantes » ... comme des fractions simples de millisecondes.
Voir le fichier excel pour comparer les valeurs de quartz courantes.
Une valeur très intéressante est 12,288 MHz, en effet, 256 x 48 = 12288, donc on peut très facilement obtenir une milliseconde, plusieurs de ses fractions et plusieurs de ses multiples.
Or, il apparaît que 12,288 MHz est aussi un bon choix pour l’UART, ce sera donc notre choix.
Cela signifie que le PIC 16F877A ira à 3,072 mips, soit un peu plus de 3 instructions par µs et que un cycle d’instruction prendra 0,32552083333333... µs, soit environ 0,33 µs.
On peut aussi choisir 18,432 MHz, car 256 x 72 = 18432 (valeur max pour les PIC16F)
Pour les dsPIC30 on dispose aussi de 24,576 MHz.
Dans les cas ou une vitesse maximum est nécessaire, on peut aussi penser à 30,76 MHz mais il faudra tolérer une légère erreur car la bonne valeur serait 30,72 MHz