Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision |
| fr:examples:timer:periodic_interrupt [2010/03/09 15:01] – créée sdeniaud | fr:examples:timer:periodic_interrupt [2020/07/20 09:00] (current) – external edit 127.0.0.1 |
|---|
| Le programme suivant montre comment initialiser un compteur pour utiliser une interruption. On utilisera deux LEDs du module numérique dans le programme, l'état de la LED rouge est inversé périodiquement avec une temporisation matérielle, quant à la LED verte son état est inversé en utilisant une interruption. Il existe un autre exercice concernant l'utilisation de la temporisation, nous n'en parlerons donc pas ici. L'objectif principal est d'expliquer l'utilisation de la librairie des compteurs et interruptions. | Le programme suivant montre comment initialiser un compteur pour utiliser une interruption. On utilisera deux LEDs du module numérique dans le programme, l'état de la LED rouge est inversé périodiquement avec une temporisation matérielle, quant à la LED verte son état est inversé en utilisant une interruption. Il existe un autre exercice concernant l'utilisation de la temporisation, nous n'en parlerons donc pas ici. L'objectif principal est d'expliquer l'utilisation de la librairie des compteurs et interruptions. |
| |
| Au départ, le compteur 16-bits est initialisé grâce à la fonction ''timer1_init_ctc''. Avec cette fonction, le compteur CTC //clear timer on compare match// est initialisé dans le mode où la valeur maximal n'est pas 216 – 1 mais peut être sélectionnée. Dans ce cas la valeur maximale est égale à la valeur de l'index ICR1. Le diviseur du compteur est de 1024 et la valeur de ICR1 est 14400, donc quand la fréquence de l'horloge est de 14,7456 MHz, la période est égale à une seconde. Il est facile de la calculer avec la formule suivante: | Au départ, le compteur 16-bits est initialisé grâce à la fonction ''timer1_init_ctc''. Avec cette fonction, le compteur CTC //clear timer on compare match// est initialisé dans le mode où la valeur maximale n'est pas 216 – 1 mais peut être sélectionnée. Dans ce cas la valeur maximale est égale à la valeur de l'index ICR1. Le diviseur du compteur est de 1024 et la valeur de ICR1 est 14400, donc quand la fréquence de l'horloge est de 14,7456 MHz, la période est égale à une seconde. Il est facile de la calculer avec la formule suivante: |
| |
| f = 14745600 Hz / 1024 / 14400 = 1 | f = 14745600 Hz / 1024 / 14400 = 1 |