UARTでの数々のテストで、RasPiとの通信で課題が山積ですべてを解決できない事が判明しましたのでGPIOでの通信に切り替えます。
<UARTでの課題>
1.2つのUARTからの読込みをするとどちらかが使用不能になる。(Read/Writeの場合はOK)
1.RasPiのリブート時、RasPiが立ち上がらない。(PowerOn時はOK、UART1個の場合は何とか立ち上がるが不安定)
1.シリアル同期が難しく、10回に2回以上は正確にデータ受信が出来ず途中からの受信となり無駄受信となる。
1.正規のポートオープンし、バッファークリアし、¥nまで受信してバッファーに取り込む等のクラスを作成して確認すると時間がかかりセンサ情報を
読み飛ばしが多発して使用できない。
1.シリアルポートNoが変化するのでプログラムを触る必要がありシステムとしてNG。
1.While文でシリアルオープンを繰り返すと、ArduinoMEGAにリセットがかかりGPIO入出力がバタつき使用不能となる。
以上のことから、高速性、安定性からハードには負担が掛かるがGPIO制御に切り替えます。
ArduinoMEGA側・使用ピン
データ要求番号指示Bit1 : Pin36(INPUT)
データ要求番号指示Bit2 : Pin37(INPUT)
2進データ出力Bit!(LSB): Pin38(OUTPUT)
2進データ出力Bit2 : Pin39(OUTPUT)
2進データ出力Bit3 : Pin40(OUTPUT)
2進データ出力Bit4(MSB): Pin41(OUTPUT)
RaspberryPi側・使用ピン
データ要求番号指示Bit1 : Pin18(OUTPUT:GPIO24)
データ要求番号指示Bit2 : Pin22(OUTPUT:GPIO25)
2進データ出力Bit!(LSB): Pin38(INPUT:GPIO20)
2進データ出力Bit2 : Pin40(INPUT:GPIO21)
2進データ出力Bit3 : Pin15(INPUT:GPIO22)
2進データ出力Bit4(MSB): Pin16(INPUT:GPIO23)