Quelles sont les alternatives les plus rapides à l'appel des fonctions Arduino digitalread()
et digitalwrite()
? Les solutions spécifiques aux AVR ou aux puces sont acceptables.
performance
arduino
Mark Harrison
la source
la source
Réponses:
Accédez directement aux ports numériques!
[...]
la source
Cette bibliothèque est une bonne alternative: http://code.google.com/p/digitalwritefast/
la source
Comme suggéré ci-dessus, accédez directement aux ports numériques. Mais avec style!
En écrivant des valeurs codées en dur directement dans les registres matériels, vous perdez en lisibilité et en portabilité.
J'ai publié sur Github un outil que j'ai appelé HWA qui vous permet d'utiliser une interface orientée objet vers le matériel qui ne nécessite pas de compilateur C ++ et produit du code binaire à haute efficacité.
HWA est là: https://github.com/duparq/hwa
la source
Les gens d'Arduino.SE ont déjà discuté et testé cela. En fait, il
digitalWriteFast()
n'y a pas beaucoup d'amélioration par rapport à la normaledigitalWrite()
. L'accès direct au port, cependant, est environ 35 à 40 fois plus rapide quedigitalWrite()
.la source
Utilisez le ChipKit Uno32. C'est beaucoup plus rapide que les Arduinos basés sur AVR. Il traitera également vos problèmes de synchronisation.
la source