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.

Atmega64 - timer liczy 2x szybciej

sainons 23 Kwi 2013 11:00 1155 7
  • #1 23 Kwi 2013 11:00
    sainons
    Poziom 10  

    Witam, mam dość nietypowy problem z timerem.

    F_CPU=16000000

    preskaler 1024
    przerwanie OVF
    timer0 -8bit

    z moich obliczeń wynika, że (F_CPU/1024)/256 = ~61Hz

    czyli aby uC wykonywał jakąś czynność co ok 1s musi zajść 61 przerwań


    Kod: c
    Zaloguj się, aby zobaczyć kod


    tyle teorii.

    Mój problem polega na tym, że aby Wykonaj_czynność(); odbywało się co około sekundę porównanie musi mieć postać licznik==122.

    Pozdrawiam i czekam na podpowiedzi.

    0 7
  • #3 23 Kwi 2013 13:59
    sainons
    Poziom 10  

    1. warningów brak
    2. używam AtmelStudio i F_CPU podaje w ustawieniach projektu AVR C Compiler -> Symbols i w Definied Symbols F_CPU=16000000 i tylko tam
    3.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #4 23 Kwi 2013 14:11
    BlueDraco
    Specjalista - Mikrokontrolery

    Zredukuj kod do migania diodą i wrzuć minimalną, PRAWDZIWĄ i kompletną postać, która źle działa. Na oko problem nie leży we fragmentach, które pokazujesz, a w tym, co rzeczywiście w całym programie robisz.

    0
  • #6 23 Kwi 2013 18:40
    sainons
    Poziom 10  

    Już preparuje wersję do zamieszczenia na forum.

    Ta konstrukcja ma wyłączyć podświetlenie lcd po zadanym czasie(upływie określonej ilości przerwań) od ostatniego przyciśnięcia jakiegokolwiek przycisku.

    0
  • #8 23 Kwi 2013 22:03
    sainons
    Poziom 10  

    No i niestety pokonałem się sam :/

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Poprawione i działające

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0