Lukasz89 napisał(a):
Janadamis napisał(a):
Po drugie po co w przerwaniu wyłączasz timer?
Dokładnie, nie ma takiej potrzeby, preskaler ustaw raz na początku zaś w przerwaniu rób coś innego:
Jeszcze nie sprawdziłem, ale jeżeli nie zatrzymam TIMER0 to zmienna licznik będzie się wciąż inicjować. Więc na jakiej podstawie ma być prawidłowo odczytany czas ?
Cytuj:
Poza tym możesz ustawić kombinacje bitów ISC01:0 na 10 i wtedy przerwanie będzie występowało przy zmianie stanu - nie będzie potrzeby ciągłych zmian sposobu wyzwolenia przerwania w samym przerwaniu. Bo jeśli się nie mylę, to przy takim sposobie zmian w trakcie działania programu - przed każdą zmiana należy wyłączać przerwanie z tego źródła, następnie zmienić sposób wyzwalanie, skasować flagę przerwanie - która może się ustawić przy takiej zmianie, i na końcu aktywować przerwanie.
Zastosuje się do Twojej wskazówki, tyle że należy mieć pewność, że HC-SR04 na wyjściu echo nie wygeneruje "przypadkowej" zmiany stanu.