Modèles Accélérez Arduino E / S

Il est simple d’oublier, mais l’Arduino utilise C ++. En règle générale, la partie C ++ est dans les bibliothèques, ainsi que le cadre ainsi que de nombreuses personnes ont tendance à coder leurs principaux programmes utilisant un style C qui utilise simplement les objets de la bibliothèque telles que des extensions de langue C. [Fredllll] Il suffit de produire une bibliothèque de modèles de conception pour accélérer les E / S Arduino ainsi que le partagé sur GitHub.

Si vous avez déjà fait quelque chose de majeur avec l’Arduino, vous comprenez probablement que pendant que la digitalwrite est pratique, cela fait de beaucoup de travail dans les coulisses pour s’assurer que la broche est configurée ainsi que celle-ci ajoute des frais généraux à chaque appel. [Fredllll] Les versions de modèle de conception de la conception peuvent changer de code PIN en deux cycles. Vous pouvez couper cela en deux si cela ne vous dérange pas de déranger la spécification d’autres broches sur le même port.

Vous pouvez utiliser une constante pour allumer une goupille, comme ceci:

Switchon <1> ();
Si vous n’aimez pas utiliser des chiffres magiques (et c’est intelligent), vous pouvez définir une constante:

const uint8_t LEDPIN = 1;
Switchon ();
Parce que vous voulez très probablement faire une timing élégante, il existe également un modèle de conception NOP qui vous permet de retarder un nombre défini de cycles. Voici un code de test de Reddit qui produit une onde carrée de 1,3 MHz, par exemple:

const uint8_t mypin = 5;
Vide boucle () {
cli (); // désactive les interruptions car ils bousilleraient le timing
fais {
commutéxxclusif (); // 1 cycle
nop <5> (); // 5 cycles
Switchoffportofpin (); // 1 cycle
nop <3> (); // 3 cycles
} tandis que (1) // saute de retour à faire est 2 cycles
}
De toute évidence, ce n’est pas le maximum, non plus, car il y a huit cycles de retard dans la boucle.

Vous n’êtes pas obligé de comprendre beaucoup de modèles à utiliser cette bibliothèque, cependant, si vous voulez comprendre plus, nous les avons couverts par le passé. Nous avons noté avant que cette denaprise ait environ cinquante fois plus lentement qu’un accès direct port, ainsi que les autres opérations d’E / S ne sont pas bien meilleures. Il serait fascinant de vérifier si des modèles pourraient rendre les autres opérations beaucoup plus efficaces.

Back to top