---新しい開発環境(6)---

 今回のプログラムの作成に使った回路?です。

 

 おきまりの基板+USBシリアル変換アダプター(○月)の構成
 で、開発してます。
 USBシリアル変換アダプターは、FT232RLという型番で、
 完成品が、950円でした。
 左端の小さな基板は、セラロックをつけたものです。はじめ、
 空中配線で、使ってましたが、アースの端子が根元からおれ
 てしまったので、基板につけました。
 この開発に使ってる基板は、
 「キットで遊ぼう電子回路シリーズNo9」
 に付属のものですが、便利に使ってル反面、やはり、中途
 半端な感じもします。使いやすいように、自作した方
 がいいのでしょうが、ずっと使ってます。

---新しい開発環境(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の回転が分からなくなります。
 まあ、ちょっと、お遊びをしてしまいましたが、うまくできて
 自己満足です。

---安物買いの銭失い?---

 某オクで、○ルツ等の約1/3の値段ででていたブラケット
 LEDに飛びつきました。
 ところが、やはり、安物買いの銭失いでした。
 9個中、2個のナットが破損しました。

 

 これも、○華製でしょうか。
 こんな精度の悪いナットを見るのは初めてでした。
 これを売ったお店は、悪気はないのかもしれませんが、
 これでは、こまった物です。

---パルスジェネレーターによるテスト (8)---

 テスト基盤から、組み込み用の基盤に作り直し、組み込み
 前のテストです。

 プログラムも多少変更しました。
   ○電源投入後、LEDを一つ約1.5秒点灯させ、スイッチ
     の代わりにする。
   ○MPGを回すのを止めて、約1.5秒動かさないと、LED
     を消灯させる。
 の変更をしました。TIMER0の割込で、おおざっぱな時間を
 計測しています。

 

 ケースにLEDを埋め込む予定ですが、まだ、部品が届かな
 いので、手持ちのLEDを基板につけてテストです。