====== startTimerEvent ====== ''void startTimerEvent (u16 interval) '' |interval : 타이머 이벤트 간격 (mS 단위, 1 부터 65535 까지 사용가능 ; =65.5 초) | ==== 설명 ==== 타이머 이벤트는 주기적으로 타이머 이벤트 함수를 실행시켜주는 기능입니다. 최소 1mS 간격부터 65 초 간격까지 사용가능합니다. 이 함수를 사용하여 타이머 이벤트를 시작합니다. Interval 은 이벤트를 발생시킬 시간 간격을 의미합니다. 1 일경우 1mS 마다 timerEvent 함수를 실행시킵니다. 10 일경우에는 10mS 마다 timerEvent 함수를 실행시킵니다. 이 기능은 매우 유용하게 쓰입니다. 백그라운드에서 I/O 처리를 해준다거나, 타이밍을 측정하기 위해 사용하기도 합니다. 마치 여러 개의 프로세서가 동시에 돌아가는 것처럼 보이도록 하는 멀티테스킹 처리도, 타이머 이벤트를 이용해서 처리할 수 있습니다. 타이머 이벤트 사용시 주의사항은, 이벤트 처리루틴이 반드시 타이머 이벤트 발생주기보다 빠르게 실행을 마쳐야 한다는 것입니다. 예를 들어 이벤트는 10mS 마다 발생하는데 이벤트 처리루틴이 100mS 이상 걸린다면, 이 프로그램은 계속해서 이벤트 루틴만 실행하게 되고, 메인루틴은 실행하지 못하게 됩니다. ==== 사용예 ==== #include "moacon500.h" int tm; #define delaytime 250 void cmain(void) { short i,j; startTimerEvent(100); // 타이머 이벤트를 기동시킵니다. portInit(6,0); while (1) { portOff(61); delay(delaytime); portOn(61); delay(delaytime); } } // 100mS 마다 아래 함수를 실행합니다. void timerEvent(void) { printf("comfile tech %d \r\n",tm++); } ==== 타이머 이벤트에서 CLCD사용시 주의할 사항 ==== 타이머 이벤트 루틴 안에서 CLCD 에 표시하는 함수를 사용하실 수 없습니다. 메인루프에서 CLCD 화면에 데이터를 표시하고 있는 중간에 이벤트가 발생할 수 있는데, 이때 표시위치를 다른곳으로 바꾸어서 캐릭터를 표시하게되면, 이벤트 복귀후 엉뚱한 위치에 글자가 표시될 수 있기 때문입니다. #include "moacon500.h" void cmain(void) { int i=0; clcdI2cInit(0); clcdPower(1); delay(100); startTimerEvent(100); while(1) { clcdPrint(1,3,"%05d",i++); clcdPrint(2,2,"Comfile"); } } void timerEvent(void) { clcdPrint(5,0,"Event Print"); // 이벤트 루틴안에서 표시위치를 바꾸면 안됩니다. } [[moacon:index#-s-|라이브러리 목록으로 가기]]