M5Stack Core/Core2のボトムを外して液晶その他を消してdeep sleepしたら消費電流どのぐらいまで落ちるか、ぐぐっても出てこない……5V端子に5V給電して
M5.Lcd.setBrightness(0);
esp_deep_sleep_start();
を実行したら約11mA、割りと多いですね。
3V3端子に3.3V給電だと約15mAです。
M5Stack Core/Core2のボトムを外して液晶その他を消してdeep sleepしたら消費電流どのぐらいまで落ちるか、ぐぐっても出てこない……5V端子に5V給電して
M5.Lcd.setBrightness(0);
esp_deep_sleep_start();
を実行したら約11mA、割りと多いですね。
3V3端子に3.3V給電だと約15mAです。
ご無沙汰しております。
interruptを使って、PWM入力のデューティー比を計測するという簡単なプログラムでハマりました。
IRAM_ATTRとかvolatileとか、Serial, delayを使わない、なんてのは当然やってます。でも、
でrestartしちゃう。M5関連のコードを外してESP32 DevKitで動かしたり、structで定義していたものを単純変数に置き換えたり、メインループで使っているSoftwareSerialをHardwareSerialに変えてみたり。
何をやっても駄目。
最終的に動いたのですが……
対策は……浮動小数点を使わない……でした。
わけがわからないよ……。
void set_16k_16() {
i2s_set_pin(I2S_NUM, NULL);
i2s_config_t i2s_config;
i2s_config.mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX | I2S_MODE_PDM); // Only TX
i2s_config.sample_rate = 16000;
i2s_config.bits_per_sample = BITS_PER_SAMPLE;
i2s_config.channel_format = I2S_CHANNEL_FMT_ONLY_RIGHT; //right channels
// i2s_config.channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT; //right left
i2s_config.communication_format = I2S_COMM_FORMAT_PCM;
i2s_config.dma_buf_count = 4;
i2s_config.dma_buf_len = 1024;
i2s_config.intr_alloc_flags = ESP_INTR_FLAG_LEVEL1; //Interrupt level 1
i2s_driver_install(I2S_NUM, &i2s_config, 0, NULL);
}
i2s_write_bytes(I2S_NUM, (const char *)ching, sizeof(ching), portMAX_DELAY); i2s_zero_dma_buffer(I2S_NUM);