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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.