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?
Der Big F. schrieb: > Was mache ich falsch? Vermutlich wird Timer0 vom Arduino-Framework benutzt, d.h. er ist schon belegt (damit der User z.B. ohne lange zu überlegen millis() aufrufen kann). Solange du Setup() und Loop() in deinem Projekt angelegt hast. Schreibst du dein main() selbst inkusive aller Initialisierung dann wird dies die Arduino IDE nicht für dich tun und du hast den Timer zur freien Verfügung.
Danke für deine Antwort... Ich hab noch weiterprobiert. Wenn ich in das OCR0A Register aus der ISR schreibe klappt es... schreib ich das Register außerhalb der Isr klappt es nicht
In the Arduino world timer0 is been used for the timer functions, like delay(), millis() and micros(). http://letsmakerobots.com/node/28278
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.