Jakie są najszybsze alternatywy dla wywoływania funkcji Arduino digitalread()
i digitalwrite()
? Dopuszczalne są rozwiązania specyficzne dla AVR lub chipów.
performance
arduino
Mark Harrison
źródło
źródło
Odpowiedzi:
Uzyskaj bezpośredni dostęp do portów cyfrowych!
[...]
źródło
Ta biblioteka jest dobrą alternatywą: http://code.google.com/p/digitalwritefast/
źródło
Jak sugerowano powyżej, uzyskaj bezpośredni dostęp do portów cyfrowych. Ale ze stylem!
Zapisując na stałe wartości bezpośrednio w rejestrach sprzętowych, tracisz czytelność i przenośność.
W Github opublikowałem narzędzie, które nazwałem HWA, które pozwala na użycie zorientowanego obiektowo interfejsu do sprzętu, który nie wymaga kompilatora C ++ i wytwarza wysokowydajny kod binarny.
Jest tam HWA: https://github.com/duparq/hwa
źródło
Ludzie z Arduino.SE już to omówili i przetestowali. Jak się okazuje,
digitalWriteFast()
poprawa jest niewielka w porównaniu do zwykłychdigitalWrite()
. Bezpośredni dostęp do portu jest jednak około 35-40 razy szybszy niżdigitalWrite()
.źródło
Użyj ChipKit Uno32. Jest znacznie szybszy niż Arduinos oparte na AVR. Zajmie się również twoimi problemami z czasem.
źródło