« 全日本大会決勝に参加 | トップページ | 始動? »

2005年11月28日 (月)

つれづれ

大会も終わってしまい、祭りの後の寂しさなのだが、いろいろ考えてみる。

------

大会会場で次はDCマウスを、という意欲的な方に質問を受けたので、本質的ではないけれど引っかかりやすいところを書いてみる。

H8TinyのタイマーWでPWM信号を生成するとき、TOB=1としたときに、PWM周期はGRAで決まり、デューティはGRBで決まる。出力は正論理、となる。

GRBのコンペアマッチで出力が変化するのであって、常にTCNTとGRBの大小比較をしているわけでないので、GRBを変化させるタイミングを誤ると、予期しない波形が出てしまう。

たとえば、仮にGRB=1000の状態で、GRAのコンペアマッチでTCNTがリセットされ、カウントアップが始まったとする。
このとき、PWMの出力はGRAマッチなので出力は1。
で、たまたまTCNTが600あたりまで進んだところで、GRBを500とかに更新してしまったとする。
デューティを半分にしようとしただけなのに、GRBのコンペアマッチのチャンスを失ってしまい、デューティ100%のパルスが1発出てしまうことになる。
コアレスモーターなら、確実に反応してしまうところだ。

ではどうするかだけれど、要するに変なタイミングでGRBを更新しなければよいのだけれど...
以下、各自でよろしく。

他のSHなどに搭載されているようなPWM用と謳っているタイマーは、どんなタイミングでレジスタを更新しても、意図しない波形が出ないように工夫されているようだ。
なるほど...

------

kiat氏のバグ。
想像でしかないのだけれど、なんとなく思うところは、

・すべてのターンの進入速度は、ある一定値に決まっているわけではなくて、そのときのでたなりの速度でターンしている。
・45度ターンの半径は、かなり大きい。

と考えると、あのバグ(仕様?)の辻褄が合いそうな気がする。
図らずも、世界最高のターンの正体を、スローモーションで見せていただけるやもしれん。

|

« 全日本大会決勝に参加 | トップページ | 始動? »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: つれづれ:

« 全日本大会決勝に参加 | トップページ | 始動? »