RTV forum PL | NewsGroups PL

DSPIC33EP64MC504: Jak wykonać atomowe operacje na portach bez blokowania przerwań?

dspic33ep64mc504 i "atomowe"operacje na portach pytanie

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - DSPIC33EP64MC504: Jak wykonać atomowe operacje na portach bez blokowania przerwań?

michal
Guest

Mon May 02, 2016 8:35 am   



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

Artur Miller
Guest

Mon May 02, 2016 3:36 pm   



W dniu 2016-05-02 o 10:35, michal pisze:
[quote]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

Marek
Guest

Mon May 02, 2016 4:27 pm   



On Mon, 2 May 2016 10:35:44 +0200, "michal" <m@brak.pl> wrote:
Quote:
"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.

Na pewno ta operacja r-m-w nie jest realizowana pojedynczą
instrukcją w dspic33?
Uważaj na XC w wersji darmowej, w tej wersji XC generuje dużo "dummy
instructions" aby rozepchnąć i spowolnić kod. Być może analizując
wygenerowany assembler dla
LATGbits.LATG5 = 1;
dałeś się wprowadzić w pole przez ekstra zbędne instrukcje.

--
Marek

elektroda NewsGroups Forum Index - Elektronika Polska - DSPIC33EP64MC504: Jak wykonać atomowe operacje na portach bez blokowania przerwań?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map