01-25-2023, 09:06 PM
Baš na liniji 999 si napravio pometnju sa code.
Pomešao si kontekste main-loop i deo koji je trebao da ide u ISR.
Ne može u petlji koja se vrti sa 1 prolaz u sekundi da obraduješ ZCD/TMR dogadjaje.
Treba da napraviš još jednu ISR rutinu za RA5 ZCD ulaz, ona se aktivira na obe ivice ZCD signala i tu se onda startuje TMR koji ce da aktivira odmah izlaz i tu je kraj tog interapta. Drugi interapt od tajmera koji tu imaš gasi izlaz i to su te dve rutinice koje rade nezavisno od main loop.
Iz main loop samo trebaš da imaš dve globalne promenljive koje koristiš i u ISR, jednu bool da uključiš/isključiš i druga je int zadata vrednost snage izražena u TMR tikovima i njih updejtuješ kad/koliko možeš, može praktično i da se zaglavi main-loop ali preko ISR ce da radi održavanje snage koja je zadnje zadata u promenljivoj i tako si rešio mehanizam za upravljanje koji ne zavisi od brzine main-loop.
Pomešao si kontekste main-loop i deo koji je trebao da ide u ISR.
Ne može u petlji koja se vrti sa 1 prolaz u sekundi da obraduješ ZCD/TMR dogadjaje.
Treba da napraviš još jednu ISR rutinu za RA5 ZCD ulaz, ona se aktivira na obe ivice ZCD signala i tu se onda startuje TMR koji ce da aktivira odmah izlaz i tu je kraj tog interapta. Drugi interapt od tajmera koji tu imaš gasi izlaz i to su te dve rutinice koje rade nezavisno od main loop.
Iz main loop samo trebaš da imaš dve globalne promenljive koje koristiš i u ISR, jednu bool da uključiš/isključiš i druga je int zadata vrednost snage izražena u TMR tikovima i njih updejtuješ kad/koliko možeš, može praktično i da se zaglavi main-loop ali preko ISR ce da radi održavanje snage koja je zadnje zadata u promenljivoj i tako si rešio mehanizam za upravljanje koji ne zavisi od brzine main-loop.