Jestem początkujący w dziedzinie programowania Atmelków.
Mam zamiar zrobić licznik impulsów , który w pierwszej linii wyświetlacza LCD 2*16 , będzie wyświetlał ilość impulsów , zaś w drugiej ma pokazywać ilość obrotów na minutę. Generalnie ma to rejestrować przebiegi wolnozmienne ok 1Hz nawet ciut mniej. Zaczerpnąłem kawałek kodu oczywiście z netu , standardowa obsługa Timer1 :
Oczywiście dochodzą do tego procedury obsługi wyświetlacza i konfiguracji Timer1 jako counter.
I tu mam problem, gdyż albo potrafię wyświetlić wyniki jako częstotliwość w obr/min albo umiem delikatnie to zmodyfikować i zrobić z tego zwykły licznik impulsów . Czy trzeba do tego zaprzęgnąć następny Timer ? Czy da sie z jednego czujnika tak pokombinować aby w czasie rzeczywistym pokazywało non stop ilość cykli(ilość impulsów) a także co 10 sekund pokazywało mniej więcej częstotliwość pracy? Cały ten układzik ma posłużyć do kontroli maszyny zmęczeniowej , w której ważna jest właśnie ilość wykonanych cykli i częstotliwość z jaką maszyna jest ustawiona. Oczywiście dojdzie do tego kilka innych następnych procedur , może jakaś klawiatura do ustawiania nastaw ale to dalszy temat. Najpierw chcę uporać sie z tym problemem. Nie wiem czy jest to możliwe ale podczas tego Wait 10, najprawdopodobniej nie da sie w tym samym momencie pokazywać na 2 linii LCD faktycznego dynamicznego przyrost impulsów , gdyż program sie zatrzyma aby licznik złapał przedział do obliczenia obrotów. Może całkiem inaczej należy podejść do samego zliczania impulsów wykonanych cykli a zostawić ta procedurę co powyżej , dla wyliczania częstotliwości? Może to co piszę jest masło maślane , więc przepraszam z góry.
Dodam tylko , że na Port A2 podawany jest sygnał z czujnika optycznego , w skrócie następuje tam zmiana stanu z niskiego na wysoki. W wersji testowej użyłem Atmega16, pewnie przerost formy nad treścią ale traktuje ta płytkę jako ćwiczebną i w końcowej fazie nie powinienem mieć problemów przeniesienia tego na innego mniejszego procka . Tyle już potrafię.
Proszę kod umieszczać w znacznikach code!
Robak
Mam zamiar zrobić licznik impulsów , który w pierwszej linii wyświetlacza LCD 2*16 , będzie wyświetlał ilość impulsów , zaś w drugiej ma pokazywać ilość obrotów na minutę. Generalnie ma to rejestrować przebiegi wolnozmienne ok 1Hz nawet ciut mniej. Zaczerpnąłem kawałek kodu oczywiście z netu , standardowa obsługa Timer1 :
Do
Timer1 = 0
Start Timer1
Wait 10
Stop Timer1
Wynik = Timer1 * 6 'wynik zliczania w czasie 10s mnożymy przez 6 dla otrzymania wyniku w: obr/min
Cls 'czyścimy LCD
Lcd "Takty: " ; Wynik
End
Oczywiście dochodzą do tego procedury obsługi wyświetlacza i konfiguracji Timer1 jako counter.
I tu mam problem, gdyż albo potrafię wyświetlić wyniki jako częstotliwość w obr/min albo umiem delikatnie to zmodyfikować i zrobić z tego zwykły licznik impulsów . Czy trzeba do tego zaprzęgnąć następny Timer ? Czy da sie z jednego czujnika tak pokombinować aby w czasie rzeczywistym pokazywało non stop ilość cykli(ilość impulsów) a także co 10 sekund pokazywało mniej więcej częstotliwość pracy? Cały ten układzik ma posłużyć do kontroli maszyny zmęczeniowej , w której ważna jest właśnie ilość wykonanych cykli i częstotliwość z jaką maszyna jest ustawiona. Oczywiście dojdzie do tego kilka innych następnych procedur , może jakaś klawiatura do ustawiania nastaw ale to dalszy temat. Najpierw chcę uporać sie z tym problemem. Nie wiem czy jest to możliwe ale podczas tego Wait 10, najprawdopodobniej nie da sie w tym samym momencie pokazywać na 2 linii LCD faktycznego dynamicznego przyrost impulsów , gdyż program sie zatrzyma aby licznik złapał przedział do obliczenia obrotów. Może całkiem inaczej należy podejść do samego zliczania impulsów wykonanych cykli a zostawić ta procedurę co powyżej , dla wyliczania częstotliwości? Może to co piszę jest masło maślane , więc przepraszam z góry.
Dodam tylko , że na Port A2 podawany jest sygnał z czujnika optycznego , w skrócie następuje tam zmiana stanu z niskiego na wysoki. W wersji testowej użyłem Atmega16, pewnie przerost formy nad treścią ale traktuje ta płytkę jako ćwiczebną i w końcowej fazie nie powinienem mieć problemów przeniesienia tego na innego mniejszego procka . Tyle już potrafię.
Proszę kod umieszczać w znacznikach code!
Robak
