ATNEL tech-forum https://forum.atnel.pl/ |
|
Czujnik HC-SR04 https://forum.atnel.pl/topic21270.html |
Strona 1 z 1 |
Autor: | Pixelxx [ 10 wrz 2018, o 10:48 ] |
Tytuł: | Czujnik HC-SR04 |
Witam. Postanowiłem się zabrać za czujnik HC-SR04. Kod wygląda na chwilę obecną tak i coś źle mierzy czas w us i też źle przelicza na cm. |
Autor: | Situs [ 10 wrz 2018, o 17:33 ] |
Tytuł: | Re: Czujnik HC-SR04 |
Zakładając że konfiguracja timera jest OK, radziłbym Ci zerowac TCNT1 w funkcji hc_pomiar() a w przerwaniu tylko przypisywać do EchoWidth TCNT1. Do tego ten delay dać tuż po hc_pomiar() |
Autor: | andrews [ 11 wrz 2018, o 05:28 ] |
Tytuł: | Re: Czujnik HC-SR04 |
Pixelxx napisał(a): #define HC_ECHO (1<<PD6) #define ECHO_PORT PORTC #define ECHO_DIR DDRC Jaki typ mikrokontrolera i właściwie do którego pinu masz podłączony sygnał ECHO? Próbowałem szukać mikrokontrolera z pinem ICP1 na szóstym pinie PORTC i jakoś nie mogłem znaleźć. Pixelxx napisał(a): coś źle mierzy czas w us Mógłbyś sprecyzować, co to dokładnie oznacza? |
Autor: | Marhef [ 11 wrz 2018, o 10:07 ] |
Tytuł: | Re: Czujnik HC-SR04 |
Jak kolega wyżej zauważył, w programie echo port masz ustawiony na port C |
Autor: | andrews [ 11 wrz 2018, o 10:21 ] |
Tytuł: | Re: Czujnik HC-SR04 |
Pixelxx napisał(a): ICP1 jest na PD6 w Atmega32 Gdzie jest to wiadomo. Pytanie było raczej gdzie to fizycznie podłączyłeś, bo w programie masz pomylone - podciągasz do Vcc pin 6 PORTC. Pixelxx napisał(a): Zle mierzy tzn pokazuje jakiś czas i jakąś odległość, ale na wysokość gdzieś 1m pokazuje 15cm A jak zmieniasz wysokość, to wskazanie się zmienia proporcjonalnie? |
Autor: | Pixelxx [ 11 wrz 2018, o 10:28 ] |
Tytuł: | Re: Czujnik HC-SR04 |
Fakt pomyliłem DDRD miało być, poprawiłem już to i nadal to samo. Tak zmienia się proporcjonalnie |
Autor: | andrews [ 11 wrz 2018, o 17:06 ] |
Tytuł: | Re: Czujnik HC-SR04 |
Pixelxx napisał(a): Fakt pomyliłem DDRD miało być, poprawiłem już to i nadal to samo. Oczywiście, że to nic nie zmieni, bo przecież i tak do tego rejestru nic nie wpisujesz. Wpisujesz za to do rejestru zdefiniowanego jako ECHO_PORT, któremu przypisałeś PORTC, a intencją było raczej wpisanie do PORTD. Ale to mniej istotne, chciałem się upewnić, że to pomyłka w kodzie, a wyjście ECHO z modułu HC-SR04 masz prawidłowo podłączone do pinu 6 portu D, bo uznałem, że skoro pomyliłeś się w kodzie, to może też źle podłączyłeś. A Ty i tak nie odpowiedziałeś na moje pytanie (czyli gdzie jest podłączone, a nie jak jest w kodzie). To co jest w kodzie i tak jest zapewne nieistotne, bo to tylko włącza na pinie rezystor podciągający do Vcc, co najprawdopodobniej jest zbędne, bo ja nie zauważyłem w dokumentacji modułu, że jest to wymagane. Poprawiłem nieco Twój kod. Teraz powinien działać prawidłowo (o ile masz to prawidłowo podłączone). Główny błąd znajdował się w linii 31 Twojego kodu. język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Właściwie zwykle wymagane jest także zapewnienie atomowego dostępu do zmiennej wielobajtowej modyfikowanej w przerwaniu, jednak w tym przypadku nie jest to konieczne, chyba że znacząco skrócisz opóźnienie po wywołaniu funkcji hc_pomiar(); |
Autor: | Pixelxx [ 12 wrz 2018, o 10:01 ] |
Tytuł: | Re: Czujnik HC-SR04 |
Dziękuje za pomoc. Działa! |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |