Forum: Mikrocontroller und Digitale Elektronik ESP32 Arduino Timer


von Harald K. (harald1956)


Angehängte Dateien:

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
}

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
Noch kein Account? Hier anmelden.