Étape 2: Utilisation de Timer1 pour générer des signaux 50Hz
Nous utiliserons timer1 avec module CCP exploité comme "Comparer, trigger event spécial". Tout cela se passera à l’intérieur du code.
L’idée est donc de faire cela pour toujours :
1-charge timer1 avec les valeurs requises pour générer le plus longtemps que possible (104,9 ms).
2-charge la valeur « à temps » à l’intérieur du Registre du module CCP, mettez « 1 » à la broche de sortie (RC2) et commencer à timer1.
3 - timer1 commence à compter jusqu'à ce qu’il atteigne la valeur à l’intérieur des registres CCP (matches le temps). CCP définira son pavillon d’interruption.
routine d’interruption 4-intérieur du service, réinitialiser l’indicateur d’interruption CCP, charger des registres CCP avec la valeur « hors du temps » et la valeur « 0 » à la broche de sortie.
Le long de tout ce que nous devons utiliser une variable qui contient le nombre de graduations qui correspond à 20 ms en pleine période... c’est calculée comme suit :
Fréquence la plus basse timer1 (tel que calculé avant) = 9,53 Hz.
Plus haute période de timer1 = 104,9 ms.
donc Mme 104,9 correspond à la tique finale qui est 65535 (parce qu’il a 16 bits de résolution)... donc pour 20 ms, ce qui est du nombre de graduations nécessaires ?
N_20ms = (0,02 * 20000000) / (8 * 4) = 12500.
C’est donc lorsque timer1 a atteint le nombre de tiques 12500, 20 ms ! Il s’agit de la valeur de référence, nous allons utiliser dans notre logiciel... donc quand on veut heavy duty différents, que devons-nous faire ?
en douane de 50 % le nombre d’échelons = 0,5 * 12500 et pour 20 % = 0,2 * 12500 et ainsi de suite ! la ligne suivante est des éclaircissements :
nombre de graduations : 0___12500___65536
période de temps correspondante : 0___20ms___ 104.9ms
Nous sommes prêts à aller ! tout ce qui reste est le code lui-même !