ESP32 Arduino Timer

OP #6690295
Lesenswert?

Hallo,
ich versuche mich gerade an einem Timer Interrupt und komme nicht 
weiter.
An einem Eingang liegt ein zu messendes Signal.
Mit jeder fallenden Flanke wird ein Interrupt ausgelöst.
Soweit OK.
In diesem Interrupt, starte ich einen Timer der nach festgelegter Zeit
selbst einen Timerinterrupt auslöst. Hier kann ich dann z.B den
Pegel des Pins abfragen.
Mit einem AVR kein Problem, doch mit dem ESP wird sofort mit 
"timerAlarmEnable" der Interrupt ausgelöst und nicht erst nach der 
vorgegebener Zeit.
Auf dem Oszi ist es am Testpin zu sehen.
Was mache ich falsch ?
1
#include <Arduino.h>
2

3
#define eingang 34       // ESP Pin Eingang Rechteck
4
#define testpin 12       // Testpin zum toogeln für Oszi
5

6
hw_timer_t * myTimer = NULL;
7

8
/******************************************
9
 * Timer Interrupt
10
 *****************************************/
11
void IRAM_ATTR onTimer()
12
{
13
  digitalWrite(testpin,LOW);
14
  timerAlarmDisable(myTimer);
15
    // nur für den Testfall Oszi
16
  delayMicroseconds(40);
17
  digitalWrite(testpin,HIGH);
18
}  
19
/******************************************************
20
 *  Flanke fallend am Eingang
21
 ******************************************************/
22

23
void IRAM_ATTR isr1()
24
{
25
  //jetzt den Timer starten
26
  timerAlarmWrite(myTimer, 750, true);
27
  timerAlarmEnable(myTimer);
28
  
29
}
30

31
void setup()
32
{
33
  myTimer = timerBegin(0, 80, true);
34
  timerAttachInterrupt(myTimer, &onTimer, true);
35
  timerAlarmWrite(myTimer, 750, true);
36
  
37
  // Testpin am Anfang auf H
38
  pinMode(testpin,OUTPUT);
39
  digitalWrite(testpin,HIGH);
40
    
41
  // Eingang für das zu messende Signal  
42
  pinMode(eingang, INPUT);
43
  attachInterrupt(digitalPinToInterrupt(eingang), isr1, FALLING);
44
}
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren