logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Co to jest wektor przerwania?

rezontor 21 Sty 2013 19:52 11457 7
REKLAMA
  • #1 11821653
    rezontor
    Poziom 15  
    Czym jest wektor przerwania?
  • REKLAMA
  • #2 11821678
    tadzik85
    Poziom 38  
    Może sprecyzuj swoje pytanie?
  • REKLAMA
  • #3 11822568
    rezontor
    Poziom 15  
    Poprawiłem, chodziło o WEKTOR przerwania. Czy jest to po prostu nazwa przerwania - np RESET, INT0...?
  • #4 11822604
    BlueDraco
    Specjalista - Mikrokontrolery
    Najczęściej to określenie oznacza adres procedury obsługi przerwania, który jest zawarty w tablicy umieszczonej gdzieś w pamięci.
  • Pomocny post
    #5 11822885
    piotrva
    VIP Zasłużony dla elektroda
    Przerwania procesora działają w procesorach AVR na takiej zasadzie, że (pomijając inne operacje) po wystąpieniu danego przerwania (podczas obsługi przez procesor) następuje zapamiętanie rozkazu następnego, który byłby wykonany, gdyby procesor nie przyjął przerwania (jego adresu w pamięci flash) i skok pod jeden z adresów z samego początku pamięci flash. Właśnie ten dany adres jest nazywany wektorem przerwania, czyli adresem pod który następuje skok licznika rozkazów w momencie wystąpienia przerwania. W miejscu tego wektora wpisać należy instrukcję skoku do miejsca, w którym przerwanie jest obsługiwane.
    Sprawę najlepiej widać w ASM. Ten program obsługuje tylko jedno przerwanie (TIM0_COMPA).
    W razie pytań wyjaśnię szczegóły tego kodu i zagadnienia ;)
    {kursywą pisane uwagi Kolegi BlueDarco}
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • Pomocny post
    #6 11823000
    BlueDraco
    Specjalista - Mikrokontrolery
    Nie "po wystąpieniu", a "po przyjęciu", a dokładnie "podczas obsługi" (przez procesor, nie mylić z obsługą programową).
    Nie "aktualnie wykonywanego", tylko "następnego, który byłby wykonany, gdyby procesor nie przyjął przerwania".
    To dwie całkiem istotne różnice.

    No i niekoniecznie "z samego początku pamięci Flash".
  • Pomocny post
    #7 11823049
    kamyczek
    Poziom 38  
    Może inaczej przerwanie jest to wystąpienie określonego zdarzenia . Wektor przerwania to miejsce (adres fizyczny w pamięci programu do którego przechodzi mikrokontroler po wystąpieniu określonego przypadku) generalizując tablica wektorów zazwyczaj zawiera jedynie skoki do pod programów obsługi przerwania .

    Tak bardziej obrazowo siedzisz przed komputerem i klikasz posta , w pewnej chwili masz potrzebę do toalety ( to przerwanie) jego wektor to toaleta ale tam okazuje się ze na drzwiach jest napia awaria toaleta w drugim budynku więc pędzisz do innego budynku ( to adres skoku przerwania ) a procedura obsługi domyśl się sam . Mam nadzieję ze mnie nikt za to nie pojedzie choć to lekki offtop ;)
  • REKLAMA
  • Pomocny post
    #8 11823055
    piotrva
    VIP Zasłużony dla elektroda
    Co do pierwszych dwóch uwag - zgadzam się, dodałem konkretne cytaty w odpowiednie miejsca.
    Co do ostatniej, tak, wyjaśniam już, że zwykle jest to początek pamięci flash, jednak w specyficznych przypadkach (konkretnie przy ustawieniu bitu IVSEL w rejestrze MCUCR w procesorach, w których ten bit jest dostępny) przenosi początek tej tablicy pod adres w którym zaczyna się Bootloader. I jak się łatwo domyślić ustawienie to jest wykorzystywane przede wszystkim jeśli piszemy Bootloader. Wtedy też wektor resetu jest ustawiony na adres w którym mamy początek bootloadera.
REKLAMA