Witam
Debugowałem swój program w AVR Studio4 i działa tak jak chcę, natomiast po wczytaniu go do procka dzieją się następujące rzeczy:
Pod komparator mam podpięte dwa zewnętrzne napięcia, jedno to Uref a drugie to napięcie które się zmienia w zależności od warunków zewnętrznych. Komparator mam tak skonfigurowany że zgłasza przerwanie przy każdej zmianie wartości bitu ACO. ACO ma wartość 1 gdy U > Uref i ma wartość 0 gdy U < Uref.
Pod port B mam 2 diody (czerwoną(PORTB.2) i zieloną(PORTB.3)). Poprawnie chcę aby układ działał w następujący sposób: Gdy U > Uref to czerwona świeci przez 60 sek. Gdy U < Uref to zielona świeci przez 60 sek.
Problem jest następujący:
Przy zmianie napięć na wejściu komparatora (nie ważne czy to wariant 1 czy 2) następuje sekwencja świecenia obu diod, jednej po drugiej (w odstępach 60 sek). Wszystko wygląda na to że komparator generuje po 2 przerwania a w sumie powinno być jedno tak ? Jak zachowuje się komparator skonfigurowany w taki sposób ?? Jak uniknąć podwójnych przerwań ??
Zmagam się z tym już jakiś czas i nie mogę znaleźć rozwiązania. Na początku to która dioda ma się zaświecić decydowałem testując bit ACO w funkcji if(). Później zrezygnowałem z tego i napisałem ręczną procedurę na zmiennych ale efekt jest nadal taki sam. Z góry dziękuję za pomoc i pozdrawiam.
Debugowałem swój program w AVR Studio4 i działa tak jak chcę, natomiast po wczytaniu go do procka dzieją się następujące rzeczy:
Pod komparator mam podpięte dwa zewnętrzne napięcia, jedno to Uref a drugie to napięcie które się zmienia w zależności od warunków zewnętrznych. Komparator mam tak skonfigurowany że zgłasza przerwanie przy każdej zmianie wartości bitu ACO. ACO ma wartość 1 gdy U > Uref i ma wartość 0 gdy U < Uref.
Pod port B mam 2 diody (czerwoną(PORTB.2) i zieloną(PORTB.3)). Poprawnie chcę aby układ działał w następujący sposób: Gdy U > Uref to czerwona świeci przez 60 sek. Gdy U < Uref to zielona świeci przez 60 sek.
Problem jest następujący:
Przy zmianie napięć na wejściu komparatora (nie ważne czy to wariant 1 czy 2) następuje sekwencja świecenia obu diod, jednej po drugiej (w odstępach 60 sek). Wszystko wygląda na to że komparator generuje po 2 przerwania a w sumie powinno być jedno tak ? Jak zachowuje się komparator skonfigurowany w taki sposób ?? Jak uniknąć podwójnych przerwań ??
Zmagam się z tym już jakiś czas i nie mogę znaleźć rozwiązania. Na początku to która dioda ma się zaświecić decydowałem testując bit ACO w funkcji if(). Później zrezygnowałem z tego i napisałem ręczną procedurę na zmiennych ale efekt jest nadal taki sam. Z góry dziękuję za pomoc i pozdrawiam.