So-net無料ブログ作成
検索選択

ESP8266(WeMOS)のハングアップをATTINY85で自動リセット

IMG_5217.JPG
WeMOSは長い時間動作させると突然停止してしまう事が多々あります。
ATTINY85でハートビートモニターし、動作しなくなった、WeMOSをリセットさせます。

void(* resetFunc) (void) = 0;//declare reset function at address 0
int a, a_pre = 0;
unsigned long response_time = 0, interval_time = 0;
void loop() {
digitalWrite(1, HIGH);
oled.clear();
oled.cursorTo( 0, 0 );
oled.printString("volt:");
// Volt=val/1023*(19.8+68.1)/19.8*3.3=val*0.0143
a_pre = a;
a = int(analogRead(A3) * 0.0032); //for 3.3V
char strSensorValue[5];
oled.printString(itoa(a, strSensorValue, 10));
//
if (a != a_pre)
{
response_time = millis();
char buffer[10];
oled.cursorTo(0, 1);
sprintf(buffer, "%lu", response_time);
oled.printString(buffer);
goToSleep ();
}
if (a == a_pre) {
oled.cursorTo(0, 1);
oled.printString("int");
interval_time = millis() - response_time;
char buffer[10];
oled.cursorTo(0, 2);
sprintf(buffer, "%lu", interval_time);
oled.printString(buffer);
goToSleep ();
if ( interval_time > 5000)
{
oled.clear();
oled.cursorTo(0, 0);
oled.printString("Reset");
digitalWrite(4, LOW);
switch_on = 0;
delay(1000);
digitalWrite(4, HIGH);
delay(10000);
response_time = millis();
}
}
//sleep
digitalWrite(1, LOW);
goToSleep ();
if (millis() > 30 * 24 * 60 * 60 * 1000) resetFunc();
}
void goToSleep ()
{
set_sleep_mode (SLEEP_MODE_PWR_DOWN);
noInterrupts (); // timed sequence coming up
// pat the dog
wdt_reset();
// clear various "reset" flags
MCUSR = 0;
// allow changes, disable reset, clear existing interrupt
watchdogRegister = bit (WDCE) | bit (WDE) | bit (WDIF);
// set interrupt mode and an interval (WDE must be changed from 1 to 0 here)
//watchdogRegister = bit (WDIE) | bit (WDP2) | bit (WDP1) | bit (WDP0); // set WDIE, and 2 seconds delay
watchdogRegister = bit (WDIE) | bit (WDP2) | bit (WDP1); // set WDIE, and 1 seconds delay
sleep_enable (); // ready to sleep
interrupts (); // interrupts are required now
sleep_cpu (); // sleep
sleep_disable (); // precaution
}
nice!(1)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この記事のトラックバックURL: