限界っ!
ボロボロになりながらも出勤。今、休む訳にはいかない。少しでも仕事を進める。昨日の鼻血はあの一回だけだったが、今日は一日中、鼻血と鼻水を相手に格闘。
こんだけ鼻血が出ると、24のテロで使われた病原体に感染した感じだ・・・。やばげっ・・・・。
傷つきながらも、家に帰りそのまま寝る。明日には治っていて欲しいところ。当然、ロボットはススマズ。
若干回復?
昨日よりは、若干回復した感じ。鼻血は完全に出なくなったし、鼻水も治りかけのようだ。ここで高熱出すわけにもいきませんからねぇ。基本的に自分の場合、風邪を引くと熱はほとんどでないのだ。
まぁ、それはそれとして、今日も仕事に響かぬように、帰ったら即寝た。土曜休みじゃなかったしね。
一日中
日曜日だと油断したのか、起きたのは11時30分であった。今日、出勤日じゃなくて良かった。まぁ、喉の痛みはなくなったので良い方向なのであるが、なんだかやたら眠い。
昼食ったら、そのまま寝てしまい、起きたのが17時であった。一応、モーションエディタの修正や機能の追加とかやりたかったんですけどねぇ・・・。
まぁ、そんな状態でも、ボタンなどのコントロールをドラッグ&ドロップするやり方はなんとかできるようになった。ただ、他のコントロールに近づくと、動かしていた対象がそこで止まる。
それがなんとかなれば、Heart To Heartのようにスライドバーを好きな場所における・・・はず。この辺は完全にあってもなくても、どーでもいい機能の一つ・・・だと今は思っているが、使ってみたら案外いいものかもしれない。
結局、その方法は解決しなかったので、そのまま就寝。
イベントドリブン方式
まだ本調子じゃないですね。今週はこんな感じで過ぎるかも。さて、モーションエディタの方ですが、通信の特に受信がダメダメだったのですが、その改善方法が見つかったのでそれを搭載したいと思っています。
今までVBでやってたのはイベントドリブン方式で、1文字(1Byte)受信するたびに専用の割り込み関数に飛んで、受信した文字を変数や配列に代入という作業をさせてました。
ところが、通信速度が速いと、この作業が本来の回数行われず、取りこぼしてしまうみたいです。そもそも、このイベントの発生は、このイベントでの処理が終わらない限り、受信フラグを無視する仕組みのようで、以下のような手順のようです。
1Byte受信
↓
受信フラグ
↓
MSComm1_OnComm()へ飛ぶ
↓
処理中
↓
処理終了後、割り込み許可
この処理中に1Byte受信しても無視されてしまいます。通信速度が速い状態、例えば115200bpsで通信していた場合、14Byte送ったのに、4Byte分の割り込みしか起こらなかったということもありうる訳です。
ちょっと、今回のようなケースではイベントドリブン形式はつらいようです。
ポーリング方式
さて、ポーリング方式ですがこちらは、バッファに溜まっている受信データの数を監視して指定の数を読み込んだ後(例えば14個受信した後)に処理を行います。送信されてくるデータ数が予め分かっている場合は、この方法で良いかと。
今回使用している自作モーションエディタも、こちらからコマンドなどを送り、ACKなどが返ってくるのを見ている。割り込みで処理するうまい方法を思いつかないまま、かなり怪しい状態で使っていたのでしょっちゅう異常状態に陥る。
ひとまず、こちらの方式に移行するので、詳細は追って報告ということで・・・。
コメントアウトしたのに・・・
この日記、書きかけだったのでコメントアウトしていたのだが、FireFoxなどのブラウザでは普通に見えてしまったらしい。不覚。人形つかいさんの書き込みで気づく。
ポーリング方式のところで書いたことでいいんですかね。ちょっと怪しいので、その部分は掲示板の方で聞いてみよう。
今日も進捗なし
会社を出たのが10時頃だったもので、本屋は当然しまっている・・・。うん、CQ出版のインターフェースはお預けなのだ。3号機にはSH2/7144を搭載しようと考えているが、情報によると。
3.3Vで駆動するらしい。
タイマが少ないとか?
SRAMが載ってそうだが載っていない。
KRS-4014とかは、信号線は5Vで通信を行わないといけないらしい。
5Vはバッファとかでなんとかなりそうだし、I/Oが3.3Vであることを忘れなければ問題ないだろう。よくよく考えたら、CPLDとかも3.3Vだったはず。ん?ってことは、繋げということなのかな?かな?
ふふふ・・・まぁ、いい。まずはこのSH2を使ってサーボを操ることにしよう。
インターフェース入手
今日はインターフェースを買って終了。最近忙しくて・・・。こんな時期がしばらく続くのであろう。まぁ、それはそれとして、このSHは土日にでもいじってみようと思う。
シリアル通信くらいなら、すぐできるもんね。KPIT製のコンパイラでなんとかしてみたい。
今日も進捗無し
今日はインターフェースを買って終了。最近忙しくて・・・。こんな時期がしばらく続くのであろう。まぁ、それはそれとして、このSHは土日にでもいじってみようと思う。
シリアル通信くらいなら、すぐできるもんね。KPIT製のコンパイラでなんとかしてみたい。雑誌で紹介している方法はできて当たり前だし。しかし、どうしても先へ進まないときは、やむ終えないか。
今日も進捗無し 最近はこればっか
ちょうど忙しい時期なので、帰って寝ての繰り返し。ゴールデンウィーク明けまでこんな状況が続きそうだ。まぁ、それはそれとして・・・。
VBのプログラミングで、スライドバーのドラッグアンドドロップができるようになった。で、このとき問題であった別のスライドバーの上に行くと、動かしている対象が切り替わってしまうという問題も解決。
答えはやはりGoogle先生が握っていた。
で、次に出てきた問題が、早く動かすとドラッグ中の対象が付いてこなくなってしまうという問題。これさえ解決できればOKなのであるが・・・。まぁ、この辺はゴールデンウィークに任せるとしよう。
いよいよ
ついにSH2をいじる日が来た。今までやろうと思いつつも放ったらかしであったSH2であるが、結局いつもROBO-ONEに間に合わないという理由で先送りだった。
今回は、物はできているしソフトの変更のみなので、余裕がある・・・たぶん。で、さっそく半田付けしてみた。これから実験する基板には何も載っていないが、まぁ起動実験なのでシリアル通信だけやってみようと思う。
今までの付録基板がついてきた雑誌は大方買ってきたが、やらんかったからなぁ・・・。
トランジスタ技術 H8/3697F Tiny
トランジスタ技術 R8C Tiny
デザインウェーブ CPLD
デザインウェーブ FPGA
こんなところか。結構あるでないの・・・。しかも、封印されたままだし・・・。今回は、半田付けまでした。既に矢は放たれてしまった。もう後戻りはできない。
で、ささっとシリアル通信のプログラムを書き、焼いた。動いた。Aだけが永遠と表示されるプログラムであるが、問題なく動作。ここまでは当然の結果である。
さてさて、KPITにもSH2のコンパイラは置いてある。バージョンはv601である。今回からCPUごとにファイルが自動で生成される。書き換えもほぼやらなくてよさそうである。
さて、コンパイルの結果であるが・・・。問題なくコンパイルを終えられた。ここまでは予定通りである。あとは、焼いて動作確認するだけ。
FDTを起動して、書き込もうとした・・・が、しかし!
out of memory
書き込んだ後にエラーが出るわけでもなく、書き込もうとした瞬間にエラーが出てそれ以上書き込むことができない。何度やってもダメであった。
原因は、motファイルのSフォーマットの違いにありそうだ。ルネサス製のコンパイラが出力するmotファイルはS1フォーマットなのに対し、KPIT製のコンパイラの出力するmotファイルはS3フォーマットになっている。
どうもこのあたりに原因がありそうだ。
Sフォーマット
Sフォーマットは、終わりに指定しているアドレスが16ビットまでならばS1フォーマット、24ビットまでならS2フォーマット、そして32ビットであればS3フォーマットとなる。
つまり、ルネサス製のコンパイラは16ビットまでのアドレスしか指定していないためS1フォーマットであり、KPIT製は32ビットでアドレスをしていることになる。
さて、32ビットのアドレスを指定しなければならない場所に何があるのか・・・。メモリマップを見たところ、それはRAM領域のようである。そのRAM領域に入っているものは、.data、.bss、gcc_excなどである。
これらが何であるか、イマイチ分からないのであるが.dataは、広域変数が集められる場所で、.bssが初期化されていない広域変数が集められる場所であるらしい。
おかしい・・・そんなもん使ってないぞ?どうやらGCC側で必要なものがこちらに入っているらしいのであるが・・・。この辺をどうにかしないと先に進めそうにない。
[BACK]
[TOP]
[NEXT]
Copyright (C) 2006 U-hirohito All rights reserved.