-
1. Data: 2010-04-22 15:11:19
Temat: [bascom] wspoldzielona zmienna w przerwaniach
Od: "roxy" <k...@o...pl>
Witam
Jak to jest w bascom avr ze wspoldzieloną zmienna np. integer?
Zakladam ze w procedurze obsugi przerwania przypisuje zmiennej typu integer
(2 bajty) nowa wartosc.
W funkcji glownej natomiast dokonuje porownania tej zmennej za pomocą
instrukcji if ...then.
Czy przed tym porownaniem musze sam zadbac o wylaczenie przerwan aby nie
spowodowac blednego wyniku porownania?
Jak to wlasciwie jest w bascomie ze zmiennym, czy jest jakas instrukcja lub
definicja zmiennej ktory jest odpowiednikiem volatile w jezyku C?
Jak wymusic na zmiennej aby pobrała wartosc zmiennej z pamieci SRAM a nie
korzystała z wartosci umieszczonych w rejestrach?
Moglby ktos to wyjasnic jak Bascom sobie z tym radzi?
Dziekuje za pomoc
__________ Informacja programu ESET NOD32 Antivirus, wersja bazy sygnatur wirusow
5050 (20100422) __________
Wiadomosc zostala sprawdzona przez program ESET NOD32 Antivirus.
http://www.eset.pl lub http://www.eset.com
-
2. Data: 2010-04-22 16:08:03
Temat: Re: [bascom] wspoldzielona zmienna w przerwaniach
Od: "Marcin Wasilewski" <j...@a...pewnie.je.st>
Użytkownik "roxy" <k...@o...pl> napisał w wiadomości
news:hqpoul$qfg$1@news.onet.pl...
> Moglby ktos to wyjasnic jak Bascom sobie z tym radzi?
> Dziekuje za pomoc
Mogę ci powiedzieć jak to się robi w assemblerze i C.
Otóż nigdy nie jesteś pewien momentu w którym przerwanie będzie wywołane.
Jeśli zmienna jest 16 bitowa, to realna jest sytuacja, że np. pierwszy bajt
odczytany będzie przed obsługą przerwania, a drugi po. Tak więc jeśli
operacja krytyczna jest wykonywana w więcej niż jednej instrukcji kodu
maszynowego (wiem - w bascomie ciężko to ocenić), to zawsze na czas
wykonywania takiego fragmentu kodu należy wyłączyć obsługę przerwań.