컴포넌트와 와이어링은 타이머3개를 이용한 8진 카운터와 같습니다.
module BlinkTimerM {
uses {
interface Boot;
interface Timer<TMilli> as Timer0;
interface Timer<TMilli> as Timer1;
interface Timer<TMilli> as Timer2;
interface Leds;
}
}
implementation {
int ncnt=0;
void timerallstop(){
call Timer0.stop();
call Timer1.stop();
call Timer2.stop();
}
void timerallstart(){
call Timer0.startPeriodic(1000);
call Timer1.startPeriodic(2000);
call Timer2.startPeriodic(4000);
}
void ledinit(){
call Leds.led0Off();
call Leds.led1Off();
call Leds.led2Off();
}
event void Boot.booted() {
timerallstart();
}
event void Timer0.fired() {
call Leds.led2Toggle();
ncnt++;
if(ncnt==5){
ncnt=0;
timerallstop();
ledinit();
timerallstart();
}
}
event void Timer1.fired() {
call Leds.led1Toggle();
}
event void Timer2.fired() {
call Leds.led0Toggle();
}
}
R | sec | G | sec | Y | sec | ncnt |
0 | 1 | 0 | 1 | 0 | 0 | 0 |
0 | 2 | 0 | 2 | 1 | 1 | 1 |
0 | 3 | 1 | 1 | 0 | 0 | 2 |
0 | 4 | 1 | 2 | 1 | 1 | 3 |
1 | 1 | 0 | 1 | 0 | 0 | 4 |
5->0 |
ncnt가 5가 되면 타이머를 멈추고 led를 초기화 그다음에 다시 타이머를 실행한다.
'Computer > Tiny OS' 카테고리의 다른 글
[Tiny os] 타이머 3개를 이용한 8진 카운터. (1) | 2010.12.02 |
---|---|
[Tiny os] 5진 카운트 [타이머 한개] (0) | 2010.12.02 |
[Tiny os] 8진수 카운터 수정본 [타이머 한개] (0) | 2010.12.02 |
[tiny os] 8진수 카운터 (0) | 2010.10.21 |
[Tiny OS]tiny OS를 이용한 LED 구동 (0) | 2010.10.14 |