« Utiliser les PIC 16F et 18F/Exercices/Interruption timer0 en langage C » : différence entre les versions

m
Robot : Remplacement de texte automatisé (-\b(\d{1,})[,.](\d{0,}?)\s[hH][zZ]\b +{{Unité|\1.\2|{{abréviation|Hz|hertz}}}})
Aucun résumé des modifications
m (Robot : Remplacement de texte automatisé (-\b(\d{1,})[,.](\d{0,}?)\s[hH][zZ]\b +{{Unité|\1.\2|{{abréviation|Hz|hertz}}}}))
N'oubliez pas la division par 16 qui est réalisée avec le if (!(nb % 16)) dans l'interruption.
 
<u>Calcul précis</u> : {{Unité|50|{{abréviation|Mhz|mégahertz}}}} / 4*(256*256*16) = {{Unité|11,.92 |{{abréviation|Hz|hertz}}}} (la division par 4 a toujours lieu).
 
3°) "if (!(nb % 16))" est une façon pas très efficace de calculer le reste de la division par 16. J'ignore la technique utilisé par le compilateur, mais ce calcul est forcément long puisqu'il n'y a pas d'instruction de division sur le 16F84.
5°) OPTION_REG = 0x84; = 1000 0100 => poids faible = 4 => division par 2 puissance 5 = 32
 
{{formatnum:4000000}} / 4*32*(256-96)*400 = {{Unité|0,.48828 |{{abréviation|Hz|hertz}}}} Soit pratiquement {{Unité|0,.5 |{{abréviation|Hz|hertz}}}}
 
Un meilleur calcul serait :
 
{{formatnum:4000000}} / 4*32*(256-94)*400 = {{Unité|0,.482253086 |{{abréviation|Hz|hertz}}}} (à cause des temps de latence) Cette connaissance n'est pas demandée aux étudiants.
 
6°)
143 371

modifications