• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Analiza programu, problem z naliczaniem zmiennej.
#3
Możesz kupić sobie inne Arduino z zegarem 20MHz lub jakiś przetaktowany powyżej 20MHz, zakres prędkości powinien się zwiększyć proporcjonalnie. Niektóre funkcje Arduino mogą nie działać prawidłowo.
Wywal z obliczeń w przerwaniach wszystko co ma float, zamiast liczyć XXX.YYY km zliczaj m. Tu trzeba przeanalizować cały tok obliczeń, od przyjętych stałych aż po wynik, wybrać zakres zmiennej najmniejszy jaki jest możliwy by nie doszło do jej przepełnienia, a obliczenia prowadzić tak by 1000x1000/1000 zamienić na (1000/1000)*1000, to zmniejsza liczby, ale można utracić informacje.
Może nawet jakieś dodanie kodu przyspieszyć działanie przerwań, czyli w loop liczysz sobie siermiężnie na float, ale dane do zsumowania w przerwaniu przeliczasz na m czy nawet mm (tu liczba 32 bity bez znaku wystarczy tylko na 4000 km) i jako liczbę całkowitą tam wrzucasz by ją sumować z zapisaną. Potem znowu przy odczycie zapisujesz do zmiennej float by ją wyświetlić na ekranie. W sumie zejdzie dłużej, ale w przerwaniu krócej.
Tak dla porównania, ESP32 dodaje long i float w tym samym czasie 0.08us, Atmega32 16MHz dodaje long w 2us, float w 10us, już to przyspieszyło by to przerwanie w dodawaniem floatów x5. Wymiana uC na ESP32 przyspieszyłaby bardziej, ale dużo więcej byłoby do przerobienia. Jak w AVR zamienisz liczbę 32bity na 16 bity to znowu będzie 2x szybciej.
W drugim przerwaniu wywoływana jest funkcja micros(), to też rujnuje jego czas wykonania, jest jeszcze gorzej. Jak nie wystarczy odchudzenie pierwszego przerwania to tu też trzeba powalczyć, a może przede wszystkim tu.
W każdym przerwaniu możesz dodać zmianę stanu jakiegoś pinu na czas trwania przerwania (na rejestrach, by to był pojedynczy cykl zegara), podłączyć oscyloskop i poobserwować ile impulsów jest w stanie zliczyć.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Analiza programu, problem z naliczaniem zmiennej. - przez kaczakat - 21-11-2020, 16:50

Skocz do:


Przeglądający: 1 gości