Forum: Mikrocontroller und Digitale Elektronik ESP32 Timer Probleme


von Fabi R. (efabi)


Lesenswert?

Hallo!
Ich bin gerade dabei an einem komischen Phänomen zu verzweifeln:
Ich verwende einen ESP32 (NodeMCU 32S) und will einen Timer mit AutoLoad 
implementieren. Und das funktioniert auch, mittels Debugging-Ausgaben 
auf der Konsole sehe ich genau, dass er das alles richtig ausführt.
Wenn ich allerdings den uC über ein Netzteil anschließe (12DC and Ext. 
VCC von dem uC), ist die Funktion des Timers nicht mehr gegeben. Die 
Ausgaben auf der Konsole kann ich mir wegend er ext. Versorgung nicht 
anschauen.


Gleichzeitig verwende ich auch Bluetooth und Wifi, die ja auch Timer 
Interrupts verwenden, allerdings funktioniert das ganze mit 
USB-Versorgung auch alles problemlos.

Unten ist mein Code angehängt, auch wenn ich nicht wüsste wie dieses 
Verhalten code-bedingt hervorgerufen werden kann.
Vielen Dank im Vorraus.

1
hw_timer_t * timer = NULL;
2
volatile byte state = LOW;
3
4
void IRAM_ATTR onTimer(){
5
  state = !state;
6
  InterruptRoutine();
7
}
8
9
void setup(){
10
  timer = timerBegin(0, 80, true);
11
  timerAttachInterrupt(timer, &onTimer, true);
12
  timerAlarmWrite(timer, RefreshRate*TimerConstant, true);
13
  timerAlarmEnable(timer);
14
  Serial.println("start interrupt");
15
  
16
}

: Bearbeitet durch User
von Alex D. (daum)


Lesenswert?

Fabi R. schrieb:
> Wenn ich allerdings den uC über ein Netzteil anschließe (12DC and Ext.
> VCC von dem uC), ist die Funktion des Timers nicht mehr gegeben. Die
> Ausgaben auf der Konsole kann ich mir wegend er ext. Versorgung nicht
> anschauen.

Funktioniert nur der Timer nicht mehr mit dem externen Netzteil, oder 
gehen mehrere Sachen nicht mehr?
Miss mal nach ob am 3,3V Pin auch wirklich 3,3V anliegen

von Fabi R. (efabi)


Lesenswert?

Alex D. schrieb:
> Funktioniert nur der Timer nicht mehr mit dem externen Netzteil, oder
> gehen mehrere Sachen nicht mehr?

Liegt alles an wie es soll, und wenn ich die Funktion "InterruptRoutine" 
manuell aufruf, wird auch alles so gemacht wies sein soll.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Kann das Netzteil mindestens 500mA zuverlässig liefern?

von Fabi R. (efabi)


Lesenswert?

Stefan ⛄ F. schrieb:
> Kann das Netzteil mindestens 500mA zuverlässig liefern?

Ja, ist auf 2,5A ausgelegt.

von Joachim B. (jar)


Lesenswert?

Fabi R. schrieb:
> Ja, ist auf 2,5A ausgelegt.

das heisst aber nicht das die auch ankommen und was meinst du mit

