Ich möchte den Timer in XMEGA verwenden, um zu wissen, wie lange es dauert, bis eine Funktion ausgeführt wird:
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);
}
}
Der Ausgangswert ist 2323
. Ich habe ein Problem zu verstehen, was dieser Wert zeitlich für mich bedeutet. Die MCU läuft mit 32 MHz.
Ihre XMEGA-Frequenz beträgt 32 MHz, mit der Zeile TCC0.CTRLA = TC_CLKSEL_DIV1024_gc haben Sie den Prescaler auf 1024 ausgewählt, Sie müssen die Kernfrequenz 32000000/1024 = 31250 = 31 KHz teilen, dann eine Periode dieser 31 KHz finden, die 32us ist, und multiplizieren Es muss mit der Anzahl der Zyklen-Funktion abgeschlossen werden (2323) und danach erhalten Sie die Zeit, die Sie benötigen, nämlich 74 ms.
Laki
Motor
Laki
Rev
Rev
TCC0_CNT
seinTCC0.CNT
? Und die ZeileTCC0.PER = 0x7A12;
wird überhaupt nicht benötigt, so wie Sie den Timer in diesem Beispiel verwenden.