From ddb2343bc029f5a7659cfeed2dffaee7f62dc949 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Fri, 3 Apr 2015 02:18:13 +0300 Subject: [PATCH] Initial support for CPU frequency selection --- boards.txt | 8 +++++++- cores/esp8266/core_esp8266_main.cpp | 13 +++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/boards.txt b/boards.txt index 0930d760a..05b49a20c 100644 --- a/boards.txt +++ b/boards.txt @@ -1,5 +1,5 @@ menu.UploadSpeed=Upload Speed - +menu.CpuFrequency=CPU Frequency ############################################################## esp01.name=Generic ESP8266 board @@ -17,6 +17,12 @@ esp01.build.board=ESP8266_ESP01 esp01.build.core=esp8266 esp01.build.variant=esp01 +esp01.menu.CpuFrequency.80=80MHz +esp01.menu.CpuFrequency.80.build.f_cpu=80000000L + +esp01.menu.CpuFrequency.160=160MHz +esp01.menu.CpuFrequency.160.build.f_cpu=160000000L + esp01.upload.tool=esptool esp01.menu.UploadSpeed.115200=115200 esp01.menu.UploadSpeed.115200.upload.speed=115200 diff --git a/cores/esp8266/core_esp8266_main.cpp b/cores/esp8266/core_esp8266_main.cpp index 55d60fa60..f6c2f5822 100644 --- a/cores/esp8266/core_esp8266_main.cpp +++ b/cores/esp8266/core_esp8266_main.cpp @@ -37,12 +37,24 @@ extern "C" { int atexit(void (*func)()) { return 0; } +extern "C" void ets_update_cpu_frequency(int freqmhz); void initVariant() __attribute__((weak)); void initVariant() { } extern void loop(); extern void setup(); +void preloop_update_frequency() __attribute__((weak)); +void preloop_update_frequency() +{ +#if defined(F_CPU) && (F_CPU == 16000000L) + REG_SET_BIT(0x3ff00014, BIT(0)); + ets_update_cpu_frequency(160); +#endif +} + + + extern void (*__init_array_start)(void); extern void (*__init_array_end)(void); @@ -87,6 +99,7 @@ static void loop_wrapper() setup(); setup_done = true; } + preloop_update_frequency(); loop(); esp_schedule(); }