Witam, zacząłem sobie dziś robić mały projekcik, są to 2 płytki z procesorami atmega32, jedna ma za zadanie naśladować silnik(prowizorycznie) jest generatorem impulsów prostokąt. z wykorzystaniem timera 16bit CTC, jeden kanał to częstotliwość a drugi to szerokość impulsu. Do przeliczania obrotów na minutę wykorzystałem wzorek:
x=(F_CPU/(T1_PRESCALER*((float)obroty)/60))+1;
Jak widać przelicza zmiennoprzecinkowo, żeby uniknąć pominięć w dzieleniu, na rozmiarze kodu narazie mi nie zależy, ale wartości OCR1A zgadzają się z liczonymi na palcach;). Tym urządzonkiem zadaje obroty drugiemu urządzeniu, które jest identyczne, z tym, że timer 16bit jest w trybie INPUT CAPTURE, moje pytanie jest, dlaczego zliczane czasy różnią się między sobą kwadratowo? tzn. nie ma stałego przesunięcia czasów tylko zmienne, gzie może być błąd w rozumowaniu/liczeniu? Jakie mogą być inne rozwiązania tego mini projektu niż input capture? Pozdrawiam.
x=(F_CPU/(T1_PRESCALER*((float)obroty)/60))+1;
Jak widać przelicza zmiennoprzecinkowo, żeby uniknąć pominięć w dzieleniu, na rozmiarze kodu narazie mi nie zależy, ale wartości OCR1A zgadzają się z liczonymi na palcach;). Tym urządzonkiem zadaje obroty drugiemu urządzeniu, które jest identyczne, z tym, że timer 16bit jest w trybie INPUT CAPTURE, moje pytanie jest, dlaczego zliczane czasy różnią się między sobą kwadratowo? tzn. nie ma stałego przesunięcia czasów tylko zmienne, gzie może być błąd w rozumowaniu/liczeniu? Jakie mogą być inne rozwiązania tego mini projektu niż input capture? Pozdrawiam.
