Witam,
Zabieram się do oprogramowania czujnika ultradźwiękowego SRF04 podpiętego do avr'ka AT90CAN128. Czujnik dokładnie taki: http://www.robot-electronics.co.uk/htm/srf04tech.htm
Muszę zwrócić wartość w centymetrach od przeszkody. Zatem potrzebne będzie wg mnie użycie zewnętrznego przerwania i użycie timera.
Koncepcję mam na razie taką, że pulsuję w pętli co 12uS pin nadający. Na drugi pin przychodzi echo (stan 1) z odpowiednio długim czasem w zależności od odległości i wraca do zera. Czyli muszę napisać obsługę przerwania tak aby w przypadku wykrycia stanu 1 na pinie echo włączyć timer (albo wywoływać timer już po wywołaniu funkcji pulsującej?) i gdy przerwanie wykryje stan niski zatrzyma timer zwracając aktualną jego wartość. Potem jedynie obróbka w postaci odpowiednich obliczeń, żeby dostać drogę w cm.
Jaką Wy obralibyście metodę w takim przypadku. Wszelkie inne spostrzeżenia również mile widziane.
Zabieram się do oprogramowania czujnika ultradźwiękowego SRF04 podpiętego do avr'ka AT90CAN128. Czujnik dokładnie taki: http://www.robot-electronics.co.uk/htm/srf04tech.htm
Muszę zwrócić wartość w centymetrach od przeszkody. Zatem potrzebne będzie wg mnie użycie zewnętrznego przerwania i użycie timera.
Koncepcję mam na razie taką, że pulsuję w pętli co 12uS pin nadający. Na drugi pin przychodzi echo (stan 1) z odpowiednio długim czasem w zależności od odległości i wraca do zera. Czyli muszę napisać obsługę przerwania tak aby w przypadku wykrycia stanu 1 na pinie echo włączyć timer (albo wywoływać timer już po wywołaniu funkcji pulsującej?) i gdy przerwanie wykryje stan niski zatrzyma timer zwracając aktualną jego wartość. Potem jedynie obróbka w postaci odpowiednich obliczeń, żeby dostać drogę w cm.
Jaką Wy obralibyście metodę w takim przypadku. Wszelkie inne spostrzeżenia również mile widziane.
![[C][AT90CAN128]Obsługa przerwania i zliczenie czasu [C][AT90CAN128]Obsługa przerwania i zliczenie czasu](https://wstaw.org/m/2011/05/22/sscrmin.jpg)