CPU実験室

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

GPSデータのファイル化

イメージ 1

圧電スピーカを付けてビープ音が出せるようにしました。
写真はデバッグ時の様子で後方は秋月のPICプログラマをケースに入れたものです。
ZIFソケットからICSP用の信号を取り出してターゲットに注入されます。

 

GPSが吐き出すテキストデータを次々にSDカードのファイルへ書き込むようにしたところ何故か約512バイト書き込んだところで必ずループがロックするという謎の現象が出ていて解決していません。
512バイトは1セクタ長なのでバッファがメモリリークしているのではないかと思い
GPSの代わりにダミーの文字列を与えるてみると全く問題なく数百KBのファイルを生成するし、またGPSのテキストデータをファイルの代わりにLCDへ出力するというループでも全く問題ありません。
両者を組み合わせたときだけというのが不思議です


// 書込み総バイト数が512byteでロック
for(i=0;i<1024;i++){
  gets_gps(str); //GPSから1センテンスを取得
  FSfwrite(str, strlen(str), 1, fp); //ファイルに書込み。
}

// 問題なし
sprintf(str,"TEST\n");
for(i=0;i<1024;i++){
  FSfwrite(str, strlen(str), 1, fp); //ファイルに書込み
}

// 問題なし
for(i=0;i<1024;i++){
  gets_gps(str); //GPSから1センテンスを取得
  puts_lcd(str); //LCDに文字列出力
}