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();