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

Awatar użytkownika
slawko_k
-
-
Posty: 47
Rejestracja: 30 kwie 2003, o 11:24
Lokalizacja: Łańcut
Kontaktowanie:

Skok do obsługi przerwania nie używając bascomowych instrukc

Postautor: slawko_k » 22 lis 2007, o 22:12

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?

RcTomek
-
-
Posty: 357
Rejestracja: 18 lip 2005, o 17:28
Lokalizacja: Głogów / Wrocław

Postautor: RcTomek » 23 lis 2007, o 00:11

Raczej nie. Musiałbyś napisać program w ASM.
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.
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.
Podejrzewam że program odkłada na stos zawartości rejestrów a potem je z niego ściąga.
Co w wielu przypadkach jest konieczne!

szymel
-
-
Posty: 212
Rejestracja: 16 sty 2005, o 16:42
Lokalizacja: Włocławek

Re: Skok do obsługi przerwania nie używając bascomowych inst

Postautor: szymel » 24 lis 2007, o 09:30

... Podejrzewam że program odkłada na stos zawartości rejestrów a potem je z niego ściąga.
Dobrze podejrzewasz , ale możesz "zakazać" kompilatorowi robić coś "poza plecami";)
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

Awatar użytkownika
slawko_k
-
-
Posty: 47
Rejestracja: 30 kwie 2003, o 11:24
Lokalizacja: Łańcut
Kontaktowanie:

Postautor: slawko_k » 24 lis 2007, o 10:06

Nie da się w Bascomie umieścić kodu w obszarze wektorów przerwań
Dzięki za rzeczową odpowiedź.

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 65 gości