Wersja 1.11 zachowuje rejestr RAMPZ dla procesorów z flash >64KB.
Wersja 1.10 omija zakomentowane fragmenty kodu/inne konfiguracje dla INT
Dodatkowo przed każdą instrukcją asm dodano " ! " Jeśli jesteś posiadaczem poprzedniej wersji to napisz bo może kogoś przeoczyłem
Kiedy program przechodzi do obsługi przerwania, najprawdopodobniej do wykonania zadań będzie potrzebował którychś z rejestrów R0 - R31.
Rejestry te są używane także w programie głównym więc żeby zachować ich wartości musi je zapisać.
Zapisuje je, i kiedy kończy obsługę zadań w przerwaniu odnawia zapisy w rejestrach tymi zapisanymi wartościami.
Robi to po to, by móc podjąć prace znów od miejsca w którym musiał przerwać.
Kompilator Bascom bezpiecznie odkłada prawie wszystkie rejestry na stos i przed powrotem przywraca ich wartości.
Proszę sobie teraz wyobrazić przerwanie z szybkiego enkodera. Do odnotowania impulsu i kierunku nie potrzeba wielu rejestrów. Niestety Bascom będzie odkładał wszystkie za każdym razem i tak samo wszystkie będzie przywracał.
Mikrokontroler więcej czasu poświęci na prace nad rejestrami niż potrzeba na właściwą obsługę przerwania.
Pomocny może być NoSave Tool
Bascom pozostawia programiście możliwość przejęcia kontroli nad tym które rejestry zachować.
Program NoSave Tool pokazuje które rejestry zostały użyte podczas obsługi przerwania i wspomaga pracę nad oprogramowaniem. Szybko i wygodnie możemy bardzo przyspieszyć nasze programy.
Powiedziałbym, że poszerzają się możliwości.
Możemy usprawnić częste przerwania
-z enkoderów
-multipleksowania wyświetlaczy
-do minimum skrócić obsługę Timerów
i wiele więcej..
Poniższy zrzut ekranu pokazuje o ile może skrócić się czas reakcji na opadające zbocze kiedy użyjemy NoSave Tool
Niektórzy programiści potrafią śledzić użyte rejestry ładując plik OBJ do debugera, na przykład wbudowanego w Atmel Studio, jednak śledzenie rejestrów może być pracochłonne, ponieważ nie wszystkie instrukcje są wykonywane "na miejscu" w przerwaniu.
Kiedy, na przykład, używamy funkcji Rotate, Shift, albo Incr dla zmiennych Dword, wykonany zostanie skok do osobnej procedury która tez używa rejestrów.
Trzeba wiec zliczać je wszystkie. Łatwo o przeoczenie któregoś..
NoSave Tool robi to automatycznie
Poniższy zrzut ekranu pokazuje, że do obsługi przerwań niepotrzebnie zachowywane są wszystkie rejestry
Po dodaniu do kodu parametru Nosave program pokazuje tylko faktycznie używane rejestry
Automatycznie generuje wstawki do kodu usprawniając pracę