Witam. Mam pytanie. Programowałem kiedyś mikrokontrolery 8051 w asm, natomiast przerzuciłem się na C i mam wątpliwości. Załóżmy, że przepisuje liczbę unsigned int z jednej zmiennej do drugiej. Co jak w tym czasie przyjdzie przerwanie jak najlepiej sobie radzić z tym, że cała ta liczba została już przepisana?
Dodano po 12 [minuty]:
Może sprecyzuje bardziej o co chodzi. Załóżmy, że w przerwaniu wysyłam przez uart dwa bajty odczytane z pamięci ramu. W programie głównym dokonuje zapisu do tych dwóch bajtów obliczonej wartości. Jak wiadomo w asm przepisanie takie odbywa się dwuczęściowo. Najpierw przepisujemy jeden bajt potem drugi. Jeśli przerwanie przyjdzie pomiędzy bajtami wyślemy jeden odświeżony a drugi nie. Oczywiście możemy sobie zrobić w tym momencie flagi które nas informują o tym, czydane zostały już przepisane w całości. Ale jak z tym sobie poradzić w języku C ? tam przepisanie jednej zmiennej do drugiej to jedna linia a ile zajmuje ona cykli zegarowych tego nie wiadomo. Czy również należy sobie zrobić takie flagi, które informują o tym czy wartość został przepisana ?
Dodano po 12 [minuty]:
Może sprecyzuje bardziej o co chodzi. Załóżmy, że w przerwaniu wysyłam przez uart dwa bajty odczytane z pamięci ramu. W programie głównym dokonuje zapisu do tych dwóch bajtów obliczonej wartości. Jak wiadomo w asm przepisanie takie odbywa się dwuczęściowo. Najpierw przepisujemy jeden bajt potem drugi. Jeśli przerwanie przyjdzie pomiędzy bajtami wyślemy jeden odświeżony a drugi nie. Oczywiście możemy sobie zrobić w tym momencie flagi które nas informują o tym, czydane zostały już przepisane w całości. Ale jak z tym sobie poradzić w języku C ? tam przepisanie jednej zmiennej do drugiej to jedna linia a ile zajmuje ona cykli zegarowych tego nie wiadomo. Czy również należy sobie zrobić takie flagi, które informują o tym czy wartość został przepisana ?