Witam
Zamieszczam moje pytanie w tym dziale, ponieważ domyślam się, że problem leży w błędnie przeze mnie napisanym programie
Moim celem jest obsługa czujnika ultradźwiękowego HC-SR04 za pomocą Atmegi8 oraz dwóch timerów (timer0 oraz timer2). Od razu zaznaczam, że trybów CTC zamierzałem użyć dopiero na dalszym etapie czyli wtedy jeżeli opanuję programowo działanie tego czujnika na timerach w trybie normalnym.
Poniżej zamieszczę kod tego co wymyśliłem, jednak jeszcze kilka słów moich wyjaśnień.
Program działa w 100% jak należy i dobrze odmierza odległość zapalając różne diody. Dzieje się to jednak tylko wtedy, kiedy widzi "przeszkodę". Kiedy usunę przeszkodę a wysłane impulsy nie wracają do czujnika zaczyna się problem i mimo np. przyłożenie dłoni 5cm od czujnika nie umie już on wejść w przerwanie INT0. Pomaga dopiero przysunięcie dłoni na odległość około 1 cm - wtedy wszystko zaczyna działać i mogę poruszać dłonią a świecące diody zmieniają się jak widać w kodzie kiedy dłoń jest przed lub za 20 cm.
Uwagi:
a)Timer0 odlicza co 40 us (większą dokładność będę próbował robić dopiero gdy wszystko zadziała)
b) Wiem że timery można zatrzymać szybciej ale po prostu próbuję już wszystkiego, bo nie mogę zauważyć błędu
c) Wejście PD2 jest podciągnięte rezystorem 1 kilo om do GND.
Dodam że taktowanie Atmegi8 zostało ustawione na 8 MHz dzięki MKAvrCalculator
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Będę wdzięczny za wskazówki i wytknięcie błędów
Pozdrawiam
Maciek