fofex napisał(a):
Piotrek_P napisał(a):
po kolejnych naciśnięciach switcha zmiana stanu na pinie PC7 nie następuje zaraz po wystąpieniu przerwania tylko w różnych momentach
Występuje zaraz po naciśnięciu buttona. Jeśli chcesz żeby przerwanie INT0 wykonało się przy następnym najbliższym zboczu po wciśnieciu buttona, przed aktywacją przerwania INT0 wyzeruj flagę INTF0.
Piotrek_P napisał(a):
ustawiam flagę kontrolną. Następnie w pętli głównej sprawdzam czy flaga jest ustawiona. Jeżeli tak to odmierzam 10ms,
W ten sposób nie otrzymasz stabilnego i pewnego impulsu. W przerwaniu INT startuj timer, a w jego przerwaniu compare lub overflow, w zależności od konfiguracji, go zatrzymuj.
Dodałem kasowanie flagi INTF0 i teraz zmiana stanu działa perfekcyjnie, choć nadal nie rozumiem dlaczego trzeba tą flagę kasować bo już kiedyś kombinowałem ze sprawdzaniem tej flagi w pętli i ją kasowałem ale nie było żadnego efektu, a do tego w datasheet znalazłem informację że flagi INTFx są kasowane automatycznie.
Docelowo wygenerowanie impulsu ma być przesunięte w czasie od wystąpienia najbliższego zbocza, tak aby włączać odbiornik w szczycie sinusa 230V. Funkcja do omierzania czasu działa precyzyjnie bo jest w oparciu o sprzętowy timer1.
@fofex Bardzo mi pomogłeś, bardzo dziękuję, ale jak byś mógł mi jeszcze wytłumaczyć dlaczego trzeba kasować tą flagę skoro w DS piszą że się sama kasuje, tylko nie wiadomo kiedy
