CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

フィールド試験2

ファイル書込み時のロックはどうもシリアル側の制御の問題でした。

 

GPSメッセージを受信するだけのループにウェイトを少しずつ入れていくと
ある時点からループがロックするようになります。
おそらく次のキャラクタが来る前にデータの取出しが行われないので
受信バッファがオーバーフローするのでしょうが、ここは単に読み捨てられるだけだと
思っていました。
もしかしたらUSARTのエラーをクリアするか何かをしないと次のキャラクタが受け付けられないのかもしれません。
SDへの512バイト目書き込みでのロックはおそらく1セクタを越えるデータの書き込み時はメモリ確保などでファイルシステムで時間がかかり、その間にUSARTがオーバーフローし引っかかった可能性があります
GPSユニットからは1秒毎に一連のセンテンスを送ってくるので時間に余裕のある一番最後の$GPZDAセンテンスを受けた後にファイルへの書込みをしたところうまく動きました。

 

ファイルのフォーマットは最小構成の航法情報である$GPRMCセンテンスのみを抽出してそのまま羅列してテキストファイル化しています。
$GPRMC,032423.316,A,35**.8237,N,139**.6324,E,9999.99,999.99,080608,,*3F
$GPRMC,032424.316,A,35**.8284,N,139**.6315,E,0000.14,176.39,080608,,*34
$GPRMC,032425.316,A,35**.8284,N,139**.6315,E,0000.00,176.39,080608,,*30
:
:さっそくこれを持って近所を散歩してきました。
帰ってきてからSDカードの中のファイルをカシミール3DにNMEAインポートすると
きれいに通り道がトレースされました。