質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

1回答

6889閲覧

ESP32 EEPROMの使用方法

退会済みユーザー

退会済みユーザー

総合スコア0

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2019/03/04 11:03

前提・実現したいこと

esp32のeepromを使用したい
Arduino core for the esp32を使用しています。

発生している問題・エラーメッセージ

EEPROM.begin(10);
しても
EEPROM.length();
が0のまま変わらない
EEPROM.begin(10);はfalseを返しています。
なぜかtrueになりません。

該当のソースコード

開発環境は
arduino core for the esp32 ver1.0.1
です。

#include "EEPROM.h"

void setup() {
Serial.begin(115200);
EEPROM.begin(10);
Serial.println((String)EEPROM.length());
}

void loop() {
}

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

arduino core for the esp32 ver1.0.1です。
ボードはSWITCH SCIENCE ESPR DEVELOPER 32です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2019/03/04 23:41 編集

そのarduino core for the esp32というのはどうやってインストールされましたか? べつのライブラリを呼び出してるってことはないでしょうか
退会済みユーザー

退会済みユーザー

2019/03/05 13:01 編集

Arduino core for the esp32はArduino IDEのボードマネージャーを使用してインストールしてあります ボードはツールからESP32 Dev Moduleを選択してあります インクルードファイルはesp32の物をインクルードできていると思っていますが まだ不確実な部分等有りますでしょうか?
guest

回答1

0

ベストアンサー

まだちゃんと調べられてませんが、回答がつかないようなので取り急ぎ。

ESP-WROOM-32 ( ESP32 ) SPIFFS メモリサイズを大きくする方法 あたりをみると、EEPROMのエミュレーション領域を指定するファイルがあり、ここに指定した名前でEEPROMクラスのコンストラクタを呼んでやらなきゃいけない、のでは。
EEPROMライブラリのデフォルトではこの名前がeeprom0とかになっていて、設定ファイルと合っていないのでEEPROMの領域を取得できず、lengthが0になっている、とかいうことのような気がします。


M5Stackで試してみました。
デフォルトでdefault.csvは

defulat.csv

1# Name, Type, SubType, Offset, Size, Flags 2nvs, data, nvs, 0x9000, 0x5000, 3otadata, data, ota, 0xe000, 0x2000, 4app0, app, ota_0, 0x10000, 0x140000, 5app1, app, ota_1, 0x150000,0x140000, 6eeprom, data, 0x99, 0x290000,0x1000, 7spiffs, data, spiffs, 0x291000,0x16F000,

となっていました。なので、サンプルプログラムのeeprom_writeは書き込みを行えました。
ここで、default.csvのeepromをeeprom0と変えて再度コンパイル、実行してみると、
failed to initialise EEPROM
となり、プログラムは動作しませんでした。

ということで、default.csvを確認してみて下さい。

ちなみに、ソースを見る限りではEEPROMClass::lengthはEEPROMClassのコンストラクタで与えられた値を返すようですね。その値がなにかに使われている様子もないので、他機種とのコンパチピリティのためのパラメータなのでしょうか。lengthの返す値は意味を持たないようです。

投稿2019/03/05 22:57

編集2019/03/07 13:07
thkana

総合スコア7629

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/03/06 10:51

ご回答有り難うございます 確認してみようとeepromのライブラリフォルダを覗きましたがeeprom0というのが見つからない状態です どのファイルを覗くとeeprom0の記載が有りますでしょうか?
thkana

2019/03/11 14:32

ここまでの流れで大体わかると思うけど、なんでも知ってる凄いteratailの中の人がささっと答えたわけじゃないんです。とすると、「結局どうだったのかなぁ?」と気にするこっちの気持ちが想像出来ませんか? 公の場であなたの質問を共有した以上、あなたひとりが解決したことで終わりじゃなくて、その顛末も皆で共有すべきじゃないかと思うんだけど、違うかしら?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問