Stránka 1 z 2
Chyba v programu pro ESP32-C3-Zero
Napsal: 12 lis 2024, 14:17
od Dene Elanik
Kód: Vybrat vše
RTC_DATA_ATTR int pocetBootovani = 0;
void vypisZdrojProbuzeni(){
esp_sleep_wakeup_cause_t zdrojProbuzeni;
zdrojProbuzeni = esp_sleep_get_wakeup_cause();
switch(zdrojProbuzeni)
{
case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("Cip probuzen externím signálem - RTC_IO"); break;
case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("Cip probuzen externím signálem - RTC_CNTL"); break;
case ESP_SLEEP_WAKEUP_TIMER : Serial.println("Cip probuzen casovacem"); break;
case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("Cip probuzen dotykovym senzorem"); break;
default : Serial.printf("Jiny zdroj probuzeni: %d\n",zdrojProbuzeni); break;
}
}
void setup(){
Serial.begin(115200);
++pocetBootovani;
Serial.println(String(pocetBootovani)+ ". nabootovani");
vypisZdrojProbuzeni();
esp_sleep_enable_ext0_wakeup(GPIO_NUM_3,HIGH);
Serial.println("Aktivuji mod hlubokeho spanku...");
esp_deep_sleep_start();
}
void loop(){
}
Pokouším se uspat a probudit tlačítkem ESP32-C3-Zero. Při kompilaci se objeví chyba:
Kód: Vybrat vše
E:\ESP32_pgm\probuzeni_gpio\probuzeni_gpio.ino: In function 'void setup()':
E:\ESP32_pgm\probuzeni_gpio\probuzeni_gpio.ino:23:5: error: 'esp_sleep_enable_ext0_wakeup' was not declared in this scope; did you mean 'esp_sleep_enable_bt_wakeup'?
23 | esp_sleep_enable_ext0_wakeup(GPIO_NUM_3,HIGH);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
| esp_sleep_enable_bt_wakeup
exit status 1
Compilation error: 'esp_sleep_enable_ext0_wakeup' was not declared in this scope; did you mean 'esp_sleep_enable_bt_wakeup'?
Nemohu ji najít, mám podezření na příkaz ... ext0 ...
Re: Chyba v programu pro ESP32-C3-Zero
Napsal: 12 lis 2024, 14:26
od Dene Elanik
Ještě dodávám, že jsme přidal knihovnu ESP32, ale nepomohlo to
Re: Chyba v programu pro ESP32-C3-Zero
Napsal: 12 lis 2024, 14:28
od Pablo74
Re: Chyba v programu pro ESP32-C3-Zero
Napsal: 12 lis 2024, 14:41
od Dene Elanik
Bohužel ne, chyba pořád stejná, zkoušel jsem i ext1, ale stená hláška
Re: Chyba v programu pro ESP32-C3-Zero
Napsal: 12 lis 2024, 14:43
od Pablo74
A když na začátek zdrojáku přidáš (viz níže), bude to funkční?
Re: Chyba v programu pro ESP32-C3-Zero
Napsal: 12 lis 2024, 15:00
od Dene Elanik
Nepomohlo, ale když změním desku na ESP32-WROOM-DA Module, tak se program zkompiluje bez chyby.
Re: Chyba v programu pro ESP32-C3-Zero
Napsal: 12 lis 2024, 16:54
od kiRRow
Pokud se ten samý kód zkompiluje pro jinou desku správně a pro tuhle ne, není tento příkaz tou deskou podporován. Křičí to na tebe, že nemáš deklarováno 'esp_sleep_enable_ext0_wakeup' ... v tomto návodě (
https://hutscape.com/tutorials/external ... no-esp32c3 ) používájí příkaz
Kód: Vybrat vše
esp_deep_sleep_enable_gpio_wakeup(1 << INTERRUPT_PIN,
ESP_GPIO_WAKEUP_GPIO_HIGH);
Re: Chyba v programu pro ESP32-C3-Zero
Napsal: 12 lis 2024, 17:53
od kiRRow
Jenom tak ze srandy, né, že bych se nerad nezamyslel a neopověděl a nepomohl, ale jen ze zvědavosti ... Zeptal jsem se co si o tom myslí openAI, zkopíroval jsem jí tvůj dotaz i to co jsi už zkoušel a odpověď zní :
Chyba je pravděpodobně způsobena tím, že ESP32-C3 má omezenou podporu pro některé funkce, které jsou dostupné u jiných ESP32 modulů, jako je ESP32-WROOM. Konkrétně funkce esp_sleep_enable_ext0_wakeup() nemusí být dostupná pro ESP32-C3, protože tato verze používá jinou architekturu a některé funkce hlubokého spánku a probouzení nemusí fungovat stejně.
Zde jsou možnosti, jak tento problém vyřešit:
Zkontroluj dokumentaci pro ESP32-C3: ESP32-C3 může mít alternativní způsob, jak probouzet zařízení pomocí externího GPIO, nebo jiný přístup k hlubokému spánku. Možná bude nutné použít funkci specifickou pro ESP32-C3.
Vyzkoušej esp_sleep_enable_gpio_wakeup(): Místo esp_sleep_enable_ext0_wakeup() zkus použít esp_sleep_enable_gpio_wakeup(). ESP32-C3 by měl tuto funkci podporovat, ačkoli může být nutné přidat další kroky, jako nastavit PIN pro probuzení pomocí esp_deep_sleep_enable_gpio_wakeup(GPIO_NUM_3, ESP_GPIO_WAKEUP_GPIO_HIGH).
Použij makra pro kontrolu kompatibility kódu: Můžeš přidat makra, která zkontrolují, na jakém typu desky program běží, a podle toho upravíš volané funkce. Například:
cpp
Zkopírovat kód
#ifdef CONFIG_IDF_TARGET_ESP32C3
// Kód pro ESP32-C3 (např. esp_sleep_enable_gpio_wakeup)
#else
// Kód pro běžný ESP32 (např. esp_sleep_enable_ext0_wakeup)
#endif
Aktualizuj knihovny a IDE: Pokud nepoužíváš nejnovější verzi ESP32 knihoven nebo Arduino IDE, aktualizuj je. Mohou přidat kompatibilitu pro ESP32-C3 a zajistit správné rozpoznání funkcí spánku a probuzení.
Dej vědět, pokud bys potřeboval detailnější vysvětlení k některému z těchto kroků.
Tím, neříkám, že se nemáš chodit ptát tady ... rádi pomůžeme, rádi poradíme. Ale když potom ten příspěvek pošleš umělé inteligenci a s její pomocí se dopracuješ řešení dříve, než ti někdo stihne poradit tady, tak můžeš svůj úspěch publikovat. Budeš mít vyřešeno dříve a smysluplný příspěvek na fóru zůstane pro budoucí řešitele problému, včetně toho jak jsi postupoval a čím to bylo, jak se to opravilo. Win Win situace.
Re: Chyba v programu pro ESP32-C3-Zero
Napsal: 12 lis 2024, 17:58
od Dene Elanik
Asi mám hloupější AI, ale každopádně jsi mne navedl na správnou stopu.
Tvůj odkaz pomohl, Zero už spí a můžu ho kdykoli probudit externě pinem, jak jsem zamýšlel.
Tak DÍKY

Re: Chyba v programu pro ESP32-C3-Zero
Napsal: 12 lis 2024, 18:01
od kiRRow
Rádo se stalo.

... přijďte zas
