2015-10-13 Tue
PICのプログラムをPICに書き込むのに、ADWINのPICライターを使ってました。
16F88等の古いものを使ってるぶんにはいいのですが、
開発環境を新しいものに変更したついでに、16F1ファミリーの
新しいPICも使ってみようと思いました。
ところが、このADWINのPICライターは、新しいPICには対応
してないようで、書き込みができないので、新しいライター
を買うことにしました。
何にしようか迷いましたが、諸先輩がお使いになっている
定番のPICKIT3を購入することにしました。
ネットと値段を調べてみるとびっくり。だいたい同じ値段でしたが、
○mazonでは、10倍の値段のものが売られています。
多分、○月のと同じものだと思いますが、びっくりです。
それとも別物なのでしょうか。○mazonのものは、
パッケージに、「XYGstudy」の表記が見られますが、
○月のものにはありません。
同じものだとすると、この値段の違いは、
なんでしょうか。
2015-10-13 Tue
新しい環境で、あれこれやっています。TMR0(タイマー0)を使ったプログラムを作って検証していますが、いくつか
思うように動かないことがありました。
使ってるPICは、16F88というOLDなものですが、新しいの
を使うには、細かいところで、分からないところがあるので
未だに使ってます。
さて、内部クロックを使ってる時は、動いたように思いますが
20Mhzのセラロックを外部につけて動作させると、どうも、
プリスケラ-が使えないようで、値をかえても動作に変化
がありません。
また、TMR0の停止が思うようにできませんでした。
いろいろNETであさって見ると、諸兄のHPで、
<TIMER0>
TIMERのON/OFF制御が出来ない。
外部クロック入力同期(Sync2Cycles)がONに固定
されている。
の記事を見つけました。
16F88のTMR0については、「ON、OFFができない」という
ことで一つは解決しましたが、プリスケラ-が反映されないの
が分かりませんでした。
諸兄の回路図を見ると、水晶発振子を使って、RA7に入れ
ているようで、CONFIGの設定も、EXTCLKになっています。
私のセラロックは、RA6とRA7に入れて、CONFIGは、HSに
しています。こんな風にすれば、入力が1本ですみますね、
また、一つ勉強です。
CLOCKを外部入力にすると、TMR0は、固定されてしまう
のでしょうかね。
<追記>
どうやらプログラムの勘違いをしていたようです。
一部変更したら、動きました。
2015-10-08 Thu
今回のプログラムの作成に使った回路?です。おきまりの基板+USBシリアル変換アダプター(○月)の構成
で、開発してます。
USBシリアル変換アダプターは、FT232RLという型番で、
完成品が、950円でした。
左端の小さな基板は、セラロックをつけたものです。はじめ、
空中配線で、使ってましたが、アースの端子が根元からおれ
てしまったので、基板につけました。
この開発に使ってる基板は、
「キットで遊ぼう電子回路シリーズNo9」
に付属のものですが、便利に使ってル反面、やはり、中途
半端な感じもします。使いやすいように、自作した方
がいいのでしょうが、ずっと使ってます。
2015-10-07 Wed
今日一日、正確にい言うと、昨夜から、もがいていました。その結果、やっと、割込を使った受信ができるようになりま
した。
今回はまったのは、諸兄のプログラムを移植していましたが、
16F88ではないPICのプログラムだったので、またもや入力
ピンの設定が違ってました。ここを直したら、すんなりでした。
また、割込の書式も違うのかなと思って旧の環境での記述と
新しい環境での、記述両方してみましたが、両方とも、通り
ました。
旧 RCIF = 1
新 PIR1bits.RCIF = 0
使えない表記だとすぐに、?マークがでるので、新しい環境
での開発は、楽です。
この割込のプログラムは、違う諸兄のプログラムを改変しました。
いろいろゴミが残ってますが、私の環境で、一応動いたもの
です。
2015-10-06 Tue
諸兄のプログラムをもとに、多少変更を加えて、PCのキーボードから、LEDのコントロールをするプログラムをつく
りました。
キーボードから、1~7の数字を押すことで、それに応じた
場所のLEDを点灯するプログラムです。
プログラムです。
ヘッダーファイルの「uart.h」と「uart.c」諸兄の作られたものを
そのまま使わせていただいています。
今回はポーリングのプログラムなので、次は、割込を使った
プログラムを作ってみようと思います。
2015-10-05 Mon
新しい環境で、諸兄の書いてくれたシリアル通信のプログラムを自分の環境で実現するべくもがいていました。
コンパイルはすんなり通るのに思った動作をしてくれません。
全部疑って、一つ一つつぶして、やっと思うような動作ができ
るようになりました。
まず、はまったのが、デバックのために、プログラムの間に
書き込んだ書式です。
int count=1000;
RA0=1;
RA1=0;
while(count>0){count--;}
count=1000;
RA0=0;
RA1=1;
while(count>0){count--;}
LEDが交互に点滅するはずですが、RA1に当てはまるLED
の変化がありません。
もしやと思い
PORTA=0b00000001;
PORTB=0b00000000;
・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・
PORTA=0b00000000;
PORTB=0b00000001;
のように変更したら動きました。「RA」の表記では、ポート
全体の値を書き換えてしまってるようでした。
よく見てみるとポートのビットの操作の記述が変更に変更に
なってました。
RA1→→PORTAbits.RA1
のように書かないとだめでした。
次にはまったのが、外部オシレーターの使用でした。
これは、デバックの方法の手落ちでした。外部オシレーター
でプログラムがうまく動いているのか確かめるのに、LEDの
点滅プログラムを挿入しましたが、ウエイトタイムが短くて
点灯しっぱなしで、うまく動いてないように見えてしまいま
した。何回、書き直したことか。
丸一日かかって、諸兄のプログラムの再現ができました。
PICのUART機能を使って、PCからのキー入力を
エコーバックするプログラムです。
それから、とんでもないミスをしてました。RXとTXのピンアサ
インを私の教科書(キットで遊ぼう電子回路シリーズNo9)で
確認しながらしてましたが、これが間違いでした。
教科書のPICは、16F627AというPICで、今回使ったのは、
16F88というPICでした。同じ18ピンのICなので、同じだろう
たたかをくっくってたのが間違いでした。なんと、
16F627
TX--8ピン(RB2)
RX--7ピン(RB1)
16F88
TX--11ピン(RB5)
RX-- 8ピン(RB2)
なんと、TXとRXが入れ替わってました。これでは、動きません
ね。やはり、データシートみないとだめなんですねえ。
2015-10-02 Fri
X IDEの開発環境で、いくつかプログラムを書いて見ました。驚いたのは、「あまりにも親切過ぎる」でした。
最近の一太郎やWORDのように、やろうとしていることを
先読みして、自動でやってくれます。
一太郎等では、冒頭に句読点がくると、行間をつめて、
句読点を行の終わりの位置にもってくるということを自動
でやってくれます。これと同じように、いろいろ、自動でや
ってくれます。ただ、この「親切」がくせ者で、時に、意図し
たことと違う結果になってしまいます。行頭の禁則処理を
自動でやると、行ごとの文字間隔がちがって、見栄えが
悪くなるので、この辺が、一番いやなところです。
この意味で、最近のワープロソフトは、嫌いでした。さすが
使わなくなりましたが、PCになってからも、OASYSという
ワープロソフトを使い続けたのも、この親切さがなかった
からです。
さて、X IDEですが、使ってみて、ことのほか便利なようです。
何よりも、作成途中で、シンタックスエラーがあると、その都度
知らせてくれます。
黄矢印の行に「;」がないシンタックスエラーがありますが、
次の行の緑矢印の所にきちんと、「びっくりマーク」が表示
され、エラーのあることを示してくれます。
「;」をつけてやると、ちょっとタイムラグがありますが、
びっくりマークは、すぐに消えます。
未定義の変数等についても同じように知らせてくれますの
ので、開発時間が短縮されるかもしれません。
2015-09-30 Wed
PICのプログラムを作るにあたって、初めて使った、
MPLAB IDE V8.8という古典的な環境を使い続けてきまし
た。
ただ、世の中がどんどん進んでいて、このv8.8は古い
アーカイブに残っているだけで、メジャーなDLのリストには、
ありませんでした。
また、新しいことを覚えるのはしんどいのですが、諸兄の
プログラム古い環境に移植しようと思いましたが、あっさり
断念しました。
新しい環境のMPLAB® X IDEをインストール。この環境で
コンパイルしたら、一発でOKでした。
新しい環境では、一番の難物のCONFIGの設定も半自動で
おこなえるようで、なれれば、こちらの方がいいかもしれま
せん。
2015-09-26 Sat
テスト基盤から、組み込み用の基盤に作り直し、組み込み前のテストです。
プログラムも多少変更しました。
○電源投入後、LEDを一つ約1.5秒点灯させ、スイッチ
の代わりにする。
○MPGを回すのを止めて、約1.5秒動かさないと、LED
を消灯させる。
の変更をしました。TIMER0の割込で、おおざっぱな時間を
計測しています。
ケースにLEDを埋め込む予定ですが、まだ、部品が届かな
いので、手持ちのLEDを基板につけてテストです。
TOP PAGE △