Arduino用のTFT液晶が安かったので、Raspberry Pi PICOにつないでみようと思ったのですが、入力が8bitパラレル入力でした。Arduinoのコード例を参考にMicroPythonで制御しようとしているのですが、パラレル入力に対してGPIOを1本ずつ8本変更すると時間差が生じて、不具合が出ること間違いなしだと思ったので、GPIO8本を同時に変更する方法を調べました。下のページを参考にして実現することができました。 | |
参考:Writing Multiple GPIO Pins AT ONCE
https://forums.raspberrypi.com/viewtopic.php?t=311660 下のコードは,MicroPython1.17をインストールしたRaspberry Pi PICOで作成・動作確認をしています。GPIO 0~7に抵抗付きLEDを接続して実行してください。
さらに調べたところ、「
RP2040 Datasheet」の42ページの「2.3.1.7.List of Registers」に公式の詳しい情報がちゃんとありました。32bitのうち1~30bitがGPIOの0~29に対応しているようです。
直接値を設定するOUT、bitが1のGPIOがHighになるOUT_SET、bitが1のGPIOがLowになるOUT_CLR、bitが1のGPIOが反転するOUT_XORの4種類のレジスタがありました。
他にも色々なレジスタがあり、MicroPythonで簡潔&高速に記述したいときに役立ちそうです。(コードが分かりにくくなるかもしれませんけれど。)