[Armadillo:01428] Re: PWM出力の方法について
or02310
email@hidden
2006年 12月 7日 (木) 15:52:37 JST
中間試験などで返信が遅れました。R.Onoderaです。
現段階ではもう動画像追跡に手をつけている時間的余裕がなくなってまいり
ましたので、サーボモータをPWMで制御してカメラの向きを変え、カメラからの
画像をストリーミングないしVGA出力という形で表示するシステムで妥協せざる
を得なくなってしまいました。
Yasushi SHOJI wrote:
> う〜む…。ぜひ SUZAKUをご検討ください。やりたい放題ですよ :-)
> htttp://suzaku.atmark-techno.com/
うーん、最初に選ぶ機種を間違えたような気がします…
いまさら機種変更は無理なようですので、残念無念。
> EP9307には4つの timerが搭載されていますが、Linuxでは Timer 1と Timer 4
> を使用しています。ですので、Timer 2 (16bit)と Timer 3(32bit)は自由に使
> えます。
> どちらかの timerを使う linux device driverを作成し、希望のインターバル
> で割り込みが入るように作ります。device driverの割り込みハンドラで、希
> 望の計算をして、GPIOを叩くと簡易的に可能です。
はい、現在この方向で製作しております。Timer 2とTimer 3を使うのですが、
GPIO制御をこれらのタイマの割り込み時に行う方法で多少悪戦苦闘してます。
一応、タイマ関係のソース(linux/arch/arm/mach-ep93xx/time.c)を参考にして
いるのですが・・・。割り込み処理はタイマの値が0になった時に行い、その間隔
は0.6〜19.4[msec]です。つまり、出力の値が変わるべきときに割り込みが起き、
出力の値を変える手続きを実行するという方式をとっています。
> 外部から動的に計算に必要な値を渡す必要があれば、write()やioctl()を実装
> し、userlandから渡すと良いと思います。
グローバル変数を使用することも考えましたが、やはりまずいようですね。
> しかし、Linuxは RTOSではないので、反応時間に一切保証がありません。もし、
> 240を使いながら精度を求めるのであれば、ARMの FIQ機能を使うのも面白いか
> もしれません。
パルスの精度は0.01[msec]程度必要ですが、タイマが508[kHz]なので0.01[msec]
は約5.08[clk]となり、どうしても誤差が出てしまいます。この誤差、180[deg]分
とも
なると14.4[clk]にもなってしまい、タイマを用いる方法が本当に適切なのかが怪
しく
なってきた気がします。やはりFIQ機能を使うべきだったのでしょうか…。
いろいろとアドバイスありがとうございました。
--
R.Onodera email@hidden
armadillo メーリングリストの案内