2013年07月17日
スマホでヨットレースの開発も一段落、というか、とりあえず最低限だけど、動き出したので、久々にpicをいじりだした。ブログを読み返してみると、去年の11月頃やってたけど、スキーシーズンが始まって以来まったく放置状態だったのね。
もう何もかも忘れていて、bootloaderとか、usb接続とか、動いていたはずのコードもなぜか動かないし、どうしてこうもはまるんだろう。。。と、いつものお約束的な電子工作になっている。
とりあえずのメモとして
pic32mx250 220 とも pickit3 stand aloneモードでは書き込めない。サポートデバイスに無い。追加できそうだが、とりあえず、mplabxからなら書き込める。
HID bootloaderのwindows 側アプリは、アプリケーションライブラリについてくるアプリではなくアプリケーションAN1388のPIC32UBL.exeを使う。
こういう情報って、意外とネットで引っかからない。から、はまるとなかなか抜け出せない。昔動いていた、、、から、調べられないとますます抜け出せなくなる。
さらに、ブレッドボードの場所によって、picに書き込めたり、書き込めなかったりする。最初picが悪いのかとも思ったけど、何箇所か書き込む場所作って実験してみると、どうもブレッドボードが調子悪い感じ。しかし、、、感じとしか言いようが無い。100%ダメでもないので、怪しさ満点!
中華通販で買ったジャンパーワイヤに、通電してないものが混じってる。なんで信号ないのか、最初わからなかった。ロジアナの威力を思い知ったけど、ブレッドボードといい、ジャンパーワイヤといい、安物使うと苦労するって、ホントそうだと思う。(けどやめられません(笑)
そうこうしているうち、ロジアナを整備してMicrochipのMDDFSって、SDカードの読み書きのライブラリを動かそうとあれこれ。ネットで見てると、使っている人もいるので、基本的には動くかもしれないけど、どうせまた、バグバグで動かないんだろう、と調べてみたのだ。
自作のロジアナでグラフ(?)出るようにしてみた。レスポンスの1バイト目にゴミが入っていて、2バイト目のレスポンスを拾わないことが判明。2バイト目に0x01が返ってきても、プロトコル的にはありなんだけど、なぜがmicrochipのライブラリでは、1バイト目に返事が来ないとダメ、となっていた。
具体的には、
SD-SPI.c内の
MMC_RESPONSE SendMMCCmd(BYTE cmd, DWORD address)
の中で、コマンドを発行した後、レスポンスを取得するところで
timeout = NCR_TIMEOUT;
do
{
response.r1._byte = MDD_SDSPI_ReadMedia();
timeout--;
}while((response.r1._byte == MMC_FLOATING_BUS) && (timeout != 0));
と、1バイト目しか取得しないので、この後に
//add
while ( (cmd == GO_IDLE_STATE) && (response.r1._byte != 0x01) && (timeout != 0)) {
response.r1._byte = MDD_SDSPI_ReadMedia();
timeout--;
}
// add end
GO_IDLE_STATEのときだけ、2バイト目以降も見てやる、というworkaroundを入れてやると、とりあえず動いてます。
たぶん、microchipが使っているSDカードは、1バイト目にゴミが入らないちゃんとしたSDカードなんだろうけど、オレは2種類試して、両方ともごみ入ってた。こういうのって、なんでオレはきちんと、はまるんだろう???
Posted at 2013/07/17 19:54:50 | |
トラックバック(0) |
電子工作 | 日記
2013年07月13日
最近気がついたけど、ブログにデータ書いておくと、後で読み返せるんだねー。
自分メモの意味が少しわかったところで、オレも書いておこう
$IIRMC,023416,A,3439.276,N,13520.668,E,02.8,341,070713,07,E,A*04
$IIVHW,,,292,M,02.4,N,,*6B
$IIVLW,00848,N,003.3,N*57
$IIVWR,029,L,18.4,N,,,,*79
$IIDPT,013.2,-1.0,*40
$IIGLL,3439.276,N,13520.668,E,023416,A,A*51
$IIHDG,292,,,07,E*1C
$IIMTW,+27.5,C*38
$IIMWV,324,R,17.8,N,A*18
$IIMWV,327,T,16.1,N,A*15
RMC 時分秒(GMT) 緯度 経度 SOG COG 日月年
VHW heading speed
VLW total log, reset log ( Distance Traveled through the Water)
VWR Relative wind direction and speed
HDG heading, Variation
MTW Water temperature, Celcius
MWV Wind Speed and Angle R relative T true
得られるデータは上のとおり、これが1秒間隔。B&Gだと、バスのデータそのまま得られるから、1秒4回とかの更新だけど、まあいいか。
wind angleが変わっていて方位に変換されてる。
あと、VariationがEになってるけど、、、、7度はいいとして西だろ。
設定を見直さないと。
Posted at 2013/07/13 11:19:48 | |
トラックバック(0) |
電子工作 | 日記
2013年07月06日

乗せてもらっている船が新しくなって、計器もB&Gからtacktickに変わったので、いろいろとまたお勉強をしているんだけど、やはり新しい船に変わったとき、乗り方も変わるわけで、そういうときこそ計器がちゃんと動いて欲しいのだが、これがまた見事にいい加減にしか動いていない。
しょうがないので、パソコンを繋げてログを取りたいと思ったけど、パソコン繋げるwireless interfaceという部品が無い。。。
無いなら買うかー、ということで調べてもらうと、なんと国内に在庫があるとのこと。えー、海外メーカーの計器のパーツの在庫あるの??じゃ買う買う、と取り寄せてもらって、今日早速船に付けに行ってきたのだ。
上架中は、バウハッチから船に入るんだけど、、、なんか見慣れないものが、、、冒頭の写真。なになに、、、GPS interfaceと書いてあるような。。。えーと、tacktickの場合、gpsはwireless interfaceに繋げるはずなんだけど、とふた開けてみると、やっぱり、wireless interfaceだった。
えーっ、注文して、取り寄せてもらって、キャッシュカードでお金下ろしてきて、、、で、船についてるだと!!
すみません、調査不足でした。。。返品をお願いしました。ご迷惑おかけして申し訳ない。でも、、あるものいらないし。。。
でもね、、、計器でwireless interfaceの信号無かったんですけど。。。だから、wireless interface無いと思ってたんですけど。。。おかしいな。。と調べました。
あのー、電源線たどると、先がどこにも繋がってないんですけど。。。そりゃ信号無いはずです。とほほ。。。
gpsのアンテナも船の後ろに無かったけどなー、とたどっていくとバウへ。(黒い線)
バウの航海灯の間に、GPSと書いてあります。うーん、確かにこの船の場合、結構後ろに人が乗るので、他の船のように後ろつけると、人間が邪魔をして信号を受信しにくい、ということはあります。バウにつければ、人間に邪魔されずに受信は出来ます。しかし、、、繰り返しますが、電源線を繋いでいないので、信号は受信できません!
動かない原因がわかったので、早速電源線をつなげようとすると、スイッチパネルは、開きません。裏からボルトナットで止めているようで、一人ではあけられません。
バッテリが無いので、倉庫から持ってきたら、ターミナルがついていないので、ケーブルにつなげられません。
繋がっていない電源線を繋げようと剥いてみると、真っ黒さびさびです。
インターフェースに持ってきたrs232cの線を繋げようとしたら、小さいマイナスでターミナル回さないといけないのですが、船の工具箱にそんな小さいマイナスありません。
風とおしの超悪い船内で、あーでもない、こーでもないと汗だくになりながら、なんとかしました。
パソコンにつなげてみると、ちゃんとデータ拾います。
良かった。苦労が報われる瞬間でした。
さて、gpsが繋がったところで、計器を改めてみると、やはりちゃんと緯度経度が出ます(^^)。でもマニュアルよく読んでないので、アレなんですが、、、ポジションしか出ません。cog,sog無いです。cog,sog無いから、tideとかcurrentとかも、無いです。緯度経度だけ見えても、レースに使いようが無いんですけど。。。
パソコン繋がないなら、電源線要らなかったのね。とほほ。
Posted at 2013/07/06 18:46:59 | |
トラックバック(0) |
電子工作 | 日記