Postawiłem sobie zadanie opracowania licznika prędkości. Powiedzmy, że do roweru. Konstrukcję i jej sens odłóżmy na razie na bok
Zadanie dla procesora niby banalnie proste - liczyć prędkość przez badanie impulsu na pinie.
I teraz zaczynają się schody. Mogę to zrobić na kilka sposobów (te które znam):
1) mierzenie czasu między impulsami
2) mierzenie liczby impulsów w czasie,
dodatkowo zmodyfikowane sposobem pomiaru impulsów: Tx, INTx lub zwykły PINx.
Nie wiem, który sposób jest najlepszy, przy założeniu, że procesor powinien mierzyć prędkość "w tle" (czyli raczej opcja przerwań), podawać wynik (wstępnie na zwykły lcd 16x2) a w międzyczasie kalkulować inne obliczanki jak "rasowy" licznik i jeszcze obsługiwać w trakcie jakieś proste menu nastawcze.
Jak do tego podejść?
Wstępnie wybrałem opcję pomiaru czasu między impulsami na przerwaniu INTx z timerem.
Nie mam przyrządu pomiarowego (koła z czujnikiem halla) go generowania jednostajnych przerwań, ale proste zwieranie styku do masy ma chyba 2 wady.
Po 1, mierzy czas między dwoma impulsami, czyli co drugi obrót koła, po 2, podawane dwa kolejne wyniki strasznie różnią się między sobą.
Czy w ogóle ta metoda pomiaru ma rację bytu przy w/w założeniach?
Zadanie dla procesora niby banalnie proste - liczyć prędkość przez badanie impulsu na pinie.
I teraz zaczynają się schody. Mogę to zrobić na kilka sposobów (te które znam):
1) mierzenie czasu między impulsami
2) mierzenie liczby impulsów w czasie,
dodatkowo zmodyfikowane sposobem pomiaru impulsów: Tx, INTx lub zwykły PINx.
Nie wiem, który sposób jest najlepszy, przy założeniu, że procesor powinien mierzyć prędkość "w tle" (czyli raczej opcja przerwań), podawać wynik (wstępnie na zwykły lcd 16x2) a w międzyczasie kalkulować inne obliczanki jak "rasowy" licznik i jeszcze obsługiwać w trakcie jakieś proste menu nastawcze.
Jak do tego podejść?
Wstępnie wybrałem opcję pomiaru czasu między impulsami na przerwaniu INTx z timerem.
Config Int1 = Falling 'wejscie czujnika
Config Timer1 = Timer , Prescale = 256
On Int1 Przerwanie
On Timer1 Przepelnienie
Enable Int1
Enable Timer1
Enable Interrupts
Nie mam przyrządu pomiarowego (koła z czujnikiem halla) go generowania jednostajnych przerwań, ale proste zwieranie styku do masy ma chyba 2 wady.
Po 1, mierzy czas między dwoma impulsami, czyli co drugi obrót koła, po 2, podawane dwa kolejne wyniki strasznie różnią się między sobą.
Przerwanie:
Toggle Pomiar
If Pomiar = 1 Then 'jezeli flaga zezwolenia pomiaru ustawiona to
Timer1 = 0 'wyzeruj timer1
Przepelniacz = 0 'flaga przepelnienia licznika
Start Timer1
Else
Stop Timer1 'zatrzymaj timer1
Disable Int1 'zablokuj przerwanie zeby sie nie wlaczylo w czasie obliczen
Flaga_pomiaru = 1 'ustaw flage pomiar dokonany - obliczenia w petli glownej do..loop
End If
Return
Czy w ogóle ta metoda pomiaru ma rację bytu przy w/w założeniach?