Hej.
Kolejnym moim wyzwaniem jest budowa obrotościomierza cyfrowego do samochodu na '51. Chciałbym pod Waszą ocenę poddać moje rozumowanie.
Impulsy będę zliczał z cewki zapłonowej, gdzie pojwiają mi się zera. Pomijam kwestię uformowania inpulsów do TTLa oraz fakt, że wynik muszę dzielić przez
4 - ilość cylindrów.Impulsy chcę podać na wejście przerwania INT0.
Teraz troszkę o czasie.
Zakres teoretyczny dla urządzenia pracy silnika określam na:
422 obr/min - 9000 obr/minChcę policzyć impulsy w danym określonym czasie. Mój procek ma przyłożony kwarc 11059200 Hz więc maksymalna częstotliwość pracy układu czasowego jako
16-to bitowego licznika impulsów wynosi 11059200 Hz / 24 = 460800 Hz (z dokumentacji). To daje czas trwania okresu rzędu: 0,00000217 sekundy.Licznik ma pracować w trybie 16to bitowym więc 0,00000217 sekundy x 65536 (do momentu zgłoszenia przerwania z licznika licząc od zera) = 0,142 sekundy.
Czyli 142 ms to minimalny okres dla uchwycenia choćby 1 impulsu, czyli wyznacza mi minimalne obroty, jakie jestem w stanie uchwycić.
Stąd mam:
1 / (0,142) x 60 = 422 obr/min (jak wyżej).Co do logiki działania:
- program ustawia liczniki T0 i T1 na zero przy starcie
- czeka na zgłoszenie przerwania opadjącym zboczem z INT0
- w momencie przerwania z INT0, blokuje to przerwanie i uruchamia 16bitowy licznik czasu T1 popychany wewnętrznym oscylatorem.
- jednocześnie poprzez zworę między INT0 a T0 , licznik T0 zlicza kolejne impulsy
- gdy T1 dojdzie do przepełnienia (65536) generuje przerwanie, które zatrzymuje zliczania, obrabia wynik dla programu głównego, zeruje liczniki i włącza przerwanie od INT0.
Wybaczcie, że może wyważam otwarte drzwi, ale zależy mi na zrozumieniu zagadnienia, a po przekopaniu Google i kilku art. EP miałem kilka pomysłów zamiast rozwiązania.
Za uwagi i sugestie z góry serdeczne THX. D.