Article #260

既に発行済みのブログであっても適宜修正・追加することがあります。
We may make changes and additions to blogs already published.

FM-7 ROM吸出し器の改版 (5)

posted by sakurai on May 19, 2020 #260

Arduinoのアクセス法の改善

ArduinoのリファレンスにはdigitalRead()、digitalWrite()という1ピンの入出力しかなく、パラレル入出力が無かったため、過去記事のようなアクセス法を取っていました。検索したところ、Arduino 日本語リファレンスのポート操作(その魚拓)でパラレル入出力が見つかったため、アクセス法を切り替えることにします。そのためポートアサインを以下のように変更します。

図%%.1
図260.1 Arduino Mega 2560 Proの端子図

図%%.2
図260.2 Arduino Mega 2560 Proの端子図(図260.1の右列グリーン枠部分)
図260.2のピンク色のアサイン表が示すように、アドレスはPORTF, PORTK、データはPORTF、制御信号はパラレルの必要は無いですが、PORTCにアサインし直しました。

上記サイトには、

DDRとPORTレジスタは読み書き両方が可能です。PINレジスタは読み取り専用です。

以下はレジスタを表す変数の名前のリストです。

DDRD: ポートD方向レジスタ
PORTD: ポートDデータレジスタ
PIND: ポートD入力レジスタ(読み取り専用)

とのことですが、実際には

DDRD: ポートD方向レジスタ
PORTD: ポートD出力レジスタ
PIND: ポートD入力レジスタ

となっているようです。DDRにより入出力をビット毎に切り替えられ、0が入力、1が出力となっています。 これがあまり表に出てきていない理由は移植性からのようです。digitalRead()のほうが移植性が高いとのことですが、元々8bitのパラレルデータを1bitずつ8回シフトして8bitデータとして使うのは、あまりにも馬鹿げています。


左矢前のブログ 次のブログ右矢

Leave a Comment

Your email address will not be published.

You may use Markdown syntax. If you include an ad such as http://, it will be invalidated by our AI system.

Please enter the numbers as they are shown in the image above.