「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



昨日の続き。
http://brown.ap.teacup.com/nekosan0/1199.html

ソースプログラム自体は昨日のうちに一応書くだけ
書き終えておいたので、今日は実際にチップに流し込んで
テストしてみることに。

そういえば、win-avrでインラインアセンブラ使うのは
今回が初めてだったな。まぁ、引数とか戻り値とか関係ない
処理だから、普通のアセンブラと大きな差無し。AVRの
アセンブラは楽チンでいいな。


さて実機で流してみよう…と思った矢先、ふと気づいちゃう。
パルスを出すタイミングで出力ピンをオンにっていう
プログラムを書いたんだけど、よく考えたら38Khzで
変調かけないとIRセンサーが拾ってくれないんだよなぁ…と。

で、急遽タイマーモジュールでCTCを使ってOC0Aから38Khz
で変調掛けた状態で出力させるように修正。

ペンタックスのコンパクトデジカメを出してきて、tiny2313
のボードにhexを流し込んで、さぁ実行!


シャッターが切れない…。うーーーん。一応LEDは光っている
みたいなんだけど、なんだろう?

オシロを当ててタイミングを眺めてみる…合ってるっぽい。
微妙なタイミングのズレで認識してくれないってことか???
そんなにシビアなタイミングじゃぁ無いだろうと思うんだけど。

  ぼやいたっていいじゃない
   うごかないんだもの   みつを

あ、もしや…と思って調べなおしてみると、例のarduinoで
拾った信号幅は10us単位だった…1us単位だと思ったよ…。
一桁狂ってれば、そりゃ反応してくれないよな。

急いでプログラムを修正。再実行。

シャッター切れた。よし、よし。


さらに、K-7を持ち出してきてレリーズのモードを変えながら
同様に試してみる。
1回送信してシャッター→もう1回送信してシャッター終了って
いうモードも、長押しの間だけシャッター切れるというモード
も、どちらもうまく行った。シメシメ。


今回は外付けのトランジスタとか使わずtiny2313の出力ピンの
バッファを使ったので、あまり電流が流せない…。
で、いざやってみたら、せいぜい数十センチしか届かないみたい。
まぁ、いざとなればオープンコレクタで外部にトランジスタ
繋げば一桁大きい電流流せるから、そんな手でもいいでしょう。


ソフトと回路は決まったので、あとは箱とかをどうするか
だな。単4~単5マンガン電池2本か、3Vのボタン電池1個だけで
動かしたいな。やっぱフリスクかな?オイラ普段ミンティア党
なんだよな…



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする




昨日の実験でリモコンFのパルスタイミングが判った
ので、早速プログラムを書いてみる。

ターゲットのチップとしては、部品箱に大量に余っている
pic16f84か、はたまた使い慣れたat-tiny2313か、どっち
にするかでちょっと悩みつつ、使い慣れたほうをチョイス。

マイクロ秒単位の制御が必要なので、そんなときは
アセンブリ言語の方が融通が利くんだけど、ひねくれて
win-avrにしてみることに。

Cなのでロジック部分はサクッと書けたんだけど、第一の
ずっこけはコードサイズ。
コンパイルしたらコードサイズがいきなり4kBを超えちゃった
ので、何が起きたのかと思ったら、どうやら_delay_ms関数
や_delay_us関数の引数に変数を入れると型変換処理で
なんだかライブラリコールが生じるみたい。

気を取り直して、引数は定数にしてループで一定時間
繰り返すように変更。


もう一つの問題。これはあらかじめ予想付いていたこと。
マイクロ秒単位のwait処理はfor文その他のオーバーヘッド
で遅延が生じるだろうということ。

で、当初の作戦→生じた遅延の分を加味してwaitの時間
から引き算する作戦。ソースを書き終えてからPC上の
シミュレータでクロック数を数えてみる。
…駄目だった…。

本来のwait時間とオーバーヘッド時間がほぼ同じ長さ
になっちゃう。引き算で済む問題じゃぁ無いな。
ミリ秒単位の待ち処理はばっちりなんだけどな。

ということで、マイクロ秒の待ち処理の方はやっぱり
インラインアセンブルが入用みたい。


http://www.scienceprog.com/how-to-use-inline-asm-using-winavr/
http://www.stanford.edu/class/ee281/projects/aut2002/yingzong-mouse/media/GCCAVRInlAsmCB.pdf

ちょっと面倒…



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする