본문 바로가기
Arduino

[M5Stack] ESP32 reset (software) 방법

by 소나무기운 2021. 6. 16.
반응형

[2021-06-16] 최초 작성

 

[M5Stack , ESP32] software reset 

프로그램 코드로 보드 리셋하기

프로그램을 진행하다 보면 리셋이 필요한 경우가 많이 있죠.

 

주번 디바이스나 내부 설정값을 반영해야 하는 경우가 있구요.

예기치 않은 프로그램 오류로 인해서 시스템을 처음으로 돌려야 하는 경우가 있어요.

주기적인 CPU reset을 통해서 시스템을 안정화 시킬 필요가 있지요.

 

 

ESP32 계열의 software reset

몇가지 찾아본 중에 제일 간단한 방법이었어요.

ESP.restart();

이 함수를 호출해 줍니다.

 

AVR 계열의 software reset

SoftwareReset Lib를 사용합니다.

라이브러리 매니져에서 검색하시면 나와요.

아니면 여기 링크

https://www.arduino.cc/reference/en/libraries/softwarereset/

 

SoftwareReset - Arduino Reference

Reference > Libraries > Softwarereset SoftwareReset Device Control Allow to reset an arduino board from the sketch Author: Giuseppe Masino Maintainer: Giuseppe Masino Read the documentation Go to repository Compatibility This library is compatible with the

www.arduino.cc

내부 소스를 살펴보면 0번지로 점프하는 방법입니다.

주의 ) 이때 인터럽트를 쓰는 상태에서 프로그램 카운터만 돌리면 프로그램에 문제가 생기는 경우가 있습니다.

         프로그램 카운터를 0으로 돌리기 전에 각 인터럽트들을 정리해 주시면 좋겠네요.

 

 

Watchdog Timer 이용하는 방법

watchdog timer를 이용하는 방법이에요.

리셋이 필요할때 watchdog timer를 enable시켜놓고 리셋 되기를 기다리는 거죠.

M5Stack에서 해보지는 않았어요.

 

void SoftReset(void)
{
  wdt_enable( WDTO_60MS);
  while(1);
}

잘 될거라 생각됩니다.

 

 

 

마무리

여러가지 방법이 있으니 시도해 보시면 좋겠습니다.

여러가지 상황의 요청의 있으니 적절한 방법을 찾아보세요.

 

 

참고문헌

 
 

 

 

틀린 부분이나 질문은 댓글 달아주세요.

즐거운 하루 보내세요. 감사합니다.

 

 

반응형

댓글