Napisałem pewien kod i interesuje mnie jego awaryjność:
Co jeśli funkcja zostanie wywołana jednocześnie przez maina i przerwanie? Czy to sie nie wysypie? Czy procek się nie zawiesi? (Wiem że to nie są wątki)
Program jest oczywiście dużo bardziej złożony. Większość zadań uartu to tylko ustawianie flag (po porównaniu jakiegoś łańcucha z wzorcem) ale część IFów wysyła również znaki za pośrednictwem FUNKCJIx.
Teoretycznie uC nie robi dwóch rzeczy na raz ale praktycznie wydaje się że jednak robi bo jak dam delay() w przerwaniu to main się przecież nie zatrzymuje.
Może lepsza jest metoda flagowa?:
Muszę napisać program który jest w 100% bezawaryjny i nie wiem czy lepiej w przerwaniach (uart) tylko i wyłącznie ustawiać flagi czy moge sobie pozwolić na jakieś dodatkowe instrukcje.
Teoretycznie mój program działa i nie zawiesza się. Ale nie moge liczyć na szczęście
Proszę o radę albo chociaż o namiar na jakąś dobrą książke na tego typu zagadnienia.
PRZERWANIE
{
FUNKCJAx // wysyła znaki przez uart.
}
MAIN
{
while
{
FUNKCJAx //wysyła znaki przez uart.
}
}Co jeśli funkcja zostanie wywołana jednocześnie przez maina i przerwanie? Czy to sie nie wysypie? Czy procek się nie zawiesi? (Wiem że to nie są wątki)
Program jest oczywiście dużo bardziej złożony. Większość zadań uartu to tylko ustawianie flag (po porównaniu jakiegoś łańcucha z wzorcem) ale część IFów wysyła również znaki za pośrednictwem FUNKCJIx.
Teoretycznie uC nie robi dwóch rzeczy na raz ale praktycznie wydaje się że jednak robi bo jak dam delay() w przerwaniu to main się przecież nie zatrzymuje.
Może lepsza jest metoda flagowa?:
PRZERWANIE
{
if (cośtam) ustaw_flage_Y
}
MAIN
{
while
{
FUNKCJAx //wysyła znaki przez uart.
if (flaga_Y_ustawiona) { FUNKCJAx; reset_flagi_Y; }
}
}Muszę napisać program który jest w 100% bezawaryjny i nie wiem czy lepiej w przerwaniach (uart) tylko i wyłącznie ustawiać flagi czy moge sobie pozwolić na jakieś dodatkowe instrukcje.
Teoretycznie mój program działa i nie zawiesza się. Ale nie moge liczyć na szczęście
Proszę o radę albo chociaż o namiar na jakąś dobrą książke na tego typu zagadnienia.
