投稿

5月, 2013の投稿を表示しています

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って事かな? 勉強してみよう。

Raspberry Pi のGPIO信号波形

イメージ
RaspberryPiのGPIOにキャラクタLCDモジュールを接続します。 そこで、Cプログラムでインターフェイスタイミング信号を生成する為に、出力信号波形を観測してみました。 以前作成した LED点滅プログラム を以下の様にsleep関数をコメントアウトして観測 ※お安いPCオシロですので精度はあまり良くないですm(--)m while(1){     *(gpio_regs + 0x7) = (0x1 << portnum); //    sleep(1);     *(gpio_regs + 0x0A) = (0x1 << portnum); //    sleep(1); } CH1:電源電圧(テスターでの測定値は3.30Vでした) CH2:GPIO25(P22)

EclipseによるRasiberryPiのクロス環境

イメージ
DebianにインストールしたEclipse-cdt でRaspberryPiのクロス環境を試してみます。 ◆クロスコンパイラをgithubから落としてきます。 $git clone git://github.com/rspberrypi/tools.git ※ RaspberryPiのカーネルをビルド した時と同じですので、既にゲット済であれば不要です。 ◆HelloWorld ファイルメニューから新規プロジェクトを選択します。 Cプロジェクトを選択します。 プロジェクト名は適当に Hello World のプロジェクトを選択 ツールチェインはCrossGCCを選択 githubから落としてきたクロスコンパイラを指定します。 接頭部 arm-bcm2708-linux-gnueabi- パス ???/tools/arm-bcm2708/arm-bcm2708-linux-gnueabi/bin ビルド成功 RaspberryPiに実行ファイルを転送 正常に実行されました。