Étape 4: Spin Basics, Suites
waitcnt (clkfreq + cnt)
Avant que nous décomposons cette instruction, laissez-moi vous expliquer tout d’abord clkfreq et cnt ;
clkfreq
L’hélice peut fonctionner à plusieurs fréquences d’horloge, de 20kHz à 80MHz. clkfreq est une variable système égale à horloge combien cycles (tiques) sont en 1 seconde. Si l’hélice tourne à 80MHz, clkfreq sera = 80,000,000. Si l’hélice tourne à 20kHz, il sera = 20 000.
CNT
CNT est l’horloge système. Au démarrage, cnt = 0 et il incrémente à chaque tick tout le chemin à 2³² avant le renversement à 0. CNT est une valeur en lecture seule, vous ne pouvez pas modifier l’horloge du système, il suffit de lire ce qu’il est.
Maintenant, waitcnt : il suspend l’exécution du programme, jusqu'à ce que l’horloge système atteigne la valeur dans la parenthèse. Quelle est la valeur entre parenthèses ? Le système actuel de l’horloge (cnt) PLUS le nombre de graduations en une seconde. waitcnt (clkfreq + cnt) raconte la prop de tenir pendant 1 seconde avant d’aller à la prochaine instruction.
Que se passe-t-il si nous voulions attendre une seconde ? waitcnt (clkfreq/2 + cnt). Que diriez-vous de 5 secondes ? waitcnt (clkfreq * 5 + cnt)
Ainsi, dans notre programme, nous avons renversé la broche 0 pour une sortie, connecté à V + (conduite haute) pour allumer la LED et a attendu pendant une seconde. Voici la prochaine instruction ;
outa [0]: = 0
Cette instruction permet d’inverser pin 0 d’étant connecté à V + pour se connecter à la masse. Elle désactive la LED. Notez que pin 0 est toujours une sortie, mais elle est reliée à la terre.
waitcnt (clkfreq + cnt)
Tout comme la dernière fois, il suspend l’exécution du programme, jusqu'à ce que l’horloge système est égale à la valeur entre parenthèses. Dans ce cas il se mettra en pause avait pendant une seconde.
Enroulant vers le haut
La dernière instruction dans notre boucle de répétition est terminée. Parce que notre boucle de répétition n’a aucune condition de fin, il va commencer à nouveau sur la première ligne (outa [0]: = 1) et continuer à fonctionner indéfiniment.