마이크로 파이썬 배우기 15 – Reset / Reboot을 위한 soft reset과 hard reset

마이크로 파이썬 배우기 15 – Reset / Reboot을 위한 soft reset과 hard reset

프로그램을 실행하다 보면, 여러 가지 이유로 프로그램 실행을 중단해야 할 경우들이 있곤 하다. 예를 들면 Cloud 접속이 알지 못하는 이유로 중단된 경우나, 오동작 하는 등의 경우들이다.

​

마이크로파이썬에서는 이러한 경우, 프로그램 내에서 시스템을 reset 하거나, 완전히 전원을 끊었다가 다시 인가하는 형태인 hard reset 방법을 제공하는데, 이러한 기능들을 시스템 상태를 진단하는 기능과 연계하여 사용하면 접속이 끊어졌거나, 오동작 등의 상황에서 코드 내에서 능동적으로 시스템을 soft reset 하거나, 완전히 전원 스위치를 껐다가 켜는 것과 같은 hard reset 기능이 가능하다.

​

soft reset

soft reset은 라즈베리 파이나 ESP32 보드 등에 연결된 주변장치에는 영향을 주지 않고, 마이크로파이썬이 수행되는 CPU 부분만 reset 해 주는 효과를 내며, 쉽게 생각하면, 단순히 code 실행을 중단하는 효과가 있다.

​

사용하는 방법은 코드에 “import sys” 명령어로 sys 라이브러리를 반영해 준후, reset 해야 하는 곳에서, sys.exit( ) 명령을 주면 된다.

import machine
import utime
import sys
led=machine.Pin(25, machine.Pin.OUT)
i=0
while True:   
    led.toggle()
    utime.sleep(0.5)
    i+=1
print (i)
if i==20:
        sys.exit() 

​

​

hard reset

hard reset 은 soft reset과 달리, 라즈베리 파이나 ESP32 보드 등의 전원을 빼었다 다시 켜는 것과 유사한 효과를 제공한다. 전원이 완전히 단락 되었다가 다시 연결되는 것이므로, 회로에 연결된 주변기기들의 인식 등을 새로 시작하는 것과 유사한 효과를 준다.

​

사용하는 방법은 코드에서 reset 해야 하는 곳에서, machine.reset( ) 명령을 주면 된다. 당연하게도, “import machine” 라이브러리 사용이 필요하다.

import machine
import utime
import sys

led=machine.Pin(25, machine.Pin.OUT)
i=0
while True:   
    led.toggle()
    utime.sleep(0.5)
    i+=1
print (i)
if i==20:
        machine.reset()

각각의 Thonny IDE 내에서만 실행 시에는 사실 큰 차이를 체감하기는 어렵다.

​

soft reset의 경우, 코드 실행만 중단되고, 화면상 특별히 나타나는 현상은 없으나,

hard reset의 경우에는 IDE 화면상에 마치 STOP 버튼을 누르거나, 보드에 전원을 처음 연결했을 때와 같은 메시지가 나타나는 차이가 있다.

​

​

hard reset과 soft reset의 실제 사용 시 차이점

그러나, 실제 단독사용시에 있어서는 hard reset과 soft reset의 효과의 차이는 매우 크다.

​

먼저, soft reset이 적용된 코드를 보드에 main.py 이름으로 자동 실행되도록 보드에 저장하면, soft reset과 hard reset의 특징이 크게 다르게 된다. soft reset이 실행되었으나, 전원이 나간 것이 아니므로, main.py가 다시 재실행되지는 않는 것이다. 때문에, soft reset이 적용된 위의 코드를 main.py로 보드에 저장해 독립적으로 전원을 공급하면, LED가 10번만 점등한 후 더 이상 아무런 동작을 하지 않게 된다.

​

​

​

그런데 hard reset이 적용된 코드를 보드에 main.py 이름으로 보드에 저장하고, 독립적으로 전원을 인가해 실행하면, soft reset를 사용했던 경우와 다르게 LED가 끊기지 않고 지속해서 점멸하게 된다.

​

해당 코드상으로는 LED가 10번 반짝인 후, hard reset이 실행되지만, hard reset의 특성상 보드에 전원이 순간적으로 짧은 순간 꺼졌다 꺼진 것처럼 작동하기 때문에 main.py가 다시 반복해서 자동 실행되므로, LED는 끊임없이 연속 동작을 이어가게 된다.

​