Duże prawdopodobieństwo a nawet pewność, jeśli będziesz używał wielu przerwań jednocześnie.
Ale nie do końca mogę zrozumieć, dlaczego znowu pytasz co się stanie z przerwaniem po cli(); ???? cli to jak wiesz wyłączenie globalnego zezwolenia na przerwania ale widzę, że do ciebie w ogóle nie dociera co to są sprzętowe flagi przerwań
ok - już trzeci raz - ale jeszcze raz to napiszę może innymi słowami - może teraz uda mi się dotrzeć.
nie ważne czy był rozkaz cli() czy inne przerwanie jest w trakcie wykonywania bo to podobna sytuacja jeśli chodzi o nadejście nowego przerwania.
zajrzyj sobie do noty PDF dowolnego procka AVR - weź np rejestr timera w m8 o nazwie
TIFR - i poczytaj do czego on jest. Podobny rejestr ma praktycznie każdy moduł sprzętowy....
np flaga
TOV1 - to flaga od przerwania przepełnienia. USTAWIANA SPRZĘTOWO czyli przez procesor.
co to znaczy?
że jak masz cli() albo wykonywane jest inne przerwanie - to procesor zapali tą flagę
gdy ponownie odblokujesz przerwania albo zakończy się jakaś procedura obsługi przerwania - to procesor sprawdza zgodnie ze swoimi priorytetami po kolei wszystkie rejestry flag. I jeśli któraś jest zapalona oraz jest zezwolenie na to przerwanie - to panie kochany - właśnie to przerwanie jest natychmiast wtedy wykonywane
----------
całkiem inną rzeczą jest to co się stanie podczas _delay_ms w trakcie obsługi 1wire
ale niestety mieszasz wiele rzeczy naraz i dlatego trudno ci to ogarnąć nie rozumiejąc podstaw działania przerwań z tymi flagami chociażby.
Jednak odpowiem ci co się stanie gdy przyjdzie przerwanie podczas tego _delay_us() gdy nie było cli - to opóźnienie zostanie przerwane i wydłużone o czas wykonania się jakiegoś przerwania które nastąpi. Z tym że w tej bibliotece chronione są tylko NAJWAŻNIEJSZE odcinki czasowe - te które mają mniejsze znaczenie i nie spowodują błędu jeśli się czas nieco wydłuży - nie są chronione przez sekcje cli sei
teraz jak? jaśniej znowu troszkę ?
_________________
zapraszam na blog:
http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj
Kurs EAGLE ] [ mój kanał YT TV
www.youtube.com/mirekk36 ]