Witam
Próbuję napisać obsługę pilota, który używa kodowania NEC. Następnie chcę przesłać kod na okno terminala za pomocą USART.
Próbuję to realizować bez użycia funkcji typu delay_ms(), zamiast tego chcę użyć przerwań.
Idea jest taka, że po pojawieniu się pierwszego zbocza od odbiornika podczerwieni, wywoływane jest przerwanie, uruchamiany jest timer1, liczy aż do pojawienia się następnego przerwania. Wtedy odczytywana jest wartość timera, sprawdzam, czy jest w przedziale czasowym pasującym do 1-ki, jak tak to przesuwam jedynkę w zmiennej value w lewo. W zależności od zmiennej licznikowej k.
Kod:
Problem jest taki, że zmienna value się nie zmienia, za to na terminalu, po każdym naciśnięciu klawisza na pilocie otrzymuję dwukrotnie napis:
"Test
wysylania - odbioru"
Przyciśnięcie klawisza "a" powoduje pokazanie na terminalu:
"a2" <-- to jest zrozumiałe, ale value, pomimo zdefiniowania jako volatile nie zmienia wartości w przerwaniu.
Proszę o wskazówki, jak poprawić.
Próbuję napisać obsługę pilota, który używa kodowania NEC. Następnie chcę przesłać kod na okno terminala za pomocą USART.
Próbuję to realizować bez użycia funkcji typu delay_ms(), zamiast tego chcę użyć przerwań.
Idea jest taka, że po pojawieniu się pierwszego zbocza od odbiornika podczerwieni, wywoływane jest przerwanie, uruchamiany jest timer1, liczy aż do pojawienia się następnego przerwania. Wtedy odczytywana jest wartość timera, sprawdzam, czy jest w przedziale czasowym pasującym do 1-ki, jak tak to przesuwam jedynkę w zmiennej value w lewo. W zależności od zmiennej licznikowej k.
Kod:
Kod: C / C++
Problem jest taki, że zmienna value się nie zmienia, za to na terminalu, po każdym naciśnięciu klawisza na pilocie otrzymuję dwukrotnie napis:
"Test
wysylania - odbioru"
Przyciśnięcie klawisza "a" powoduje pokazanie na terminalu:
"a2" <-- to jest zrozumiałe, ale value, pomimo zdefiniowania jako volatile nie zmienia wartości w przerwaniu.
Proszę o wskazówki, jak poprawić.