カテゴリー:PIC
ついに追い求めていたものが現れました。JDMライターというと、本家JDMさんのサイトを元に、ROCさんのサイトやFENG3さんのサイトでいろいろな製作例がありますが、「電源不要」というのが、利点であり欠点でもありました。最近ではシリアルポートがついていないパソコンも多いため、USB-RS232C 変換を使ったシリアルポートでは、JDM PICライターが動作しないということが問題となっていました。
そして、このJDM互換で電源供給型の新しい PIC ライターを見つけました。
とりあえずFOR ループ(のようなもの)です。EQU COUNT H'20' などとあらかじめ空いているレジスタを定義して使ってください。(命令郡)の部分を10回繰り返します。C言語で言えば DO-WHILE 文に近い感じですかね。
MOVLW D'10' ; WorkingRegisterに10を格納 MOVWF COUNT ; COUNTにWorkingRegisterの値(10)を格納 LOOP (命令郡) ; 10回実行 DECFSZ COUNT,F ; COUNT=COUNT-1 結果0なら次命令スキップ GOTO LOOP ; 9回ジャンプCOUNTが10,9,8,7,6,5,4,3,2,1と合計10回カウントしながらループします。0回目が含まれないので注意してください。こういうプログラムは0回目を含むのかどうか、よく考えて使用する必要があります。
他にもいろいろなループの方法がありますが、この方法が一番簡単なループかと思います。
1チップマイコンである PIC のサイクルタイムについてです。
PICはクロック周波数の4クロックで1サイクルです。一部の命令を除き、1サイクルで1命令を実行することが出来ます。従って発振子によって、サイクルタイムは以下のような関係になります。
20MHz | 0.2usec/cycle(200nsec/cycle) |
10MHz | 0.4usec/cycle(400nsec/cycle) |
4MHz | 1usec/cycle(1000nsec/cycle) |
12.8MHz | 0.3125usec/cycle(312.5nsec/cycle) |
PICで他のチップを制御するときなどは、データシートを確認して最小パルス幅などに注意する必要があります。
また、PICで擬似的に発振回路を作ろうとした場合、たとえば以下のようにするとクロック周波数 20MHz で最高 1.25MHz(デューティー比75%) の方形波を出力することが出来ます。
LOOP BCF PORTA,0 BSF PORTA,0 GOTO LOOP
ちなみに goto は 2サイクル。
デューティー比を50%にするためには、以下のように nop を入れてやります。このときの最高周波数は0.833 MHz(833KHz) (クロック周波数20MHz) になります。
LOOP BCF PORTA,0 NOP NOP BSF PORTA,0 GOTO LOOP
でも、これだけではマイコンとして何も出来ないので、結局、数100KHz以上の発振回路を同時に動かそうとしたら、別回路にするしかありませんね。
Calendar
Categories
Monthly Archives
Search