Raspberry Pi のsleep時間測定
RaspberryPiのGPIO出力波形にてsleep処理時間を測定してみました。
◆sleep()
while(1){
*(gpio_regs + 0x7) = (0x1 << portnum);
sleep(n);
*(gpio_regs + 0x0A) = (0x1 << portnum);
sleep(n);
}
1秒から程遠い結果でした。原因は??
◆usleep()
while(1){
*(gpio_regs + 0x7) = (0x1 << portnum);
usleep(n);
*(gpio_regs + 0x0A) = (0x1 << portnum);
usleep(n);
}
凡そ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);
}
usleepと同様に約80usecのディレイが発生しています。
タイムスライスが約80usecって事かな? 勉強してみよう。
◆sleep()
while(1){
*(gpio_regs + 0x7) = (0x1 << portnum);
sleep(n);
*(gpio_regs + 0x0A) = (0x1 << portnum);
sleep(n);
}
n = 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 |
------------------------------------------------------------------
追加測定
◆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;
|
タイムスライスが約80usecって事かな? 勉強してみよう。
コメント
コメントを投稿