Étape 7: Service Interruipt Routine
Comme je l’ai mentionné dans l’étape précédente, nous avons mis notre Interrupt Service Routine ou ISR à notre fonction de LEDchange(). Cette fonction peut être tout ce que vous voulez, mais les interruptions sont des choses très capricieux, alors il y a un couple de lignes directrices, que vous aurez envie de suivre.
Tout d’abord, rapports de recherche internationale doivent s’exécuter rapidement. Revenons à notre exemple de salle de classe. Lorsque le professeur appel à vous pour votre question, que se passe-t-il si vous commencé à avoir une longue conversation avec le professeur ? Il serait totalement perturber la classe, et le professeur ne serait pas en mesure de revenir à sa conférence pour le finir avant la fin de classe. Au contraire, vous essayez de faire votre question très courte, et votre professeur essaye de vous donner une réponse concise. Il en va de même pour les interruptions. Elles interrompent le flux du programme normal, alors vous aurez envie de revenir à cela dès que possible.
N’UTILISEZ JAMAIS DELAY() DANS UNE RÉGION DÉSIGNÉE. En général, la fonction delay() est considéré comme programmation bâclée. Fondamentalement, il gèle votre microcontrôleur pendant un certain temps. Pendant ce temps, aucun autre code ne peut s’exécuter (sauf pour les autres interruptions), et qui a perdu sur le plan fonctionnel de temps. Si vous utilisez delay() dans un rapport de recherche internationale, ce rapport de recherche internationale aura pour toujours, qui viole notre première règle. Il fond c’est propre avertissement, toutefois, car c’est un des outils fondamentaux que nouveaux programmeurs découvrent lors de leur tout premier programme de blink et peuvent facilement vous voyage vers le haut en entrant dans des sujets plus avancés comme les interruptions.
Cette dernière règle est plus d’une préférence personnelle qu’autre chose. J’ai entendu dire que parfois autres personnes ont des questions en essayant de manipuler les produits dans leur rapport de recherche internationale, comme allumer/éteindre LEDs. Généralement je pense que comme des processus lents, donc si possible j’essaie d’éviter de manipuler les sorties à l’intérieur de mes rapports de recherche internationale. C’est pourquoi nous utilisons la variable LEDstate pour définir l’état de nos LED, au lieu de définir directement. Cependant, les interruptions sont couramment utilisées lors de la communication avec les autres commissions et d’autres, ce n’est pas toujours pratique ou même possible pour empêcher la manipulation de sorties, donc ce n’est pas une règle dure et rapide. Utilisez votre meilleur jugement !