[Armadillo:00292] Re: pbdr0へ値が書き込めない

Matsuzaka Masaya email@hidden
2005年 5月 19日 (木) 13:09:36 JST


松坂です。

> そのまま使いました。サンプルで、pbdr0に1をwriteする所を、
> 0に変えてwriteした後、readしても1と表示されます。

パラレルポートのリードを行う場合、ポートの入出力状況によって値の意味が変わります。

1、ポートが出力の場合にリードすると、ユーザーがポートに書き込んだ値が返ってきます。
2、ポートが入力の場合にリードすると、そのパラレルポートのピンの状況が値として返ってきます。

高橋さんの希望としては項目1のようですが、サンプルコードでは項目2の状況ですので
レジスタに書き込んだ値ではなく、ポートの入力状況が反映されています。

レジスタの状況を見る場合は、読み込む手前の以下の行をコメントアウトすると読めるはずです。
> val = 0;
> write(fd_ddr, &val, sizeof(unsigned char));


----- Original Message ----- 
From: "takahashi takamichi" <email@hidden>
To: <email@hidden>
Sent: Wednesday, May 18, 2005 3:34 PM
Subject: [Armadillo:00285] pbdr0へ値が書き込めない


> お世話になっております。高橋と申します。
>
> Armadilloボードで、pbdr0に値が書き込めません。
> ソフトウェアマニュアル 18ページのパラレルポート操作のサンプルを
> そのまま使いました。サンプルで、pbdr0に1をwriteする所を、
> 0に変えてwriteした後、readしても1と表示されます。
>
> ポートBを使用する際は、何か設定が必要なのでしょうか?
> よろしくお願い致します。
>
> ボードの環境は、ホームページからダウンロードした
> ユーザランドとイメージを書き込んで使用しました。
> initrd-1.1.2.img.gz
> Image-1.1.2
>
> 以下コード*******************************************
> #include <fcntl.h>
> #include <stdio.h>
>
> int main( void )
> {
> int fd_ddr, fd_dr;
> unsigned char val;
>
> fd_ddr = open("/dev/pbddr0", O_WRONLY|O_SYNC);
> if ( fd_ddr < 0 ) {
> fprintf(stderr, "Open ddr error.\n");
> return -1;
> }
> fd_dr = open("/dev/pbdr0", O_RDWR|O_SYNC);
> if ( fd_dr < 0 ) {
> fprintf(stderr, "Open dr error.\n");
> return -1;
> }
>
> val = 1;
> write(fd_ddr, &val, sizeof(unsigned char));
>
> val = 0;  /*** ここを1から0に変えた ***/
> write(fd_dr, &val, sizeof(unsigned char));
>
> val = 0;
> write(fd_ddr, &val, sizeof(unsigned char));
> read(fd_dr, &val, sizeof(unsigned char));
> printf("dr:%d\n", val);
>
> close( fd_ddr );
> close( fd_dr );
>
> return 0;
> }
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/mailman/listinfo/armadillo 




armadillo メーリングリストの案内