Posiadam Ultradźwiękowym Czujnikiem Odległości HC-SR04. Podłączyłem go tak jak trzeba, Triger do nóżki PB2, a Echo do nóżki PB1.
Nie wszystko działa poprawnie, czujnik mierzy odległość ale potrzebuje na to dużo czasu. Poniżej kod:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Powyżej ustawienie Trig jako wyjścia, a Echo jako wejście, oraz inicjalizacja Timera2.
Timer ten generuje przerwanie z f=100.000Hz, czyli co 10us.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Czyli rozpoczyna nowy pomiar i go zwraca
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Część główna programu, ma co 1 sekundę wyświetlić zmierzoną odległość, i tutaj występuje problem bo pomiar dokonywany jest znacznie dłużej, jakąś minutę. Mogę co prawda zmienić opóźnienie na _delay_ms(10); i wtedy pomiar jest wykonywany raz na jakąś sekundę.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
powyżej przerwanie, ustawia ono stan dodatni na 10us na Trigerze, a następnie czeka na sygnał Echo. Jeśli się pojawi to odlicza czas tego sygnału aż do zakończenia sygnału. Następnie przetwarza wynik na cm.
Nie wiem co tu jest nie tak, może jakieś problemy ze stosem?