• 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
Modelarski sterownik silnika DC na Atmega8 według projektu AVT
#40
Jak pomieszałeś <><>, zamiast zrobić drabinkę < < < to są teraz takie wartości odczytane, z którymi program nie wie co robić, 1550 i 1450 nie pasuje do żadnego ifa. Ewentualnie trzeba >= i <=.
Najpierw zastrzegasz że if (pwM1a>=255) pwM1a=255; ale dopiero potem wyliczasz pwM1a = map(nThrottleIn ,1550, 1995, 0,255);
else if (nThrottleIn <1550, nThrottleIn> 1450 ) a to już nie wiem co ma robić, jeśli to ma być lub to II lub or, a nie przecinek.
Funkcja calcInput() wygląda podejrzanie, jest wywoływana w przerwaniu, jeśli sygnał ma dużą częstotliwość, a nadziubdziałeś do niej trochę obliczeń, wywołujesz w przerwaniu inne funkcje, to może przestać gadać, tym bardziej że w loop znowu drukujesz te wartości na pełnej prędkości, print to inne przerwania, nie ważne czy od ostatniego printa minęło 10us czy 100ms, a Twoje oczy i tak nie dadzą rady czytać szybciej niż 10 linii na s, 10Hz.
W przerwaniu nie powinieneś robić nic poza wyznaczeniem tego czasu impulsu, zdefiniować zmienne jako volatile i do nich przekazać wartości, potem w innej funkcji wywołanej z loop ich użyć.
To musiało tak się skończyć, bo nie panujesz nad upływem czasu.
Mignij sobie LED w przerwaniu, zaświecić na początku i zgaś na koniec, zobacz czy po prostu ten led będzie świecić przez ciągłe wywoływanie.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Modelarski sterownik silnika DC na Atmega8 według projektu AVT - przez kaczakat - 03-09-2022, 01:08

Skocz do:


Przeglądający: 2 gości