Hallo, ich teste mich gerade an einen Timer mit Interrupt an einen ESP32.
Programmiere mit PlatformIO und C++
Wenn ich den Timer Starte mit
timerAlarmWrite(Mytimer, 1000000, true); //1sec
timerAlarmEnable(Mytimer);
Dann wird sofort ein Interrupt ausgelöst. Und genau das will ich nicht. Ich möchte
den Timer Starten und dann nach der Zeit von 1sec soll erst ein Interrupt ausgelöst werden.
Und da blicke ich nicht durch, vllt kann jmd von euch mir helfen.
wenn ich das Wissen vom AVR übertrage könnte es sein du musst vorher irgendwelche Register nullen die mit dem Timer-Mode und Compare Match zu tun haben. Oder du musst vorher alle Timer Register reseten weil die möglicherweise vom Arduino Framework vorbelegt sind - wie beim AVR. Da hilft nur debuggen. Lass dir alle Inhalte der Timer Register ausgeben, provoziere bspw. einen analogWrite auf dem zugehörigen Pin und schau dir erneut die Register an. Bleiben die nicht Null könnte das ein Hinweis sein. Dann hilft nur Datenblatt vom ESP lesen und notfalls den kompletten Timer von Hand programmieren wenn es die API nicht hergibt.
Wenn ich es machen müßte wäre meine erste Anlaufstelle General Purpose Timer und darunter Pulse Counter. Was anderes wüßte ich jetzt auch nicht. Oder im speziellen ESP32 Unterforum fragen, falls hier niemand mehr weiß.