Was sind die schnellsten Alternativen zum Aufrufen der Arduino-Funktionen digitalread()
und digitalwrite()
? AVR-spezifische oder chipspezifische Lösungen sind akzeptabel.
performance
arduino
Mark Harrison
quelle
quelle
Antworten:
Greifen Sie direkt auf die digitalen Ports zu!
[...]
quelle
Diese Bibliothek ist eine gute Alternative: http://code.google.com/p/digitalwritefast/
quelle
Greifen Sie wie oben vorgeschlagen direkt auf die digitalen Anschlüsse zu. Aber mit Stil!
Wenn Sie fest codierte Werte direkt in die Hardwareregister schreiben, verlieren Sie an Lesbarkeit und Portabilität.
Ich habe auf Github ein Tool namens HWA veröffentlicht, mit dem Sie eine objektorientierte Schnittstelle zu der Hardware verwenden können, für die kein C ++ - Compiler erforderlich ist und das hocheffizienten Binärcode erzeugt.
HWA ist da: https://github.com/duparq/hwa
quelle
Leute bei Arduino.SE haben dies bereits diskutiert und getestet. Wie sich herausstellt,
digitalWriteFast()
ist nicht viel Verbesserung gegenüber regulärendigitalWrite()
. Der direkte Portzugriff ist jedoch ungefähr 35-40-mal schneller alsdigitalWrite()
.quelle
Verwenden Sie das ChipKit Uno32. Es ist viel schneller als die AVR-basierten Arduinos. Es wird sich auch mit Ihren Timing-Problemen befassen.
quelle