1. 7of9

    No comment

    7of9
Changes in body
Source | HTML | Preview
@@ -1,134 +1,134 @@
```txt:動作確認
ESP8266 (気圧計で使用したユニバーサル基板: I2Cを4.7kでプルアップ)
SDモジュール: MSC-MOD20 ( http://www.microtechnica-shop.jp/shopdetail/000000000026/ )
Analog Discovery 2 (以下AD2)
```
http://qiita.com/7of9/items/1a4ceb8d32ddff8a6070
の続き。
MSC-MOD20の癖を見つける。
## code v0.7
[v0.7 @ github](https://github.com/yasokada/esp8266_160730_MSC-MOD20p1/releases/tag/v0.7)
v0.2以降の主な変更
- I2C処理を別ファイル化
- 他のマイコン対応を考慮
- MSC-MOD20関連の処理を別ファイル化
- ソースのメンテ性を高める
- SD_Init()を追加
メイン処理は以下となった。
```c:esp8266_160730_MSC-MOD20p1.ino
#include <Wire.h>
#include "esp8266_160730_i2cWrapper.h"
/*
* 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が必ず失敗する。
癖なのか、仕様なのか。取説をもっと読む必要がある。
MSC-MOD20の起動時のメッセージ文字列があることで、Power on boot直後のSD Init()のI2C波形をとるのが難しい。
追加のI/Oピンを使ってrising edgeを発生させ、それをトリガしないといけないだろうか。
## AD2で測定してみた
> 追加のI/Oピンを使ってrising edgeを発生させ、それをトリガしないといけないだろうか。
とりあえずやってみた。
### Power on boot直後の波形
コマンドに対する応答がない。
![qiita.png](https://qiita-image-store.s3.amazonaws.com/0/32870/b8cd90b4-b28e-bd5c-acab-8c240104b98f.png)
### Power on boot後、2回目以降の波形
![qiita.png](https://qiita-image-store.s3.amazonaws.com/0/32870/50354bc5-78fb-f8c7-64e9-5e29667b0140.png)
### 備考
取説上でこの旨の記載は見つかっていない。
-Power on boot直後に別コマンド('<LF>')を送っても状況は変わらず。
+Power on boot直後に別コマンド(`<LF>`)を送っても状況は変わらず。
癖かもしれない。