19 |
FM-7 ROM吸出し器の改版 (5) |
Arduinoのアクセス法の改善
ArduinoのリファレンスにはdigitalRead()、digitalWrite()という1ピンの入出力しかなく、パラレル入出力が無かったため、過去記事のようなアクセス法を取っていました。検索したところ、Arduino 日本語リファレンスのポート操作(その魚拓)でパラレル入出力が見つかったため、アクセス法を切り替えることにします。そのためポートアサインを以下のように変更します。
上記サイトには、
DDRとPORTレジスタは読み書き両方が可能です。PINレジスタは読み取り専用です。
以下はレジスタを表す変数の名前のリストです。
DDRD: ポートD方向レジスタ
PORTD: ポートDデータレジスタ
PIND: ポートD入力レジスタ(読み取り専用)
とのことですが、実際には
DDRD: ポートD方向レジスタ
PORTD: ポートD出力レジスタ
PIND: ポートD入力レジスタ
となっているようです。DDRにより入出力をビット毎に切り替えられ、0が入力、1が出力となっています。 これがあまり表に出てきていない理由は移植性からのようです。digitalRead()のほうが移植性が高いとのことですが、元々8bitのパラレルデータを1bitずつ8回シフトして8bitデータとして使うのは、あまりにも馬鹿げています。