インターネットの接続で、NTTからOCNに変更したら、特定の
サイトに接続ができなくなりました。
OCNのサイト等で調べて、DNSの設定は、「自動で取得」
でいいとのことだったので、その設定にしてました。
大きな不具合はなかったのですが、
http://ktsite.ddo.jp/PIC/
のサイトに接続ができませんでした。携帯では、できたので、
多分、DNSの不具合だろうと思いました。
ネットで検索すると、googleのDNSを使うといい、との記事
をみかけましたので、
優先 8.8.8.8
代替 8.8.4.4
にルーターのDNS(ドメインネームサーバー)の設定を変更
しました。やっと見えるようになりました。このサイトには、
16F88の情報がまとめられているので、重宝しています。
リングバッファーを使って、割り込みによる送信の
プログラム組みたくて、16F88のUSART割り込みについ
ていろいろ調べています。受信のプログラムは散見しますが、
送信のプログラムについては、AVR等のプログラムを
をよく見かけます。16F88の例題?があるとい
のですが。
---新しい開発環境(6)---
---新しい開発環境(5)---
今日一日、正確にい言うと、昨夜から、もがいていました。
その結果、やっと、割込を使った受信ができるようになりま
した。
今回はまったのは、諸兄のプログラムを移植していましたが、
16F88ではないPICのプログラムだったので、またもや入力
ピンの設定が違ってました。ここを直したら、すんなりでした。
また、割込の書式も違うのかなと思って旧の環境での記述と
新しい環境での、記述両方してみましたが、両方とも、通り
ました。
旧 RCIF = 1
新 PIR1bits.RCIF = 0
使えない表記だとすぐに、?マークがでるので、新しい環境
での開発は、楽です。
この割込のプログラムは、違う諸兄のプログラムを改変しました。
いろいろゴミが残ってますが、私の環境で、一応動いたもの
です。
---新しい開発環境(4)---
諸兄のプログラムをもとに、多少変更を加えて、PCの
キーボードから、LEDのコントロールをするプログラムをつく
りました。
キーボードから、1~7の数字を押すことで、それに応じた
場所のLEDを点灯するプログラムです。
プログラムです。
ヘッダーファイルの「uart.h」と「uart.c」諸兄の作られたものを
そのまま使わせていただいています。
今回はポーリングのプログラムなので、次は、割込を使った
プログラムを作ってみようと思います。
---新しい開発環境(3)---
新しい環境で、諸兄の書いてくれたシリアル通信のプログ
ラムを自分の環境で実現するべくもがいていました。
コンパイルはすんなり通るのに思った動作をしてくれません。
全部疑って、一つ一つつぶして、やっと思うような動作ができ
るようになりました。
まず、はまったのが、デバックのために、プログラムの間に
書き込んだ書式です。
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が入れ替わってました。これでは、動きません
ね。やはり、データシートみないとだめなんですねえ。
---宅急便の迷子---
○月に頼んだ部品が、今日届く予定だったが、今日は、
なしのつぶてでした。
荷物の追跡をしてみると、なんと、隣の隣の県のセンター
の方に届いて、そこからまた、東京の羽田のセンターにも
どされたようです。
どおりで届かない訳です。仕分けのミスか、住所の間違い
なのか、迷子になったようです。
今日、作る予定だったものがまた、先延ばしになりました。
明日は、また、草刈りで、明後日は、ボランティアのお仕事
で、作業は中断です。
---新しい開発環境(2)---
X IDEの開発環境で、いくつかプログラムを書いて見ました。
驚いたのは、「あまりにも親切過ぎる」でした。
最近の一太郎やWORDのように、やろうとしていることを
先読みして、自動でやってくれます。
一太郎等では、冒頭に句読点がくると、行間をつめて、
句読点を行の終わりの位置にもってくるということを自動
でやってくれます。これと同じように、いろいろ、自動でや
ってくれます。ただ、この「親切」がくせ者で、時に、意図し
たことと違う結果になってしまいます。行頭の禁則処理を
自動でやると、行ごとの文字間隔がちがって、見栄えが
悪くなるので、この辺が、一番いやなところです。
この意味で、最近のワープロソフトは、嫌いでした。さすが
使わなくなりましたが、PCになってからも、OASYSという
ワープロソフトを使い続けたのも、この親切さがなかった
からです。
さて、X IDEですが、使ってみて、ことのほか便利なようです。
何よりも、作成途中で、シンタックスエラーがあると、その都度
知らせてくれます。
黄矢印の行に「;」がないシンタックスエラーがありますが、
次の行の緑矢印の所にきちんと、「びっくりマーク」が表示
され、エラーのあることを示してくれます。
「;」をつけてやると、ちょっとタイムラグがありますが、
びっくりマークは、すぐに消えます。
未定義の変数等についても同じように知らせてくれますの
ので、開発時間が短縮されるかもしれません。
---新しい開発環境---
PICのプログラムを作るにあたって、初めて使った、
MPLAB IDE V8.8という古典的な環境を使い続けてきまし
た。
ただ、世の中がどんどん進んでいて、このv8.8は古い
アーカイブに残っているだけで、メジャーなDLのリストには、
ありませんでした。
また、新しいことを覚えるのはしんどいのですが、諸兄の
プログラム古い環境に移植しようと思いましたが、あっさり
断念しました。
新しい環境のMPLAB® X IDEをインストール。この環境で
コンパイルしたら、一発でOKでした。
新しい環境では、一番の難物のCONFIGの設定も半自動で
おこなえるようで、なれれば、こちらの方がいいかもしれま
せん。
---パルスジェネレーターによるテスト (9)---
MPG(手パ)を直接モーターのドライバーに接続して、
ステッピングモーターもテストするためのアダプター、
おもちゃが完成しました。
このアダプターには、DIR信号を作るためのD-FFのICと、
おもちゃのルーレットよろしくLEDを制御するための
PIC(16F88)を組み込みました。あと一つは、MPGに電源を
供給するためのアダプターの役割もします。
エンコーダーを早く回すと、LEDの回転が分からなくなります。
まあ、ちょっと、お遊びをしてしまいましたが、うまくできて
自己満足です。