Gast
#4781575
Hallo zusammen,
ich versuche mich gerade am Timer0 Output Compare Mode
Dafür habe ich folgenden sketch geschrieben:
volatile long meine_milli = 0;
void setup() {
// put your setup code here, to run once:
TIMSK0 |= (1 << OCIE0A);
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println(millis());
Serial.println(meine_milli);
Serial.println(millis()-meine_milli);
Serial.println(OCR0A_ALT);
Serial.println(OCR0A_NEU);
}
ISR(TIMER0_COMPA_vect)
{
OCR0A = TCNT0 +100;
meine_milli++;
}
Eigentlich ist es relativ simpel.
Ich aktiviere Output Comare A ISR und setze innerhalb dieser ISR OCR0A
neu.
So wie ich es verstanden habe gleicht OCR0A ab, ob es den gleichen Wert
hat wie TCNT0 und löst dann die ISR aus.
Nun war meine Überlegung OCR0A neu zu setzen mit den Werten von TCNT0
+100, sodass die nächste ISR in 400µs kommen müsste, da der Timer0 eine
Prescaler von 64 hat.
Nun zu meinem Problem:
Ich kann den + Wert von 10-250 setzen und die ISR löst immer alle 1024µs
aus....
Was mache ich falsch?