ESP32C3 enable PLL

Nabend,

ich bekomme es einfach nicht gebacken mein ESP32C3 Super Mini Board auf die interne PLL umzustellen..

Laut LA komme ich maximal auf die XTAL (20MHz) was mache ich falsch, was habe ich nicht verstanden?

#define SYSTEM_CPU_PER_REG              (*(volatile uint32_t*)(SYSTEM_BASE_ADDR + 0x0008))
#define SYSTEM_PLL_FREQ_SEL             1<<2
#define SYSTEM_CPU_PERIOD_SEL           0
#define SYSTEM_SYSCLK_REG               (*(volatile uint32_t*)(SYSTEM_BASE_ADDR + 0x0058))
#define SYSTEM_SOC_CLK_SEL_PLL_CLK      1<<10ul
void setup() {
  SYSTEM_CPU_PER_REG = (SYSTEM_PLL_FREQ_SEL | SYSTEM_CPU_PERIOD_SEL);
  SYSTEM_SYSCLK_REG = SYSTEM_SOC_CLK_SEL_PLL_CLK; 
  GPIO_ENABLE_REG |= 1<<0;
}
void loop() 
{
  GPIO_OUT_W1TS_REG = 1<<0;
  GPIO_OUT_W1TC_REG = 1<<0;
}

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.

Hallo,

den MCU Takt stellt man im IDE Menü vom Board ein.
Die I/Os sind vom CPU Takt entkoppelt.
Wenn du bare metall programmieren möchtest, dann verwende nicht setup() und loop().
Nutze zudem die ESP APIs.

Auch wenn ich es im Code dynamisch ändere?
Das man die Frequenz am Anfang einstellt verstehe ich wohl.
Dachte jedoch das meine dynamische Änderung im Code diese überschreibt?

Hallo,

vom AVR kenne ich es so, dass man Schreibrechte für die Art von Register benötigt und gewisse Flags abfragen muss, ob die "Syncronisierung" wieder da ist, bevor man blind im Code weitermacht. Lasse dir den Inhalt der Register vor und nach Änderung ausgeben, also Debugging auf einfache Art. Wenn keine Änderung erfolgt, solltest du im Manual nachlesen was alles gemacht werden muss für eine Taktänderung.

Wenn das Board im IDE Menü normal eingestellt ist, sollte die PLL schon aktiv sein?

Das wäre jetzt die Frage..
Also wenn ich:

PIN_HIGH;
PIN_LOW;

Schalte komme ich auf circa 20MHz.
Ist dann schon die PLL aktiv?

Ich habe jetzt mal das Register ausgelesen und bekomme als Wert für XTAL 40 MHz.
Was ja mit dem Quarz bzw. Taktgeber übereinstimmt.
Das entsprechende Bit (10) im SYSTEM_SYSCLK_REG wird auch erfolgreich gesetzt.

Der GPIO Bus ist also unabhängig von der CPU Frequenz? ABP hat also einen eigenen Takt den man einstellen kann?