RTV forum PL | NewsGroups PL

Jak bezpiecznie odczytywać 16-bitowe zmienne zmieniane w przerwaniu na AVR?

Przerwania a odczyt zmiennych poza przerwaniem. (AVR)

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak bezpiecznie odczytywać 16-bitowe zmienne zmieniane w przerwaniu na AVR?

Michał
Guest

Fri Nov 09, 2007 8:28 pm   



Witam wszystkich
Mam takie chyba dość proste pytanie, czy jest jakaś "szkoła" do
przekazywania liczb co najmniej 16bitowych modyfikowanych w przerwaniu poza
te przerwanie?
Chodzi mi dokładnie o odczytanie w głownej pętli programu zmiennej 16
bitowej modyfikowanej w przerwaniu. Z 8 bitową zmienną nie ma problemu, bo
raz pobrana powędruje na stos w trakcie wystąpienia przerwania.Z 16 i więcej
bitowymi zmiennymi jest ten problem, że zmienna może zostać zmodyfikowana w
trakcie kopiowania w głównej pętli:
zmienna1=zmienna2;

Przychodzi mi jedynie na myśl wyłączanie na czas kopiowania przerwania. Czy
tak powinno się robić, czy jest lepsza metoda?

Pozdrawiam

CosteC
Guest

Fri Nov 09, 2007 8:43 pm   



Quote:
Mam takie chyba dość proste pytanie, czy jest jakaś "szkoła" do
przekazywania liczb co najmniej 16bitowych modyfikowanych w przerwaniu
poza
te przerwanie?
Chodzi mi dokładnie o odczytanie w głownej pętli programu zmiennej 16
bitowej modyfikowanej w przerwaniu. Z 8 bitową zmienną nie ma problemu, bo
raz pobrana powędruje na stos w trakcie wystąpienia przerwania.Z 16 i
więcej
bitowymi zmiennymi jest ten problem, że zmienna może zostać zmodyfikowana
w
trakcie kopiowania w głównej pętli:
zmienna1=zmienna2;

Przychodzi mi jedynie na myśl wyłączanie na czas kopiowania przerwania.
Czy
tak powinno się robić, czy jest lepsza metoda?

Jeżeli chcesz mieć całkowitą pewność to jest to jedyna metoda.


Pozdrawiam
CosteC

Grzegorz Kurczyk
Guest

Fri Nov 09, 2007 8:45 pm   



Użytkownik Michał napisał:
Quote:
Przychodzi mi jedynie na myśl wyłączanie na czas kopiowania przerwania.
Czy tak powinno się robić, czy jest lepsza metoda?

W zasadzie tak powinno się robić.

Pozdrawiam
Grzegorz

Michał
Guest

Fri Nov 09, 2007 9:14 pm   



Quote:
W zasadzie tak powinno się robić.

Pozdrawiam
Grzegorz

Dziękuję za odpowiedzi.

Pozdrawiam

Mister
Guest

Fri Nov 09, 2007 10:02 pm   



Quote:
Dziękuję za odpowiedzi.

Poczytaj o operacjach atomowych i sekcjach krytycznych.

Mister

J.F.
Guest

Fri Nov 09, 2007 10:07 pm   



On Fri, 9 Nov 2007 22:02:46 +0100, Mister wrote:
Quote:
Dziękuję za odpowiedzi.

Poczytaj o operacjach atomowych i sekcjach krytycznych.

na takim malym procku bez systemu to chyba jednak prosciej
wylaczyc przerwania na pare instrukcji.

J.

Mario
Guest

Fri Nov 09, 2007 10:29 pm   



Michał pisze:
Quote:
Witam wszystkich
Mam takie chyba dość proste pytanie, czy jest jakaś "szkoła" do
przekazywania liczb co najmniej 16bitowych modyfikowanych w przerwaniu
poza te przerwanie?
Chodzi mi dokładnie o odczytanie w głownej pętli programu zmiennej 16
bitowej modyfikowanej w przerwaniu. Z 8 bitową zmienną nie ma problemu,
bo raz pobrana powędruje na stos w trakcie wystąpienia przerwania.Z 16 i
więcej bitowymi zmiennymi jest ten problem, że zmienna może zostać
zmodyfikowana w trakcie kopiowania w głównej pętli:
zmienna1=zmienna2;

Przychodzi mi jedynie na myśl wyłączanie na czas kopiowania przerwania.
Czy tak powinno się robić, czy jest lepsza metoda?

Jeśli przerwanie jest cykliczne to możesz ocenić czy zdążysz odczytać
stan w pętli głównej przed ponownym wywołaniem przerwania. Jeśli nie
masz takiej pewności to niestety powinieneś blokować.

--
Pozdrawiam
MD

grg12
Guest

Sat Nov 10, 2007 10:05 pm   



On 9 Nov., 20:28, Michał <m...@edwew.pl> wrote:
Quote:

Przychodzi mi jedynie na myśl wyłączanie na czas kopiowania przerwania. Czy
tak powinno się robić, czy jest lepsza metoda?

Pod wieloma wzgledami jest to najlepsza metoda - ale jesli chcesz za
wszelka cene uniknac wylaczania przerywan (a te przychodza cyklicznie)
zamiast kopiowac z petli glownej mozesz "poprosic" przerywanie zeby
skopiowalo. Potrzebne beda dwa bufory - jeden na ktorym przerywanie
pracuje, drugi do komunikacji i jeszcze flaga "żądania". Kiedy petla
glowna potrzebuje danych ustawia flage i czeka az ta "zgasnie".
Przerywnie za kazdym razem sprawdza czy flaga jest zapalona - jesli
tak, kopiuje dane i gasi flage. Rozwiazanie dosc powolne niestety (i
zjada troche pamieci) ale jak czlowiek musi...
GRG

elektroda NewsGroups Forum Index - Elektronika Polska - Jak bezpiecznie odczytywać 16-bitowe zmienne zmieniane w przerwaniu na AVR?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map