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

Probelm z timerem ATMega168

zylus 24 Lip 2010 13:14 992 4
REKLAMA
  • #1 8324781
    zylus
    Poziom 11  
    Na początek kawałek kodu:
    [code] TCCR0A = _BV(WGM01);
    TCCR0B = _BV(CS00) | _BV(CS02);
    OCR0A = 156;
    TIMSK0 = _BV(OCIE0A);

    ISR(TIMER0_COMPA_vect)
    {
    PORTB ^= _BV(1); // do pinu zapięta LED
    }[code]

    Procesorek ATmega168 taktowany kwarcem 16000000.
    Chcę zmusić timer aby generował przerwania z częstością około 100 Hz.
    Czy powyższe ustawienie jest poprawne?

    Dzięki za info.
  • REKLAMA
  • #2 8324843
    gaskoin
    Poziom 38  
    jest poprawnie, nie będzie to jednak idealnie 100Hz
  • REKLAMA
  • #3 8326323
    zylus
    Poziom 11  
    i własnie dodając kawałek kodu:

    int c = 0;

    ISR(TIMER0_COMPA_vect)
    {
    c++;
    if( c == 100 )
    {
    PORTB ^= _BV(1); // LED
    c = 0;
    }
    }

    dioda powinna migać co około 1 s, natomiast "mruga" co 10 s !
    W czym tkwi problem ???

    Proszę umieścić kod w znacznikach code!
    Robak
  • REKLAMA
  • #5 8326614
    zylus
    Poziom 11  
    .. zgadza sie
    w fusebitach miałem włączony podział przez 8 (CKDIV8)
    zamykam temat
REKLAMA