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と同様に約80use...
 
コメント
コメントを投稿