Table of Contents

Symbol Counter

Symbol Counter-ul este un periferic al transceiver-ului din ATMega128RFA1 ce are rol de timer dar este proiectat în special pentru a ajuta în dezvoltarea stivelor wireless. Dintre funcționalitățile speciale pe care le are amintim:

Interfață

Perifericul se regăsește în capitolul 10 al datasheet-ului pentru procesorul ATMega128RFA1. Regiștrii de control principali sunt:

Scrierile în registrul counter de 32 de biți (SCCNT) nu sunt instantanee și se poate aștepta terminarea lor prin așteptarea bitului SCBSY din registrul de stare SCSR

while (SCSR & _BV(SCBSY));

Întreruperile pentru depășirea pragurilor sunt SCNT_CMP1_vect, SCNT_CMP2_vect și SCNT_CMP3_vect și sunt activate din registrul SCIRQM.

Datorită duratei lungi de updatare a registrului SCCNT, se recomandă următorul mod de lucru:

void delayTimer(uint32_t delay)
{
        rtcCompareValue += (uint32_t) delay;
 
        SCOCR1HH = (uint8_t) ((rtcCompareValue >> 24) & 0x000000ff);
        SCOCR1HL = (uint8_t) ((rtcCompareValue >> 16) & 0x000000ff);
        SCOCR1LH = (uint8_t) ((rtcCompareValue >> 8) & 0x000000ff);
        SCOCR1LL = (uint8_t) ((rtcCompareValue) & 0x000000ff);
 
        while (SCSR & _BV(SCBSY));
}