Witam.
Zbudowałem obrotomierz na Atmega8. Sprzętowo działa poprawnie by sie wydawało. Lecz odczyt obrotów samochodu jest z przedziału 6 - 30 obr/min. Wydaje mi się ze mam bład w samych obliczeniach wyniku.
Mój obrotomierz działa następująco przy założeniu 1 impuls na obrot (w rzeczywistosci 1,5 imp/obr):
impuls z cewki podawany jest na przerwanie int1.
Pierwszy impuls załącza timer1 (16bit?) a drugi go wyłacza.
Posiadam kwarc 12MHz a prescale timera1 to 256.
Teraz tak. Jak przekształcić wartość odliczoną przez timier na Obroty na minute?
Ja to robię tak: Kwarc / prescale (12MHz / 256 = 46875)
czyli jedno cykniecie timera1 jest co 1 / 46875 = ok 0,000021333 s
Teraz dla przykładu:
600 obr / min daje 10 obr / sek co daje 10 impulsów / sek czyli 1 impuls pojawia się co 0,1 sek. Czyli w tym czasie timer1 powinien przyjąć wartość ok 4687 imp.
Moje pytanie brzmi: czy dobrze rozumiem przekształcanie częstotliwości pracy uC na odmierzany czas przez timer1?
Z góry dzięki za pomoc.
Zbudowałem obrotomierz na Atmega8. Sprzętowo działa poprawnie by sie wydawało. Lecz odczyt obrotów samochodu jest z przedziału 6 - 30 obr/min. Wydaje mi się ze mam bład w samych obliczeniach wyniku.
Mój obrotomierz działa następująco przy założeniu 1 impuls na obrot (w rzeczywistosci 1,5 imp/obr):
impuls z cewki podawany jest na przerwanie int1.
Pierwszy impuls załącza timer1 (16bit?) a drugi go wyłacza.
Posiadam kwarc 12MHz a prescale timera1 to 256.
Teraz tak. Jak przekształcić wartość odliczoną przez timier na Obroty na minute?
Ja to robię tak: Kwarc / prescale (12MHz / 256 = 46875)
czyli jedno cykniecie timera1 jest co 1 / 46875 = ok 0,000021333 s
Teraz dla przykładu:
600 obr / min daje 10 obr / sek co daje 10 impulsów / sek czyli 1 impuls pojawia się co 0,1 sek. Czyli w tym czasie timer1 powinien przyjąć wartość ok 4687 imp.
Moje pytanie brzmi: czy dobrze rozumiem przekształcanie częstotliwości pracy uC na odmierzany czas przez timer1?
Z góry dzięki za pomoc.