« AVRのためのPIC再入門 | トップページ | AVRのためのPIC再入門 »

2006年7月15日 (土)

AVRのためのPIC再入門

PICでAVRライタを作る1

一概にPICといっても結構なバリエーションがある。
8ピンの小さいヤツから、パワフルな40ピンのデカイやつとか・・
で、どのPICを使おうか悩んだ結果、12F683を使うことにした。

必要なピン数は、PCとの通信用に2本、AVRとの通信に4本の
6本が最低限必要だと思う。12F683はI/Oピン6本なので、
かろうじて条件をクリアする。何より8ピンのちっぽけなPICで
AVRライタが動作している姿を想像すると楽しいじゃないか。

早速、部品箱から12F683を取り出し眺める。あまりの小ささに
若干不安になる。しかし、こんな小さいパッケージに8ビットとは
いえコンピュータが詰まっていて、アマチュアがプログラミング
出来る、まさにデスクトップデベロップメント。

すごい時代になったもんだ。

さて、実際の実装を考える。
まず、PCとの通信部を作る。AVRISPの場合115.2KHzの
ボーレートでPCと通信をしている様だ。12F683には
USARTユニットが無いので、ソフトでこのボーレートを
作り出すしかない。また、外部発振でクロックを供給する
ためのI/Oピンの余裕は無いので、内臓8MHzのクロック
で動作させる。

これらの事を踏まえると、シリアル通信で送受信する各ビットは、
PICの17個分の命令サイクル間隔で操作しないといけない。
これでは、ディレイルーチンを呼んだり、タイマ割込を使ったり
する際のオーバーヘッドも無視できない。
逆に言うと各ビットの操作間隔をきっちり17命令サイクルに
あわせれば、うまく115.2KHzで通信出来るかも。

実際に書いた送信ルーチンが、これ。

                                                                                       

putByteUsart
        bcf     GPIO, TXD_PORT      ;スタートビット出力 
        movlw   3
        movwf   Counter
        decfsz  Counter, F
        goto    $ - 1 

        movlw   8                          ;8ビットを順次出力
        movwf   Counter
pb_lp   rrf     UsartArg, F
        btfsc   STATUS, C
        goto    pb_ct0
        nop
        bcf     GPIO, TXD_PORT
        goto    pb_ct1
pb_ct0  bsf     GPIO, TXD_PORT
        goto    $ + 1
pb_ct1  nop
        goto    $ + 1
        goto    $ + 1
        goto    $ + 1
        decfsz  Counter, F
        goto    pb_lp

        goto    $ + 1
        goto    $ + 1
        nop
        bsf     GPIO, TXD_PORT      ;ストップビット出力
        movlw   5
        movwf   Counter
        decfsz  Counter, F
        goto    $ - 1

       return

                                                                                             

1個1個命令数を数えて書いた。ポート操作間隔をきっちり
17命令サイクルにする為、"nop"やら"goto $+1"を挟んである。
パズルを解く様な感覚で少し楽しくもあったが、めんどくさくて
美しくないコードだ。

同じように受信側も書いて実験。一応動作はOK。

|

« AVRのためのPIC再入門 | トップページ | AVRのためのPIC再入門 »

コメント

コメントを書く



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




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/180469/10957852

この記事へのトラックバック一覧です: AVRのためのPIC再入門 :

« AVRのためのPIC再入門 | トップページ | AVRのためのPIC再入門 »