ESP 32 Programmieung

Hi Leute, ich programmiere gerade an einem ESP32 auf registerebene. Ich möchte das gerne machen. Mein Problem ist das ich meiner Meinung nach, nach TRM alles richtig mache, Aber nichts passiert, vllt könnt ihr mir helfen. Mein Ziel ist, eine LED dauerhaft zum leuchten bringen.

#include "soc/gpio_reg.h"
#include "soc/io_mux_reg.h"
#include "driver/gpio.h"
#include <stdio.h>
<
void app_main(void) { REG_WRITE(GPIO_FUNC16_OUT_SEL_CFG_REG, (1 << GPIO_FUNC16_OEN_SEL)); // Das ist der richtige Shift-Wert

// Aktiviere GPIO16 als Ausgang
REG_WRITE(GPIO_ENABLE_REG, (1 << 16)); 

// Setze GPIO16 auf HIGH
REG_WRITE(GPIO_OUT_REG, (1 << 16));

}/>

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

@paulb7901
Dann schreibe doch bitte noch, welchen ESP32 du verwendest.
Es gibt verschiedene, die auch unterschiedliche Chips drauf haben.

:grinning_face: Erinnert mich an meine Jugend, damals mit U880 und 6502 ....

cu

Mich auch was mir dabei spanisch vorkommt: wieso werden dort die anderen Register ausgeschalten.. mal beobachten was hier raus kommt

Ich nutze den ESP-WROOM-32, das ist die Anleitung nach der ich arbeite.

Für mich sieht das wie ein 16-Bit Wert aus, versuch mal

(1L << 16)

Ich hätte auch 1UL in Erwägung gezogen. Aber irgendwie macht es keinen Unterschied:

Programm
#include <Streaming.h>
Print &cout = Serial;

void setup()
{
  Serial.begin(115200);
  delay(500);
  Serial.println(F("\nStart"));

  int v0 = 1 << 16;
  int32_t v1 = 1 << 16;
  uint32_t v2 = 1L << 16;
  uint32_t v3 = 1UL << 16;

  cout << "v0:" << v0 << endl;  
  cout << "v1:" << v1 << endl;  
  cout << "v2:" << v2 << endl;  
  cout << "v3:" << v3 << endl;  
}

void loop()
{
}
Ausgabe
Start
v0:65536
v1:65536
v2:65536
v3:65536

Was ich durch mein Studium weiß das ich mit 1<<16 auf jeden Fall das 16te Bit setze. Ich denke die Syntax passt, nur die Semantic stimmt nicht. Also es fehlt denke ich irgendwie ein Register oder ein Bit ist Falsch gesetzt.

Probier mal das Post 3 von Bot Challenge

GPIO1 ist bei meinem ESP32 etwas unglücklich, aber mit #define bitUsed BIT25 blinkt die LED an GPIO25 :slightly_smiling_face:

Wenn es bare metal sein soll, dann ist das deine Bibel.