Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega Bascom - Przerwanie - nie mozna skrócić timera

adam220 31 Mar 2016 12:06 777 6
  • #1 31 Mar 2016 12:06
    adam220
    Poziom 14  

    Witam,
    Atmega 8, Timer1.

    Używam instrukcji LOAD która skraca czas między przepełnieniami timera,
    a nie mogę uzyskać odpowiednio krótkiego czasu gdyż w pewnym momencie skracanie timera juz ic nie daje.
    Oto kod:

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    POniżej wartości ok 70 cykl się juz nie skraca.
    Czyżby tyle zajmowało samo obsłużenie przerwania?
    Preskaler=1 czyli zajmuje to 70 tików?

    + dodatkowa obserwacja: sygnał ma jitter, zrywa się i przesuwa mnij więcej o tyle samo czyli ok 70-80 tików...

    0 6
  • #2 31 Mar 2016 19:21
    yokoon
    Poziom 28  

    Brak Load Timer w programie głównym.

    0
  • Pomocny post
    #3 31 Mar 2016 21:46
    M. S.
    Poziom 34  

    Uruchomić timer w trybie CTC.

    Tryb CTC

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #4 01 Kwi 2016 01:42
    emarcus
    Poziom 35  

    M. S. napisał:
    Uruchomić timer w trybie CTC.

    Tryb CTC
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Ludzie, dajcie sobie z tym spokój bo nie zgadniecie co autor potrzebuje.
    1-szy Kwietnia na moim kalendarzu jest dopiero jutro...... czyżby kalendarz się spóźniał ? - pewnie będe musiał wymienic baterie...
    Zdaje się, gośc szuka 'agentów' aby ich czymś poważniejszymm zając!!(?)

    TU założył podobny temat (cross-posting ?).
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=15569192#15569192
    Czyżby tamten wątek został wyczerpany?

    e marcus

    0
  • #5 01 Kwi 2016 11:04
    adam220
    Poziom 14  

    Witam,
    dziekuję za odpowiedzi.

    @yokoon Dlaczego load timer miałby być w programie głównym?
    W głównym być nie może a w przerwaniu jest niezbędny.

    @M. S. Tak, tryb CTC to alternatywne rozwiązanie. Spróbuję czy to coś zmieni.

    @emarcus nie masz co robić? To poczytaj ze zrozumieniem. Tu pytam o możliwość skrócenia pojedynczego cyklu, a w drugim wątku pytam o potknięcia sygnału co N cykli, które nie mają nic wspólnego ze skracaniem cyklu.

    Ciekawe i skuteczne rozwiązanie na skrócenie cyklu podał niveasoft.
    Zauważył on że kompilator Bascoma, podczas obsługi przerwania, odkłada na stos wiele niepotrzebnych rejestrów. To trwa. Ograniczając liczbę rejestrów wyłącznie do niezbędnych skraca się czas obsługi, co pozwala na skrócenia cyklu. W moim przypadku zamiast ponad 20 rejestrów na stos pójdą ok 3-4.
    Bartek stworzył do tego narzędzie NoSave Tool, link w podpisie niveasoft i na stronie
    Zobacz jak przyspieszyć obsługę przerwań w Bascom
    http://bart-projects.cba.pl/Nosave.html

    0
  • #6 01 Kwi 2016 18:27
    emarcus
    Poziom 35  

    adam220 napisał:
    Tu pytam o możliwość skrócenia pojedynczego cyklu, a w drugim wątku pytam o potknięcia sygnału co N cykli, które nie mają nic wspólnego ze skracaniem cyklu.



    To był taki oryginalny tytuł, lecz w trakcie dyskusji otrzymałeś odpowiedź i przepis na rozwiązanie i tego problemu też, - co sam stwierdzasz:

    Cytat:

    Ciekawe i skuteczne rozwiązanie na skrócenie cyklu podał niveasoft.

    Skąd więc powód do nawrotu do, w zasadzie rozwiązanego problemu? (tak przynajmniej mi się wydaje).
    Cytat:


    Zobacz jak przyspieszyć obsługę przerwań w Bascom
    http://bart-projects.cba.pl/Nosave.html

    A ty pewnie myślisz że ja o tym nie wiem ?(!).......

    e marcus

    0
  • #7 01 Kwi 2016 22:04
    adam220
    Poziom 14  

    emarcus
    Rozwiązanie niveasoft dostałem na PW, dlatego je tu zamieściłem.
    Tak, myślę że o NoSave Tool nie wiedziałeś.
    Znajdź sobie coś do roboty, bo Twoje wypowiedzi zupełnie nic nie wniosły. Przeczytaj je sam.

    0