Forum: Mikrocontroller und Digitale Elektronik ESP32: PWM-DAC mittels der LedC-Funktionen machbar?


von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Ich habe eine Frage bezüglich des ESP32 bzw. der LedC-Funktionen der 
Arduino-Software:

Werden die PWM-Signale durch einen Wechsel von Active-High mit 
Active-Low erzeugt oder ist das ein Active-High im Wechsel mit High-Z, 
sprich der Pin wird nicht nach Low gezogen?

Kann man man diese Funktionen für PWM-DAC-Kanäle missbrauchen oder 
funktioniert das nicht, weil der Pin nicht nach Masse gezogen wird?

Ich habe da nun lange nach gesucht, aber nichts gefunden. Es gibt 
Millionen Beispiele, wie irgendwelche ganz tollen Leute da LEDs dran 
anschließen oder sogar ein Oszilloskop, aber beide "Geräte" beantworten 
meine Frage nicht. Genau das, was ich an Assembler liebe und an Arduino 
hasse - bei Assembler weiß ich genau, was ein µC macht, bei Arduino und 
vorgekochten Libs weiß ich genau gar nichts. Leider fällt das ESP32 
Programmieren in Assembler aus wegen ist nicht, der AVR war der letzte 
Controller, dessen Befehlssatz ich für Assembler gelernt habe.

Falls es einer weiß: Danke... ansonsten muss ich mal eine LED zwischen 
VCC und Pin löten und ausprobieren. Oder mir doch noch ein Breadboard 
kaufen.

von Georg M. (g_m)


Lesenswert?


von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Ich finde das nur bedingt richtig, weil die meisten Controller ihren 
Portpin-Treiber auch abschalten können (High-Z), etwa wenn der Pin als 
Eingang verwendet werden soll. Dann habe ich nichts davon wenn er immer 
nur high oder low sein kann, folglich haben diese Pins drei Zustände. 
Und ich weiß leider immer noch nicht zwischen welchen bei der 
LedC-PWM-Ausgabe gewechselt wird.

von Georg M. (g_m)


Lesenswert?

Ben B. schrieb:
> etwa wenn der Pin als Eingang verwendet werden soll

Dann ist er kein Ausgang.

Irgendwie verstehe ich das Problem nicht.

von N. M. (mani)


Lesenswert?

Ben B. schrieb:
> Werden die PWM-Signale durch einen Wechsel von Active-High mit
> Active-Low erzeugt oder ist das ein Active-High im Wechsel mit High-Z

Ich kenne keine PWM die HighZ erzeugt. Gerade in Verbindung mit LEDs 
wäre ansonsten die Schaltung vorgegeben.

Ben B. schrieb:
> Ich habe da nun lange nach gesucht, aber nichts gefunden.

Merkwürdig. Ich habe ledc esp32 eingegeben und der erste Eintrag zeigt 
auf die Seite von Espressiv wo diese Frage beantwortet wird:
1
Functionality Overview
2
Setting up a channel of the LEDC in either high or low speed mode is done in three steps:
3
4
1. ...
5
6
2. Channel Configuration by associating it with the timer and GPIO to output the PWM signal.
7
8
3. ...

Da steht nichts von HighZ oder TriState, sondern Output.

Ben B. schrieb:
> Genau das, was ich an Assembler liebe und an Arduino hasse - bei
> Assembler weiß ich genau, was ein µC macht, bei Arduino und vorgekochten
> Libs weiß ich genau gar nichts.

Was hat das mit Arduino oder einer Programmiersprache zu tun?
Das ist ein Peripheral von Espressiv. Also musst du auch bei denen 
suchen.

Edit:Typo

: Bearbeitet durch User
von N. M. (mani)


Lesenswert?

Bzw wenn man in die HAL von Espressiv schaut:
https://github.com/espressif/esp-idf/blob/968ce2efc213c6679c07699e3563e4d1c45f5bed/components/driver/ledc/ledc.c

Funktion ledc_channel_config().
Interessante Zeile 691.
1
gpio_set_direction(gpio_num, GPIO_MODE_OUTPUT);

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.