超ローコストPICWRITERの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
「PICBASICコンパイラ」からスピンオフ!!
過去記事を参照することなどを考えて該当する過去記事は「PICBASICコンパイラ」のまま連載回もそのままとします。
以後は前回記事からの流れで[第236回]からとします。
「PICBASICコンパイラ」はなるべく早く連載を再開したいと考えています。
PICはローコスト、高機能で種類も豊富なお手軽マイコンですがプログラムを書き込むためのWRITERが必要です。
それをできるだけ安価に作ってしまおうというプロジェクトです。
最終的には製品化を考えています(組立キット、完成品)。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第294回]
●PIC16F1503(7)動作テスト
過去記事を確認していましたらPIC16F1503の動作テストについて書いていないことに気が付きました。
PIC16F1503については[第237回]〜[第242回]で書いています。
PICWRITERプログラムの作成に注力していたためつい最後の動作テストについて書くのをうっかりして忘れてしまったようです(うーん。あかん。ぼけとるなあ)。
当時のノートを確認してみたところ実際に動作テストはしたようなのですが(記憶にありません)。
で。
念のためにあらためて動作テストをしてみました。
作業に使ったPICを保存してある箱を捜してみましたらテストプログラムを書き込み済みらしいPIC16F1503がみつかりました。
多分テストプログラムの書き込みテストに使ったものだろうと思って動作確認をしてみたところ、それらしい動作をしました。
念のためにまともに動作していることを確かめるためにそこに書き込まれているはずのプログラムを確認してみましたら、これがまたおかしいということがわかりました。
何をやっていたのでしょう。
もうぼけぼけです。
テストプログラムのソースリストは[第238回]にあります。
プログラムそのものは間違っていません。
ただ誤解を招く記述になっていました(実際に誤解してしばし混乱してしまいました)。
それと[第238回]の説明も間違っています。
そのままにしておくのもいかがなものかと思いましたので下に手直ししたソースプログラムリストを提示します。
;;;PIC 16F1503 testprogram ;09/12/31 ;clock=16MHz #include <p16f1503.inc> ; __CONFIG _CONFIG1, _WDTE_OFF & _FOSC_INTOSC ; cntr0=20 cntr1=21 ; org 00 goto start ; org 05 start banksel OSCCON;bank 1 movlw 68;=4MHz movwf OSCCON clrf TRISC banksel ANSELC;bank3 clrf ANSELC banksel PORTC;bank0 ; t16ms: call t4ms call t4ms call t4ms call t4ms movf cntr1,w movwf PORTC incf cntr1 goto t16ms ; t4ms call t1ms call t1ms call t1ms call t1ms return ; t1ms nop;1 decfsz cntr0;1 goto t1ms;2 return ; end ; |
どうやら以前に作った別のPICのためのテストプログラムをもとにして作成したらしいのですが(まるで他人事のような書き方)しっかり見ないで適当に書いたらしくてタイマーの値に関係する表記がいい加減です。
そこを修正しました。
このときのクロックは内蔵発振の4MHzなので1命令クロックは1μsです。
ですからt1msサブルーチンの1回のループの実行時間は4μsです。
それを256回繰り返しますからt1msサブルーチンの実行時間は約1msです。
このプログラムは16msごとにcntr1を+1します。
そして16msごとにcntr1の値をRC0〜RC7に出力します。
下は動作テスト中の写真です。
RC0の出力をオシロスコープで観測しました。
約16msごとに出力が反転しています。
超ローコストPICWRITERの製作[第294回]
2025.6.3 upload
前へ
次へ
ホームページトップへ戻る