2017-08-21 6 views
2

なラインを呼び出した場合、私は疑問に思う:analogWrite(4,1024)がESP8266をハングアップさせる可能性はありますか?

analogWrite(4, 1024); 

はESP8266がハングアップする可能性がありますか?

正常に動作してから約1週間後に私のESP8266がハングするので、私は尋ねています。これはデバッグが面倒ですが、問題をanalogWrite()を使用する関数に絞り込むことができました。私はそれを分析したところ、値は0から255の代わりに0から1024の範囲であると私には分かりました。

extern "C" void analogWrite(uint8_t pin, int value) { 
    if (pin >= ESP_PINS_OFFSET) { 
    __analogWrite(pin - ESP_PINS_OFFSET, value); 
    } 
    else { 
    wifio::analogWrite(pin, value); 
    } 
} 

は、それは私が知識を持っていないいくつかのSDKのコマンドを呼び出して、私はそれは、彼らがやっていることを検証することが可能かどうかわからない:

これはアルドゥイーノからanalogWrite()機能はありますか?許容範囲外の値でanalogWrite()を呼び出す

+0

あなたは、スタックトレースを行うためのEEPROMでクラッシュ情報が保存されますlibに使用することができます。https://github.comを/ krzychb/EspSaveCrash – BMelis

+0

残念ながら、そこには何も保存されませんクラッシュはありません。私のデバイスはシリアル24hに接続されています。クラッシュがあった場合は、その後にESP8266が再起動しても何の問題もありません。 – Defozo

答えて

2

はおそらく未定義の動作の原因となります。

構文ESP8266のため::analogWrite(ピン、valueParametersピン:値に書き込むためのピン :デューティ・サイクル:0(常にオフ)と1023年の間に、あなたは間違いなく何かに参加する前に、この問題を修正する必要があります (常にオン)

ますが、これは修正されるまで、他のデバッグ作業を忘れ

+1

ESP8266では、オンラインリファレンスに書かれているように、範囲はデフォルトで0-1023です:http://esp8266.github.io/Arduino/versions/2.3.0/doc/reference.html#analog-output – BMelis

+0

知っていますが、1024は1023 + 1です。 – Defozo

+0

私は副作用のない "ロールオーバー"の価値があると判断しました。答えは間違いありませんか? – dandavis

関連する問題