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

Synchronizacja w przypadku wykorzystania kwarcu do timera(TOSC1,TOSC2)

squelch 22 Maj 2017 22:48 933 3
REKLAMA
  • #1 16490659
    squelch
    Poziom 11  
    Witam

    jak to jest z tą synchronizacja bo spotkałem taki kod na mege 168
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    my wpisujemy cos do rejestru sterującego dlaczego w while oczekujemy na wyzerowanie chociaż jednego bitu z 3 czy nie powinno być
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • Pomocny post
    #2 16490713
    excray
    Poziom 41  
    A czym się różni Twoja propozycja:
    squelch napisał:
    while(ASSR&0x07);

    od propozycji z kodu który podałeś:
    squelch napisał:
    while(ASSR&0x07);

    ?
    Bo nie ogarniam?
    Jak już ktoś aktualizuje TCCR2B to najładniej by było sprawdzić to warunkiem:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    ale może być i tak jak powyżej. Zresztą pokaż cały kod konfiguracji T2, bo wydaje mi się, że tam jest sporo niepotrzebnych pętli.
  • REKLAMA
  • Pomocny post
    #4 16490749
    dondu
    Moderator na urlopie...
    Z dokumentacji:

    Cytat:
    Asynchronous Operation of Timer/Counter2
    1. Write a value to TCCR2 ....
    2. Wait until the corresponding Update Busy Flag in ASSR returns to zero.

    ...

    Bit 0 – TCR2UB: Timer/Counter Control Register2 Update Busy
    When Timer/Counter2 operates asynchronously and TCCR2 is written, this bit becomes set.
    When TCCR2 has been updated from the temporary storage register, this bit is cleared by hardware.
    A logical zero in this bit indicates that TCCR2 is ready to be updated with a new value.

    Innymi słowy, jeśli aktualizujesz tylko TCCR2, to jego uaktualnienie sprawdzasz za pomocą bitu TCR2UB, przy czym czasami wcale nie musisz czekać, aż zostanie uaktualniony, bo to zależy od Twojego programu, a nie od sztywnej reguły.

    Używaj zdefioniowanych bitów:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
REKLAMA