Usando el temporizador XMEGA

3

Quiero usar el temporizador en XMEGA para saber cuánto tiempo se tarda en realizar una función:

void timerINI() {
    //cli(); // deactivating the interrupt 
    TCC0.CTRLA = TC_CLKSEL_DIV1024_gc;
    TCC0.CTRLB = TC_BYTEM_NORMAL_gc;
    //TCC0.INTCTRLA= 0x03;
    TCC0.PER =  0x7A12;
}

int main () {
    ....................
    while(1) {
        TCC0_CNT = 0x00;
        printf(" 1THE timer value is : %5x \n ",TCC0_CNT);
        otherFUNCTION();
        printf(" 2 THE timer value is : %5x \n ",TCC0_CNT);
    }
}

El valor de salida es 2323 . Tengo un problema para entender qué significa este valor en el tiempo para mí. La MCU se está ejecutando a 32MHz.

    
pregunta Engine

1 respuesta

3

Su frecuencia XMEGA es de 32MHz, con la línea TCC0.CTRLA = TC_CLKSEL_DIV1024_gc que ha seleccionado el valor de prescaler a 1024, debe dividir la frecuencia central 32000000/1024 = 31250 = 31 KHz, luego encuentre una el período de ese 31KHz, que es 32us y se multiplica con la cantidad de ciclos, la función debe completarse (2323) y luego obtendrá el tiempo que necesita, que es de 74 ms.

    
respondido por el Lazar

Lea otras preguntas en las etiquetas