Gdzie się ustawia priorytety przerwań w AVR'ach (coś na wzór rejestru IP w 8051) ? Potrzebuję, by Timer2 i Timer1 miał priorytet przed Timer0.
K.
Gdzie się ustawia priorytety przerwań w AVR'ach (coś na wzór rejestru IP w 8051) ? Potrzebuję, by Timer2 i Timer1 miał priorytet przed Timer0.
K.
W procedurze obsługi przerwań.
AVR wchodząc w obsługę przerwania blokuje wszystkie inne. Czyli na początku odblokuj przerwania które mają być obsłużone.
W twoim przypadku:
(zakładam że używasz tylko przerwań Timerów) W procedurce obsługi Timer0 na samym początku robisz SEI W pozostałych przerwaniach nie robisz nic. Timer1 i Timer2 są równorzędne, żadne żadnego nie przerwie.
Krzysztof snipped-for-privacy@wp.pl napisał(a):
Proponuję zajrzeć do dokumentacji uC.AVR-y nie posiadają rejestru priorytetów ,jak 51-ki.Dowolne przrwanie blokuje wykonywanie się innych przerwań.Priorytet występuje tylko w przypadku jednoczesnego zgłoszenia kilku przerwań , wtedy to przerwanie o najniższym adresie wektora , będzie wykonane jako 1-sze.Aby osiągnąć cel o którym wspomniałeś , powinieneś "zrobić to" programowo.
Piotrek
Have something to add? Share your thoughts — no account required.
Ask the community — no account required