logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[c] dziwny problem z wpisywaniem wartości do tajmera

chmurli 13 Cze 2009 21:35 1611 3
REKLAMA
  • #1 6652357
    chmurli
    Poziom 10  
    hej,

    piszę własnie program metronomu dla atmegi162 i mam taki dziwny problem z avr-gcc
    Wykorzystuje timer1 16bit i chce wpisać wartość początkową

    TCNT1 = (0xFFFF - (60*15625)/(g_Licznik) );

    powyższy kod niedziała (układ niewchodzi w przerwanie). ok rozumiem ze może wyjść wartość z ułamkiem, ale gcc bierze wtedy część całkowitą (chyba). próbowałem robić rzutowanie i nic.

    TCNT1 = (0xFFFF - (60*62500)/(g_Licznik*4) );


    metoda prób i błędów doszedłem do tego że powyższy kod działa(sic!).
    Może mi ktoś wytłumaczyć ten fenomen? Przecież oba zapisy są identyczne pod względem arytmetycznym.
  • REKLAMA
  • REKLAMA
  • #3 6652488
    chmurli
    Poziom 10  
    dzięki, działa :)
    możesz krótko wyjaśnić co zmienia 'ul'?
    g_Licznik jest z zakresu 40-240, ale to jest bez znaczenia chyba.
  • #4 6652501
    _Robak_
    Poziom 33  
    Skoro dziala to juz bez znaczenia ;) Domyslnie wartosci nie zmiennych sa 16 bitowe, wpisujac ul rozszerzasz je do 32 bitow.
REKLAMA