Witam
Po dłuższej przerwie powróciłem i natknąłem się na problem
Próbuje zrobić obrotomierz który będzie zliczał duże jak i małe wartości od 20obr/minute do kilku tysięcy.
Ma być dokładny. Impulsy będzie mi generował taki czujnik zbliżeniowy który wykrywa tylko metal lub jakiś enkoder lub cokolwiek, na razie jest to nie ważne.
Skoro ma być dokałdny to musze liczyć czas między impulsami. W jakimś temacie Pan Mirek wspomniał o IR_decode gdzie właśnie atmega liczy czas między impulsami wykorzystując timer.
Posiadam Atmega32 podajże 8Mhz wewnetrzy. Jednak pewny nie jestm bo w MkAvrCalkulator jest tylko błąd AVRdude mimo że w eclipse program wgrywa się ładnie. Również w eclipse nie mogę nowego projektu stworzyć bo nie ma w nim kompilatora... Stare działają nowy nie. Nwm co się dzieje.
Program działa, pokazuje na lcd 1040900us czyli trochę ponad sekundę. Jako źródło impulsu wykorzystałem układ RTC który jak wiadomo generuje impuls co sekundę. Dzięki czemu będę mógł sprawdzić czy program w miarę dobrze oblicza.
Ale ta wartość ciągle spada.! I nie wiem jak ją zatrzymać. Próbowałem wszystkiego ale za każdym razem ta wartość spada w różnym tempie nawet czasami wzrośnie o kilka i znów spada. I tu moje pytanie czemu tak się dzieje. Przecież ta wartość powinna być w miarę stała a tutaj spada do 0 i się przekręca znów na max i znów spada...
Znając życie za pewne jakiś prosty babol ale samemu ciężko go wykryć dlatego proszę was o pomoc.
Timer 1 ustawiłem na 1Mhz Skoro atmega działa na 8Mhz.
Dodałem przerwanie od przepełnienia gdyż przy wolnych obrotach timer by się przekręcił (nabił do 65535)
Problemem jest bo nie wiem jak wyzerować ten timer w dowolnym momencie. I to trochę komplikuje dlatego po to są "status" który czuwa nad tym od kiedy do kiedy mierzymy. Tutaj mierze co 2 impuls.
Pozdrawiam i proszę o pomoc
Oto kompletny kod:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.