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.
LOW ist LOW, GND, und nicht nichts. CMOS-Ausgang: https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Inverter1.svg/688px-Inverter1.svg.png
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.
Ben B. schrieb: > etwa wenn der Pin als Eingang verwendet werden soll Dann ist er kein Ausgang. Irgendwie verstehe ich das Problem nicht.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.