Raspberry Pi のsleep時間測定

RaspberryPiのGPIO出力波形にてsleep処理時間を測定してみました。

◆sleep()

while(1){
    *(gpio_regs + 0x7) = (0x1 << portnum);
    sleep(n);
    *(gpio_regs + 0x0A) = (0x1 << portnum);
    sleep(n);
}

n = 1
1秒から程遠い結果でした。原因は??

◆usleep()

while(1){
    *(gpio_regs + 0x7) = (0x1 << portnum);
    usleep(n);
    *(gpio_regs + 0x0A) = (0x1 << portnum);
    usleep(n);
}

n = 1

n = 10

n = 100

n = 1000
凡そ80μsecのディレイが発生するようです。

------------------------------------------------------------------
追加測定

◆nanosleep()

nano.tv_nsec = n;
nano.tv_sec = 0;
while(1){
    *(gpio_regs + 0x7) = (0x1 << portnum);
    nanosleep(&nano,NULL);
    *(gpio_regs + 0x0A) = (0x1 << portnum);
    nanosleep(&nano,NULL);
}


n=1~1000

n=10000

n=100000
nano.tv_nsec = 0;
nano.tv_sec = 1;

usleepと同様に約80usecのディレイが発生しています。
タイムスライスが約80usecって事かな? 勉強してみよう。

コメント

このブログの人気の投稿

ARM用クロスコンパイラのビルド(Windows8+Cygwin)

Cygwin+Emacs Problem