목차

유틸리티 함수

딜레이

Wait

Wait time(mS)

밀리초 단위 시간지연 명령입니다. Delay라고 써도 됩니다.

Wait 200
Delay 200

Udelay

Udelay time(micro초)

마이크로초 단위의 짧은 지연입니다.

Udelay 100 ' 100 마이크로초 지연합니다.

시스템 시간

Millis

value = Millis()

시스템 부팅 이후 경과한 시간을 ms(밀리초) 단위로 반환합니다.

반환형은 64bit Long 이며, 장시간 동작하는 시스템에서도 오버플로우 걱정 없이 사용할 수 있습니다. (오버플로우 까지 5억년 걸립니다.)

Dim t As Long
 
t = Millis()
 
Do
    If Millis() - t >= 1000 Then
        Debug "1 Second", Cr
        t = Millis()
    End If
Loop

시간 지연 사용 시 주의사항

Wait, Delay, Udelay 명령은 지정한 시간 동안 프로그램 실행을 멈추는(Block) 방식입니다. 즉, 대기하는 동안 아래 코드가 실행되지 않습니다.

예를 들어 Wait 1000 을 사용하면 1초 동안 프로그램이 멈추며, 그 시간 동안 입력 감지, 통신 처리, 상태 확인 등이 지연될 수 있습니다.

특히 자동화 제어나 실시간 응답이 필요한 프로그램에서는 과도한 Wait 사용은 권장되지 않습니다.

Do
    ReadSensor()
 
    Wait 1000   '이 시간 동안 프로그램이 멈춤
 
    Process()
Loop

위 예제에서는 센서를 읽은 뒤 1초 동안 프로그램이 정지하므로, 빠르게 변하는 입력을 놓칠 수 있습니다.

이런 경우에는 Millis() 를 사용한 비차단(Non-blocking) 방식을 권장합니다.

Dim t As Long
 
t = Millis()
 
Do
    ReadSensor()
 
    If Millis() - t >= 1000 Then
        Process()
        t = Millis()
    End If
Loop

이 방식은 프로그램이 멈추지 않고 계속 실행되므로, 입력 처리와 통신을 유지하면서 시간 제어가 가능합니다.

← CUBLOC2 목차로 돌아가기