2016/02/03

[esp8266]user_rf_pre_init()は処理するところじゃないな

user_rf_pre_init()は、user_init()より前に呼ばれている。
じゃあ、UARTの速度変更とか、リセット原因の出力のようなあまり本体に関わらない処理をそこに置いておくと、user_init()が呼ばれたときにはさっぱりした状態で始められそうだ。

そう思って、ずっとそう実装していた。
まず最初にわかったのは、UARTの速度変更をしても、user_init()が呼ばれたときにはまた元に戻っているということだ。
まあ、そういうものかと思って、あまり気にしなかった。

リセット原因は、いつやってもREASON_DEFAULT_RSTしか取れなかったので「使えねぇなあ」と、これはこれであまり気にしていなかった。
どうみてもWDTでリセットがかかっているシーンだったけど、そういうものなんだ、と気にしてなかったのだ。

 

が、なんとなくuser_rf_pre_init()に書いていた処理を、全部user_init()に移動させると・・・リセット原因がちゃんと取得できてるじゃないか!
リセットボタンを押したときのしか見てないけど、REASON_EXT_SYS_RSTが返ってきている。

いやあ、今年一番の驚きでしたよ。
みんなも、気をつけようね。


もう1つ気付いたのは、FLASHを焼くとき、ESP8266のTXはUART1でも焼けそうだということ。
まあ、これはうちにあるあれこれつなげた基板でしか動かしてないから、他でもそうなのか知らんけどね。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。