1. 7of9

    Posted

    7of9
Changes in title
+MSC-MOD20 > SDモジュール ソフト > v0.7 > SD_Init()まで > 1回目のSD_Init()が失敗する
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,104 @@
+```txt:動作確認
+ESP8266 (気圧計で使用したユニバーサル基板: I2Cを4.7kでプルアップ)
+SDモジュール: MSC-MOD20 ( http://www.microtechnica-shop.jp/shopdetail/000000000026/ )
+```
+
+http://qiita.com/7of9/items/1a4ceb8d32ddff8a6070
+の続き。
+
+MSC-MOD20の癖を見にくい。
+
+## code v0.7
+
+v0.2以降の主な変更
+
+- I2C処理を別ファイル化
+ - 他のマイコン対応を考慮
+- MSC-MOD20関連の処理を別ファイル化
+ - ソースのメンテ性を高める
+- SD_Init()を追加
+
+メイン処理は以下となった。
+
+```
+#include <Wire.h>
+#include "esp8266_160730_i2cWrapper.h"
+
+/*c:esp8266_160730_MSC-MOD20p1.ino
+ * v0.7 2016 Jul. 30
+ * - MSCMOD20lib: add MSCMOD_InitSD()
+ * - MSCMOD20lib: add receiveAck()
+ * v0.6 2016 Jul. 30
+ * - separate MSC-MOD20 functions to external file
+ * v0.5 2016 Jul. 30
+ * - separate i2c setup/read/write to external file
+ * - rename readData() to readCode()
+ * - readData() takes adr param
+ * v0.4 2016 Jul. 30
+ * - rename helloWorld() to checkWithAck()
+ * - add sendData()
+ * - rename readAck() to readReply()
+ * - readAck() returns bool type
+ * v0.3 2016 Jul. 30
+ * - add readAck()
+ * - add isData()
+ * - readData() returns char type
+ * - add readBootBanner()
+ * v0.2 2016 Jul. 30
+ * - fix bug > Device Address was not 7 bit
+ * v0.1 2016 Jul. 30
+ * - add readData()
+ * - add helloWorld()
+ * - add loop()
+ * - add setup()
+ */
+
+void setup() {
+ Serial.begin(115200);
+ Serial.println("");
+
+ i2c_setup();
+ char rcvstr[100] = { 0 };
+ MSCMOD_ReadBootBanner(/*rcvmaxlen=*/100, rcvstr);
+ if (strlen(rcvstr) > 0) {
+ Serial.print(rcvstr);
+ }
+}
+
+void loop() {
+
+ if (MSCMOD_InitSD(/* dstPtr=*/NULL)) {
+ Serial.println("init SD: OK");
+ } else {
+ Serial.println("init SD: NG");
+ }
+
+// char rcvstr[5] = { 0 };
+// if (MSCMOD_CheckWithAck(rcvstr)) {
+// Serial.print(rcvstr);
+// } else {
+// Serial.println("ACK NG");
+// }
+
+ delay(3000); // msec
+}
+```
+
+## 結果
+
+```txt:結果
+ GHI Electronics, LLC
+----------------------
+ ALFAT SoC Processor
+!00
+init SD: NG
+init SD: OK
+init SD: OK
+init SD: OK
+```
+
+Power on boot直後のSD Initが必ず失敗する。
+
+癖なのか、仕様なのか。取説をもっと読む必要がある。
+
+