Witam.
Mam nietypowy problem. Zależy mi na szybkości działania procedury obsługi przerwania jednak standardowe wywołanie w bascomie trwa stanowczo za długo. Podejrzewam że program odkłada na stos zawartości rejestrów a potem je z niego ściąga.
Chciałbym umieścić fragment programu (procedurę obsługi przerwania) pod konkretnym adresem odpowiadającym przerwaniu tak aby była ona wykonywana w chwili wystąpienie przerwania.
Czy to w ogóle jest możliwe w bascomie?
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięSkok do obsługi przerwania nie używając bascomowych instrukc
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Raczej nie. Musiałbyś napisać program w ASM.
Konkretne adresy (wektory przerwań) umieszzcone są w pamięci flash co drugie słowo poczynając od adresu 0x0000. Dlatego więc nie ma miejsca na umieszczanie procedur obsługi przerwania bezpośrednio pod nimi. Zamiast tego podaje się rozkazy skoków (RJMP / JMP) do poszczególnych procedur.Chciałbym umieścić fragment programu (procedurę obsługi przerwania) pod konkretnym adresem odpowiadającym przerwaniu tak aby była ona wykonywana w chwili wystąpienie przerwania.
Co w wielu przypadkach jest konieczne!Podejrzewam że program odkłada na stos zawartości rejestrów a potem je z niego ściąga.
Re: Skok do obsługi przerwania nie używając bascomowych inst
Dobrze podejrzewasz , ale możesz "zakazać" kompilatorowi robić coś "poza plecami";)... Podejrzewam że program odkłada na stos zawartości rejestrów a potem je z niego ściąga.
Nie da się w Bascomie umieścić kodu w obszarze wektorów przerwań , ale procedurę przerwania można skrócić do minimum , za pomocą dyrektywy Nosave.
Ostrzegam jednak przed taką praktyką , jeśli nie znasz uC-ka na "tip-top"
Piotrek
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 42 gości