Fabi R. schrieb:
> über ein Netzteil anschließe (12DC

wo schliesst du denn deine 12V an?
wie willst du Serial Ausgaben sehen ohne das der USB dran hängt und wenn 
der drann hängt gehen die USB 5V erst mal zu dem ESP Regler, da scheint 
mir noch viel Unklarheit zu herrschen, abgesehen vom fehlenden 
Schaltplan!

von Fabi R. (efabi)


Lesenswert?

Joachim B. schrieb:
> Fabi R. schrieb:
>> Ja, ist auf 2,5A ausgelegt.
>
> das heisst aber nicht das die auch ankommen und was meinst du mit
>
> Fabi R. schrieb:
>> über ein Netzteil anschließe (12DC
>
> wo schliesst du denn deine 12V an?
> wie willst du Serial Ausgaben sehen ohne das der USB dran hängt und wenn
> der drann hängt gehen die USB 5V erst mal zu dem ESP Regler, da scheint
> mir noch viel Unklarheit zu herrschen, abgesehen vom fehlenden
> Schaltplan!
Doch kommt alles an. Verwende den linearregler im ESP32-Modul.
Eben das ist ja das Problem, dass das Debugging schwer ist, wenn man 
keine serielle Ausgabe hat.
Schaltplanseitig ist kein Fehler, da die Uhr ja funktioniert. Nur wenn 
der Interrupt aufgerufen wird, will sie nicht mehr.

von Fabi R. (efabi)


Lesenswert?

Bin inzwischen auf die Idee gekommen, das Debugging über die RX/TX-LED 
auf dem ESP-Modul zu machen.
Erkenntnis: Er geht in den Interrupt, und alle darin aufgerufenen 
Funktionen und Unterfunktionen.
Es scheint alsob die GPIOs einfach nicht mehr reagieren.

Hab dazu mal einen neuen Thread gemacht, falls jemand Lust auf 
Fehlersuche im Code hat:
Beitrag "Fehlersuche Code Arduino IDE ESP32 - Timer Interrupt - NTP-Client"


Damit ist der Thread hier für mich geschlossen, danke an alle die 
mitgedacht haben. ♥

von Joachim B. (jar)


Lesenswert?

Fabi R. schrieb:
> Damit ist der Thread hier für mich geschlossen, danke an alle die
> mitgedacht haben. ♥

das soll wohl ein Witz sein! (die Bildgröße)
Du hast jedenfalls nicht mitgedacht oder ich erkenne es nicht, weder 
deine komplette Verkabelung, PC ja nein USB ja nein, 12V DC ja nein und 
wo rein?

Der kleine Regler auf dem ESP mag sicher keine 12V zu 3,3V wandeln, bei 
Spitzenströme um 0,5A wären das 4W.

Und der Vin Pin verbietet sich ja auch bei USB Verkabelung!

: Bearbeitet durch User
von Fabi R. (efabi)


Lesenswert?

Joachim B. schrieb:
> Fabi R. schrieb:
>> Damit ist der Thread hier für mich geschlossen, danke an alle die
>> mitgedacht haben. ♥
>
> das soll wohl ein Witz sein! (die Bildgröße)
> Du hast jedenfalls nicht mitgedacht oder ich erkenne es nicht, weder
> deine komplette Verkabelung, PC ja nein USB ja nein, 12V DC ja nein und
> wo rein?
>
> Der kleine Regler auf dem ESP mag sicher keine 12V zu 3,3V wandeln, bei
> Spitzenströme um 0,5A wären das 4W.
>
> Und der Vin Pin verbietet sich ja auch bei USB Verkabelung!

Die Schaltpläne sind A3 und A4 PDFs. Versuch die mal zu downloaden.
Ja, der Linearregler ist nicht sonderlich effizient, ist aber genau für 
diese Aufgabe dimensioniert, den ESP32 mit ausreichend Strom zu 
versorgen. Außer dem ESP hängt nichts auf der 3V3-Schiene.
Wie gesagt: Ich verwende den USB-Port im Betrieb ja nicht, weil mit 
sonst der PC brennt.

von Stefan F. (Gast)


Lesenswert?

Fabi R. schrieb:
> Nur wenn der Interrupt aufgerufen wird, will sie nicht mehr.

Mir fällt da gerade was ein: Beim ESP8266 müssen die ISR im RAM liegen. 
Ist das beim ESP32 vielleicht ebenso?

von Stefan F. (Gast)


Lesenswert?

Fabi R. schrieb:
> Ja, der Linearregler ist nicht sonderlich effizient, ist aber genau für
> diese Aufgabe dimensioniert, den ESP32 mit ausreichend Strom zu
> versorgen.

Aber nicht für 12V, sondern für 5V. Siehe 
http://wiki.ai-thinker.com/_media/esp32/docs/nodemcu-32s_product_specification.pdf

Schon mit der Ruhestromaufnahme des ESP32 ist der kleine Spannungsregler 
bei 12V deutlich überfordert. Joachim hat das schon Recht.

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.