?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

[질문] 특정 상황에서 즉시 펌웨어 Restart(Reboot)하는 방법?

페이지 정보

작성자 돌메 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일15-06-16 14:52 조회1,866회 댓글3건

본문

환경: Arduino Mega2560

아두이노 프로그램이 어떤 상태가 되면 무조건 Restart하려 합니다.
(가령, 시리얼 통신이 1시간 동안 없었다면 시리얼 통신에 문제가 있는 것으로 간주해서 프로그램 Restart하는 등의 문제)

void Setup()
{
    wdt_enable(WDTO_4S);
    ...
}

void loop()
{
    wdt_reset();
    ...
}

형태로 하면 단지 코드가 잘못되어서 reset되는 것 이외에 다른 작용을 못하는데요..
특정 상황에서 바로 reset하려 합니다.
이럴 때 쓰는 방법이나 함수가 있나요?
reset();  ... restart() ... 등의 함수가 있나요?

감사합니다.

 

댓글목록

하드카피님의 댓글

하드카피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

함수는 잘 모르겠습니다. 물리적으로 reset pin을 이용하면 될 것 같습니다. 공식 홈페이지를 보면 아래와 같이 설명이 나와 있습니다.
Reset pin :  Bring this line LOW to reset the microcontroller. Typically used to add a reset button to shields which block the one on the board.

결과적으로 reset 핀을 전자적으로 제어하면 reset이 가능할 것 같습니다.

돌메님의 댓글

돌메 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글의 댓글 작성일

답변 감사드립니다. 다시 질문... H/W적인 지식이 없어서..
보드에 보니 RESET Pin이 있는데...
digitalWrite(ResetPin, LOW);
이런 식으로 할 수가 있나요?  Pin Maping을 보니 ATMega2560 MCU의 Pin으로는 30번인데
digitalWrite()로 할 수 있는 매핑 번호는 없고 그냥 RESET로만 되어 있네요.
이런 핀을 제어할 때 어떻게 해야 하는 지?
어떻게 해야 하는 지 모르겠네요.
감사합니다.

하드카피님의 댓글

하드카피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

트랜지스터 사용해서 전자적으로 제어해보세요. 아래 내용이랑 비슷하다고 보시면 되고... 인터넷에 트랜지스터 사용법을 검색하시면 관련 자료를 구하실 수 있습니다.
http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=tech_motor&wr_id=9