Arduino: szybsze alternatywy dla digitalread () i digitalwrite ()?


13

Jakie są najszybsze alternatywy dla wywoływania funkcji Arduino digitalread()i digitalwrite()? Dopuszczalne są rozwiązania specyficzne dla AVR lub chipów.


3
Czytając to i ostatnie pytanie, wydaje się, że chcesz zrobić coś dość szybko. Myślę, że podając szczegółowe informacje na temat tego, co to jest i jak szybko może być przydatne.
Oli Glaser,

@Oli, dobry pomysł, dzięki. Obecny projekt to system dostrajania nadajników RC. Działa dobrze, ale chciałbym, aby dekodowanie sygnału RC PWM było wydajne, aby móc używać tego samego frameworka do innych projektów. Oto podsumowanie tego, co mam do tej pory: eastbay-rc.blogspot.com/2011/11/…
Mark Harrison

Odpowiedzi:




2

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


1
„wysokowydajny kod binarny” brzmiałby o wiele bardziej wiarygodnie wraz z rzeczywistymi pomiarami.
Dmitrij Grigoriew

2

Ludzie z Arduino.SE już to omówili i przetestowali. Jak się okazuje, digitalWriteFast()poprawa jest niewielka w porównaniu do zwykłych digitalWrite(). Bezpośredni dostęp do portu jest jednak około 35-40 razy szybszy niż digitalWrite().


0

Użyj ChipKit Uno32. Jest znacznie szybszy niż Arduinos oparte na AVR. Zajmie się również twoimi problemami z czasem.


1
Nie sądzę, aby kupowanie szybszego sprzętu było najlepszą odpowiedzią tutaj, przynajmniej dopóki nie osiągniesz granic obecnego sprzętu i nie zdecydujesz, że potrzebujesz czegoś szybciej.
Jon L

1
Dlaczego opinie negatywne? Chciał najszybszego rozwiązania, a nie tylko tego, które zapewniłem. Czy ktoś może zasugerować szybsze rozwiązanie oparte na Arduino?
Leon Heller

12
Ponieważ ChipKit nie jest platformą arduino, ale platformą kompatybilną z arduino. Oznacza to, że chociaż przełączanie portów jest szybsze, istnieje duże prawdopodobieństwo przepisania niektórych bibliotek. Biblioteki kart Ethernet, XBee, SD mogą w ogóle nie działać od razu po wyjęciu z pudełka. Ponadto Mark konkretnie prosi o alternatywne wywołania funkcji digitalRead / Write, a nie o nową platformę (doh).
Hans

2
Zmiana sprzętu nigdy nie jest dobrym rozwiązaniem. Przynajmniej przegapisz dobrą naukę i nigdy nie dowiesz się, jakie byłoby efektywne wykorzystanie sprzętu.
Rick_2047,

1
@ Rick_2047 Nie powiedziałbym „nigdy” - jeśli wymaganie jest nowe lub rozszerzone lub ilość rośnie, warto spojrzeć na alternatywy. Zgadzam się jednak, że ślepe rzucanie sprzętem przy rażącej nieefektywności oprogramowania jest niewyszukane - czasami nawet nie działa, ponieważ systemy o wyższej wydajności mogą nakładać własne koszty, a czasem kończą się wolniej niż prostsze w niektórych zadaniach. Naprawdę nie ma substytutu nauki o platformie, z której korzystasz lub którą rozważasz.
Chris Stratton,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.