Witam
Też "bawię się" transoptorem szczelinowym (TCST 2103) i usiłuję zrobić licznik obrotów. Znalazłem ten temat więc stwierdziłem że nie ma co zakładać nowego.
Mój obrotomierz usiłowałem zrobić na przerwaniu zewnętrznym INT0 (ATmega8) i licznik zliczający jakąś podstawę czasu. Czyli w sumie mniej więcej tak jak kolega
Antystatyczny to pokazał gdzieś na początku tego tematu. Ale u mnie wystąpił taki problem że przerwanie wiązki które generowało przerwanie na INT0, powodowało inkrementacje licznika (liczącego przerwania) nie o jeden a o kilkanaście. Tak jakby to przerwanie wiązki trwało kilkanaście przerwań. Próbowałem wszystkich kombinacji, i zbocza narastającego i opadającego i poziomem niskim i dowolną zmianą, nic, to samo.
I teraz pomyślałem że może rozwiązaniem było by wykorzystanie wejścia ICP tylko nie bardzo rozumiem podrzucony tutaj kod, a po próbie zaadoptowania jego części do swojego projektu wyświetlają mi się jakieś głupoty (aczkolwiek stabilne
), więc super by było trochę to zrozumieć. Ogólnie czytając notę katalogową zrozumiałem że chodzi o to:
jak pojawi się zmiana stanu na wejściu ICP to wtedy wartość licznika z TCNT jest zapisywana do rejestru ICR. Czyli odmierzamy okresy czasu trwania jakiegoś tam impulsu. Powiedzmy w moim przypadku normalnie panuje stan niski a przecięci wiązki powoduje stan wysoki. Czyli takie coś:
___________| |___________
Wiec przydało by się mierzyć długość trwania tego stanu niskiego, nie tej szpilki chwilowej w momęcie przecięcia wiązki. Samą obsługę przerwania jeszcze wydaje mi się ogarniam:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
to by było pojawienie się zbocza narastającego, tak ?
Potem zerujemy licznik i po zboczu opadającym przepisujemy zawartość licznika, tylko to isOK ? ktoś wie po co to ? jak się licznik przepełni zerujemy potem przepisujemy do ok jescze to sprawdzamy czy różne ... nie pogubiłem się, jeszcze to atomic które przierwszy raz na oczy widzę. Ale nie ważne już samo przeliczanie, chodzi mi o zasadę dziłania tego mechanizmu. Jak by ktoś mógł parę zdań o tym i czy ja to dobrze rozumiem.