09-03-2021, 00:05
(Ten post był ostatnio modyfikowany: 09-03-2021, 00:07 przez Jarewa0606.)
Nie rozumiesz przerwań
"Ale z tymi przerwaniami to średnio fajne rozwiązanie. Bo jeśli przykładowo w tym czasie alarm w domu wykryje pożar i po API wyśle komunikat aby wyłączyć wszystkie odbiorniki to ja będę miał zajęte. Albo wystarczy, że ktoś przytrzyma jeden włącznik na dłużej i serwer nigdy nie odbierze informacji po sieci - cały czas będzie trwało przerwanie."
Właśnie po to są przerwania kiedy atmega będzie zajęta czymś innym to "przerwanie" pauzuje jej działanie i wykonuje to co w przerwaniu dlatego tam ma być bardzo krótkie i szybkie by nie blokowało wiec tylko sprawdzasz jaki pin wykonał przerwanie i przepisujesz flagę zmiennej po tym kończy i wraca do tego co zostało przerwane i w "czasie" programu już czeka flaga że było zdarzenie na pinie. Wiec nie ważne ile ktoś trzyma przycisk bo może i do usranej śmier.... a przerwanie trwa tyle na ile jest w nim kod napisany.
"Ale z tymi przerwaniami to średnio fajne rozwiązanie. Bo jeśli przykładowo w tym czasie alarm w domu wykryje pożar i po API wyśle komunikat aby wyłączyć wszystkie odbiorniki to ja będę miał zajęte. Albo wystarczy, że ktoś przytrzyma jeden włącznik na dłużej i serwer nigdy nie odbierze informacji po sieci - cały czas będzie trwało przerwanie."
Właśnie po to są przerwania kiedy atmega będzie zajęta czymś innym to "przerwanie" pauzuje jej działanie i wykonuje to co w przerwaniu dlatego tam ma być bardzo krótkie i szybkie by nie blokowało wiec tylko sprawdzasz jaki pin wykonał przerwanie i przepisujesz flagę zmiennej po tym kończy i wraca do tego co zostało przerwane i w "czasie" programu już czeka flaga że było zdarzenie na pinie. Wiec nie ważne ile ktoś trzyma przycisk bo może i do usranej śmier.... a przerwanie trwa tyle na ile jest w nim kod napisany.
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.