Witam,
Niedawno zakupiłem kit AVT 2623 który chcę sobie wmontować w mój układ ale póki co mam problem z jego obsługą - a mianowicie nie działa mi sterowanie fazowe. Problem jest czysto programowy gdyż jeśli obsługę robię na delay'ach to działa a gdy na liczniku to nie działa.
Poniżej mój kod:
Przerwanie INT0 jest inicjowane przy każdym przejściu przez 0 a więc 100 razy na sekundę. Czekam sobie 7ms i włączam zasilanie po czym po 3ms wyłączam i tak w kółko. Gdy zmieniam na obsługę za pomocą timera1:
to przerwanie timera powinno być uruchamiane po 7ms od przerwania INT0, w jego trakcie powinno być włączone zasilanie i zatrzymany licznik po czym przy następnym przerwaniu od INT0 wyłaczane zasilanie i ponowne uruchomienie timera. Oscylator jest 8MHz wiec przy preskalerze 256 ustawienie licznika do porównania na 218 powinno również dać 7ms.
Jednak efekt jest taki, że w tym 2 rozwiązaniu żarówka pali się ciągle chyba, że przekroczę czas do 10ms gdzie już wówczas pierwsze będzie przerwanie od INT0.
Proszę o pomoc co robię nie tak.
Niedawno zakupiłem kit AVT 2623 który chcę sobie wmontować w mój układ ale póki co mam problem z jego obsługą - a mianowicie nie działa mi sterowanie fazowe. Problem jest czysto programowy gdyż jeśli obsługę robię na delay'ach to działa a gdy na liczniku to nie działa.
Poniżej mój kod:
Kod: C / C++
Przerwanie INT0 jest inicjowane przy każdym przejściu przez 0 a więc 100 razy na sekundę. Czekam sobie 7ms i włączam zasilanie po czym po 3ms wyłączam i tak w kółko. Gdy zmieniam na obsługę za pomocą timera1:
Kod: C / C++
to przerwanie timera powinno być uruchamiane po 7ms od przerwania INT0, w jego trakcie powinno być włączone zasilanie i zatrzymany licznik po czym przy następnym przerwaniu od INT0 wyłaczane zasilanie i ponowne uruchomienie timera. Oscylator jest 8MHz wiec przy preskalerze 256 ustawienie licznika do porównania na 218 powinno również dać 7ms.
Jednak efekt jest taki, że w tym 2 rozwiązaniu żarówka pali się ciągle chyba, że przekroczę czas do 10ms gdzie już wówczas pierwsze będzie przerwanie od INT0.
Proszę o pomoc co robię nie tak.