roxy
Guest
Thu Apr 22, 2010 3:11 pm
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
Marcin Wasilewski
Guest
Thu Apr 22, 2010 4:08 pm
Użytkownik "roxy" <kicak@o2.pl> napisał w wiadomości
news:hqpoul$qfg$1@news.onet.pl...
Quote:
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ń.