Je suis tombé sur cette pièce dans digitalWrite
. Je ne sais pas pourquoi la suppression des interruptions et la configuration / réinitialisation de SREG sont nécessaires ici.
Quelqu'un peut-il éclairer ce sujet?
uint8_t oldSREG = SREG; cli (); if (val == LOW) {* out & = ~ bit;} else {* out | = bit;} SREG = oldSREG;
Je suppose qu'ils ne veulent pas qu'une interruption modifie éventuellement l'un des bits du registre de sortie pendant qu'il exécute * out = * out & ~ bit
?
Et qu'est-ce que le SREG aurait à voir avec cela? Le code pourrait-il affecter SREG et pourquoi cela importerait-il?
Quand la vitesse compte, j'utilise souvent la manipulation directe du port, j'aimerais avoir une idée s'il est nécessaire pour moi d'inclure ces "précautions".