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.

[Atmega8][C] timer nie odlicza rownej sekundy

Toners 01 Sie 2012 22:09 1372 6
  • #1 01 Sie 2012 22:09
    Toners
    Poziom 11  

    Hej, bawilem sie timerem w CTC i ustawilem preskalar na 64, procek jedzie na 1MHz wew. zegarze. Fusebity ma ustawione na l:E1 h: D9. Mimo ustawien procek rozjezdza sie z zegarkiem 10s na kaze ~30m :/ Czy cos zle ustawilem ?


    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 6
  • Pomocny post
    #2 01 Sie 2012 22:17
    LordBlick
    VIP Zasłużony dla elektroda

    Toners napisał:
    procek jedzie na 1MHz wew. zegarze.
    Rzecz w tym, że nie jest to sobie takie równe 1MHz, tym bardziej bez kalibracji. Jak chcesz dokładniej, to użyj Timer2 w trybie asynchronicznym z dodatkowym rezonatorem kwarcowym 32768Hz. Przejrzyj noty aplikacyjne AVR134 i AVR055.

    0
  • #3 01 Sie 2012 22:22
    atek000
    Poziom 17  

    A jeżeli jesteś bardzo początkujący to po prostu użyj rezonatora powiedzmy 16MHz i już będzie znacznie dokładniej. Nie będzie to bardzo dokładnie ale dużo lepiej niż wewnętrzny oscylator.

    0
  • #4 01 Sie 2012 22:40
    Toners
    Poziom 11  

    Ok, dzieki za odpowiedzi, takie pytanie dodatkowe jeszcze mam, jaka najnizsza czestotliwosc mozna ustawic (na wew zegarze) ?

    0
  • Pomocny post
    #5 01 Sie 2012 22:51
    LordBlick
    VIP Zasłużony dla elektroda

    Toners napisał:
    takie pytanie dodatkowe jeszcze mam, jaka najnizsza czestotliwosc mozna ustawic (na wew zegarze) ?
    W opisie rejestru OSCCAL (nota od ATmega8) jest napisane, ze można zjechać do 50% wartości nominalnej, czyli teoretycznie ok. 500 kHz.W niektórych nowszych AVR można i 128kHz.

    0
  • #6 01 Sie 2012 23:05
    excray
    Poziom 39  

    W niektórych można jeszcze ustawić CKDIV8 czyli aktualnie ustawiona jeszcze jest dzielona przez 8 co przy CLK 128kHz (np. ATINY13) daje 16kHz.

    0
  • #7 01 Sie 2012 23:51
    LordBlick
    VIP Zasłużony dla elektroda

    CKDIV8 w ATtiny13 to tylko ustawianie przy resecie rejestru CLKPR na 0b00000011, które można nadal zmieniać programowo, więc spokojnie można nawet tego fusebita nie tykać, mając możliwość podziału zegara jeszcze przez 256, co przy 128kHz daje zabójczą prędkość 500Hz.. ;).

    0
  Szukaj w 5mln produktów