ラベル M5Stack の投稿を表示しています。 すべての投稿を表示
ラベル M5Stack の投稿を表示しています。 すべての投稿を表示

2023年10月25日水曜日

M5Stack Basicのdeep sleep中消費電流



M5Stack Core/Core2のボトムを外して液晶その他を消してdeep sleepしたら消費電流どのぐらいまで落ちるか、ぐぐっても出てこない……5V端子に5V給電して

M5.Lcd.setBrightness(0);

esp_deep_sleep_start();

を実行したら約11mA、割りと多いですね。

3V3端子に3.3V給電だと約15mAです。

2022年4月15日金曜日

M5Stack Basic上(ESP32)のinterruptで大苦戦

ご無沙汰しております。

interruptを使って、PWM入力のデューティー比を計測するという簡単なプログラムでハマりました。

IRAM_ATTRとかvolatileとか、Serial, delayを使わない、なんてのは当然やってます。でも、

  • Interrupt wdt timeout on CPU1 
  • LoadProhibited
  • Coprocessor exception

でrestartしちゃう。M5関連のコードを外してESP32 DevKitで動かしたり、structで定義していたものを単純変数に置き換えたり、メインループで使っているSoftwareSerialをHardwareSerialに変えてみたり。

何をやっても駄目。

最終的に動いたのですが……

対策は……浮動小数点を使わない……でした。

わけがわからないよ……。

2018年4月2日月曜日

M5Stack、ちゃんとPDM音が出ますね

命令を見るとtone系なので「あれ、せっかくのスピーカーなのにビープだけ?」って思ったんですが、回路図を見るとGPIO25がアンプ入力につながってます。

ってことで、下記の通り初期化して

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);
}

これつかって PCMデータ(符号なし16ビット)を渡すと音声出ますね。

  i2s_write_bytes(I2S_NUM, (const char *)ching, sizeof(ching),   portMAX_DELAY);
  i2s_zero_dma_buffer(I2S_NUM);