Witam. Kompilator to XC wersja w trybie darmowym, optymalizacja 1. Wbrew temu co sugeruje help,
"LATGbits.LATG5 = 1; /* No problem likely, this is an assignment of a single bit and will use a single instruction bit set operation */"
przypisanie takie nie jest tlumaczone na pojedyncza instrukcji ustawiania bitu tylko realizaowane jako odczyt - modyfikacja- zapis portu. Gdy mamy to robione w main a w przerwaniu rowniez sa zapisy do tego portu powoduje to problem ktory ujawnia sie po losowym czasie.
Pytanie czy istniej mozliwo¶æ ustawienia pinu portu w "atomowej" operacji za pomoca jakiejs wstawki asemblera ? Czy problem sie bierze z tytulu ze kompilator to wersja darmowa a w wersji pelnej bedzie dobrze. Rozwiazanie sugerowane przez help tj wylaczenie przerwan na czas modyfikacji portu w petli glownej (makro INTERRUPT_PROTECT )dziala ale nie jest dobre, po pierwsze blokuje przerwania, po drugie dodaje narzut. pozdrawiam. Michal