Witam,
niestety to już mój drugi watek w związku z miernikiem ultradźwiękowym który robię.
Najpierw próbowałem z przetwornikiem a/c ale nie dawało to żadnych odczytów i teraz spróbowałem z komparatorem a/c i timerem.
Do atmegi podłączyłem nadajnik ultradźwiękowy przeciwsobnie. Włączam timer1 z przerwaniem od przechwytywania. Programowo wysyłam paczkę impulsów o częstotliwości 40kHz. Gdy echo dociera do odbiornika teoretycznie powinno wystąpić wzrost napięcia na pinie ANI1. Powinno wystąpić przerwanie przepisanie wartości timera1 do rejestru CRI1, a potem wyświetlenie przeliczonej wartości.
Niestety tak się nie dzieje miernik rejestruje ciągle jakieś wartości, a jak przystawię rękę około 3cm nad odbiornik to niezależnie czy jest podłączony nadajnik wyświetla około 3cm -3,6cm.
Proszę o jakaś podpowiedź co źle robię. Sprawdzałem czy pętla while jest wykonywana ciągle i wychodzi na to, że gdy występują przerwania to pętla jest wykonywana, a gdy nie ma nic przed odbiornikiem to dioda od wykonywania pętli nie włącza się czyli pętla nie jest wykonywana.
niestety to już mój drugi watek w związku z miernikiem ultradźwiękowym który robię.
Najpierw próbowałem z przetwornikiem a/c ale nie dawało to żadnych odczytów i teraz spróbowałem z komparatorem a/c i timerem.
Do atmegi podłączyłem nadajnik ultradźwiękowy przeciwsobnie. Włączam timer1 z przerwaniem od przechwytywania. Programowo wysyłam paczkę impulsów o częstotliwości 40kHz. Gdy echo dociera do odbiornika teoretycznie powinno wystąpić wzrost napięcia na pinie ANI1. Powinno wystąpić przerwanie przepisanie wartości timera1 do rejestru CRI1, a potem wyświetlenie przeliczonej wartości.
Niestety tak się nie dzieje miernik rejestruje ciągle jakieś wartości, a jak przystawię rękę około 3cm nad odbiornik to niezależnie czy jest podłączony nadajnik wyświetla około 3cm -3,6cm.
Proszę o jakaś podpowiedź co źle robię. Sprawdzałem czy pętla while jest wykonywana ciągle i wychodzi na to, że gdy występują przerwania to pętla jest wykonywana, a gdy nie ma nic przed odbiornikiem to dioda od wykonywania pętli nie włącza się czyli pętla nie jest wykonywana.
Kod: C / C++
