GPS(3)

シリアル通信ができるようになったので、GBAGPSモジュールをつないで通信してみました。すると・・・おおっ、GPSからのデータが受信されている!!ちゃんと時刻や緯度経度も取得できています。取得した座標をGoogle Earthに入れてみると、あってそうです。座標の表し方にいくつかパターンがあって、最初は戸惑いました。

  • ○○○度○○分○○秒
  • ○○○度○○.○○分
  • ○○○.○○○○度

分、秒の場合は60進法なんですね。分と小数点が組み合わされてたりして、わかりにくいことこの上ないです(>_<)。まあ、歴史的経緯などがあるんだと思いますが。

ところで、シリアル通信で取得したデータですが、ところどころ文字化けしてます。それも、ごくまれにというわけではなく、結構な頻度で。うーん、タイマー割り込み使って信号を監視するだけじゃうまくいかないんですね。。。チェックサムがあるので、失敗したデータを捨てるという手もあるんですが、ログに残したときに時刻が飛び飛びになってるのもどうかと思うので、もう少しまともにシリアル通信できる方法を考えてみます。信号が1→0になったときにも割り込みをかけられるようなので、それを使うのがよいのかな?GPSを実装したプログラムの中には、4800bpsなどの低速通信をサポートしてるものもあるので、それを参考にしたいとこですが、残念ながらソースが公開されてません(>_<)。
http://www.msh-tools.com/GBA/gbagps.html
アセンブルするか!?でもそれは大変そう・・・