ブログパーツUL5

12F675の内蔵発振周波数を調整

 PICマイコンである12F675の内蔵発振を利用しているとRS232Cの通信ができないことという症状が発生してしまいました。原因を調べていたら、プログラムをフラッシュメモリに書き込む時に完全消去してしまったようで、デフォルトの初期値になっていました。それが原因で発振周波数に誤差が生じて遅延時間がずれたようである。

 参考になるのが
失われたキャリブレーションデータを求めて」という救世主のようなホームページがあり、助かりました。

 早速、プログラムを書込んで測定することにしましたが、幸い私の所有しているテスターは周波数カウンタ機能があり、測定できることがわかりました。秋月電子で購入したテスターですが、USB出力機能よりも周波数カウンタ機能のある方を選んだのが幸運でした。

 そこで、ブレッドボードを組んで補正値を試行錯誤で調整して見ることにしました。1MHz出力が3ピンに出ているので、周波数を測ってみたところ1.088MHzでかなりずれており、周波数補正値を書き込んで調整した所、1.003MHzまで合わせ込むことが出来たました。これで発振子がなくても内蔵発振で十分使えそうです。

 いつも使っている書込みソフトで、コンフィグビットのところで「完全にバルク消去する」と選択して、「補正値を変更する」を選択します。次に、右側の周波数補正値に数値を設定して書き込みます。すると、03FFに補正値が書込まれることになります。

 これで8ピンの12F675が復活できました。ピン数が少ないので発振子は使いたくないので、この補正方法は実質の周波数を見てできるのがいいですね。
0

    I2Cアナライザの動作確認

     20MHzのセラロックを購入してきたので、I2Cアナライザのもう1つの動作確認をするためにチェックしてみました。データ転送は9600bpsに設定して、RS232Cのアダプタ経由でPCのハイパーターミナルとの通信で確認できました。

     そこで今度は、RZ-1のメンテナンス用に大型液晶(20行×4行)の表示器を以前に製作してあったので表示しようとしましたが、電源が3.3Vにしたために液晶表示器の輝度調整を変更しなければならなくなり、こちらの回路の電源を5Vに変更しました。5VはUSBから供給するようにしました。
     これで一応動作していることが確認できましたので、I2Cアナライザは終了とします。

    0

      I2C簡易アナライザを製作

       結局、I2C簡易アナライザを製作しました。ここまで準備したので、最低限の動作確認はしておき、また必要となった時に改造を検討することにしました。まだ、セラロックを購入していないのですが、PIC12F675とEEPROM(AT24C512)との通信をV850でモニターできるようにして配線しておきました。

       PIC12F675とEEPROM(AT24C512)は3.3Vでも動作するので、5Vから変更してV850の入力端子に直接接続できるようにして、入力を切り替えられるようにしました。

       電源はUSBからのみ供給として、V850ボードとPIC12F675+EEPROMに3.3V、LCDには5Vにしました。

       写真のようにスペースがないので、PIC12F675とEEPROM(AT24C512)はにあまり利用しないだろう予想してV850ボードの下に配置しました。

      0

        I2C簡易アナライザについて

        I2Cがうまく認識できなかったので、SDA(DATA)とSCL(CLOCK)の2線式の信号を調べるのにオシロスコープがあればすぐに分かるのですが、このために、オシロスコープを買う気にもなりません。少なくともI2Cのデータバスにどのようなデータが来ているのかを調べられる簡易アナライザはできないかと考えました。

         そこで、波形を見ることはできなくてもデータが分かる方法はないかインターネットで調べてみました。参考となるものが2件見つかりましたが、条件は出来る限り再利用して手持ち部品で製作できることとした。

        (1)PIC12F675をI2CにI/Fはソフトウェアで実現
        EEPROMに書き込まれたデータをI2Cを通して調べることが出来ます。
        http://homepage2.nifty.com/sfukuda/page111.html
        12F675とRS232CのI/Fモジュールがすでにあるので、20MHzの3端子セラロック(70円位)のみ購入すれば製作できることがわかりました。

        (2)v850と液晶表示の簡易アナライザ
           I2Cの通信データを直接見ることが出来ます。
        http://www.fumi2kick.com/komekame/archives/220
         InterFaceに付属してきたV850が手持ち部品にあるでチャレンジできそうである。液晶表示もちょっとキズはありますが使えるので、残りの部品や基板もほとんどあるので、これは新規購入部品なしで製作できそうである。

        とここまで調べていざ本格的に製作しようとした矢先に、RZ-1のI2Cの問題が解決してしまいました。

         簡易アナライザは必要なくなったので、V850と液晶表示だけでも製作しておこうと計画変更することにしました。そこまでできれば、改造しなければ簡易アナライザもできてしまうかもしれません。
         左の写真で8pinのICがPIC12F675で、8pinICソケットがEEPROM用です。プログラムは書き込み済みですが、まだ利用できません。

        0

          予備で購入したMR-C3024のファームウェアバージョンアップ

           予備で購入してあったMR-C3024のファームウェアを購入時のV2.5からV2.7にバージョンアップしておきました。roboBASICのV2.7を使用するのにはやはり最新にしておく必要がありそうなので、現在使っているMR-C3024とバージョンをあわせておく方が問題が少ないと考えました。

          (1)ファームウェアのバージョンの確認方法
          ・マイコンボードと転送が出来る状態にする
          ・roboBASICの「コントローラ情報」をクリックする
          ・MR-C3024の情報が表示される

          (2)ファームウェアのバージョンアップ方法
          ・roboBASICの「ヘルプ」の「MR-C3000/MR-C3024ファームウェアアップデート」をクリック
          ・小さいWindowの「OK」をクリックする
          ・マイコンボードの電源を入れなおす
          ・転送がスタートする
          ・完了するとWindowが消える
          ・コントローラ情報でバージョンを確認

          MR-C3024 ファームウェアをバージョアップした予備のMR-C3024で、忘れないようにアップしたことを追記しました。
          0

            PIC16F84AをPIC16F628Aに置き換え成功

             すでに製作してあるLED電光掲示板やビットマン風の表示は、PIC16F84Aではメモリ限界で増やすことができません。そこで、メモリの多いPIC16F628AやPIC16F648に切り替えができるか検討しました。
             幸いPIC16F628事始に置き換える時の注意点が説明されていたので、大変助かりました。

            変更した4箇所は次の通りです。

            (1)デバイス指定の変更
              PIC16F84AからPIC16F628Aにデバイスを変更します。
             【変更前】
            list p=16F84A ; list directive to define processor
            #include ; processor specific variable definitions
             【変更後】
            list p=16F628A ; list directive to define processor
            #include ; processor specific variable definitions

             ※参考:コンパイル時にバンク切替の警告を非表示に出来る
            ERRORLEVEL -302 ;アセンブル時のバンク警告メッセージ抑制

            (2)コンフィグレーションワードの変更設定
              デバイスにより機能が違うので、コンフィグレーションワードを設定変更します。
             ・LVP(Low Voltage Programming Enable bit)のON/OFF
              LVPはないので無効にします
             ・MCLRE(RA5/MCLR Pin Function Select bit)のON/OFF
              MCLRピンはOFFにします
             ・発振方式の指定(HS oscillator)現状に合せます
              (内蔵OSCもあるので、回路の簡素化も可能)

            【変更前】
            __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
            【変更後】
            __CONFIG _HS_OSC & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _DATA_CP_OFF & _WDT_OFF & _LVP_OFF & _BODEN_OFF

            (3)データRAM(ユーザーメモリ)の先頭番地の変更
             ・16F84Aは0x0C番地を16F628Aは0x20番地に変更
             ・70H〜7FHの範囲だけ、どのバンクにあってもRead/Write可能
             【変更前】
            w_temp EQU 0x0C ; variable used for context saving
            status_temp EQU 0x0D ; variable used for context saving
            ;---
            wait_data EQU 0x10 ;wait data
            count_sub EQU 0x11 ;count sub data
            以下に続く

             【変更後】
            w_temp EQU 0x70 ; variable used for context saving
            status_temp EQU 0x71 ; variable used for context saving
            ;--
            wait_data EQU 0x20 ;wait data
            count_sub EQU 0x21 ;count sub data
            以下に続く

            (4)ポート設定変更
             ・コンパレータのアナログ入力のOFF設定とデジタルIO設定
             ・ポート設定を分かりやすく記述
             【変更前】
            port_set ;RA0,RA1,RA2,RA4(OUT)
            ;RA3(IN)
            ;RB0,RB1,RB2,RB3,RB4,RB5,RB6,RB7(OUT)
            bsf STATUS,RP0
            clrf TRISA
            bsf TRISA,4
            nop
            clrf TRISB
            bcf STATUS,RP0
            return
             【変更後】
            port_set ;RA0,RA1,RA2,RA4(OUT)
            ;RA3(IN)
            ;RB0,RB1,RB2,RB3,RB4,RB5,RB6,RB7(OUT)
            ;***** 16F628A INITAL SETTING
            ;------ コンパレータOFF ------
            bcf STATUS,RP0
            bcf STATUS,RP1
            clrf PORTA
            movlw 0x070 ;コンパレータOFF 16F628独自
            movwf CMCON ;ディジタルI/Oとして定義
            ;------ I/O定義 ------
            bsf STATUS,RP0 ;bank1へ切り替え
            movlw b'11110000' ;INPUT PA3,4,5 出力
            movwf TRISA ; RA ポートの設定
            movlw b'00000000' ; OUTPUT PB0-7:00h
            movwf TRISB ; RB ポート全て出力
            bcf STATUS,RP0 ; bank0へ切り替え
            return
            0

              PICマイコンのライター2号

               有り合わせで製作した超小型のPICマイコン用のRCDライターを今まで使っていましたが、使用回数が増えてソケット抜き差しでICの足を曲げてしまうことがあるのでソケットを変更することにしました。
               写真の上が今までの超小型ライターで、下が今回製作したライターです。回路は全く同じですが、部品は指定のものにして、部品配置も配置図に合わせました。回路的には問題がないのでそのままにしました。

               回路は改良されたRCDライタバージョン2.5ですが、部品配置は20pinのTEXTDOLソケット(純正はTEXTTOOL?)を使う関係でRCDライタバージョン2.3にしました。20pinのTEXTDOLソケットは中国製のコピー品で、端子は金メッキされていませんが、価格が安いものにしました。
              0

                PICマイコンで遊ぶ

                 RZ-1に胸には、PICマイコンでマトリックLEDを動作させています。花粉が飛び交う季節で桜が咲くまでは外出を出来る限り回避することにした。そこで、他にもPICにはいろいろなマイコンがあるので、試すことにした。

                (1)PIC12F675による10バーLEDの製作
                  ・8pinのマイコンでもこのようなことが出来るとは知りませんでした。
                  ・参考URLを参考に基本的な動作確認をしていました。
                  ・加速度センサーを搭載して水準器のようなものを製作しようと検討中
                  ・基板はすでに踏査しているマトリックLEDのモジュールと同じにして
                   交換できるようにしています。従来の重さ1/2になる。
                   →どのような表示パターンを追加するか検討中
                  ・フルカラーLEDのコントロールの検討中

                (2)マトリックLEDのモジュールのPIC16F84AをPIC16F628に交換を検討
                  ・参考URLを参考にテストプログラムを作成
                  ・現在はコンパイラではエラーがないのですが、ライターで書き込ん
                   でうまくいっていないようで基本動作がうまくいっていません。
                  ・マトリックスLEDモジュールのメモリを大きいマイコンに移植する
                   ことを検討

                    (1)PIC12F675の10バーLED        (2)PIC16F628のテスト中

                0

                  マトリックスLEDをリサイクル

                   マトリックLEDを再利用して、予備のRZ-1用の電光掲示板を製作しました。これには赤LEDと緑LEDの切替SWを載せています。RZ-1の手で持っているのが、マトリックスLEDをリサイクルした電光掲示板です。

                   これで故障時にはいつでも交換が出来る体制になりました。LED駆動回路のICでスペースを稼げるものがなく、結局、従来のトランジスタのドライブを並べています。ベース抵抗のみ共用化して1本の抵抗で赤LEDと緑LEDの切替えで使用できるようにしています。

                  0

                    ROBOZAKにビットマン

                     アクリルの小さな箱を見つけてもらったので、以前に製作したビットマンを搭載してみました。以前製作した電光掲示板モジュ−ルのサイズにフィットするので見た目にも良さそうですね。

                     これをどのようにするかのアイデアを練っています。別電源にしておくと時計(?)になります(どのマトリックLEDが付いているかで、時分秒が分かる)ので、ROBOZAKが置物としても利用できます。
                     改造すべき点は次の4つ
                    (1)90°回転できるようにする
                    (2)電光掲示板モジュ−ルを簡単に交換できるようにする
                    (3)アクリルのクリア出なくダークにして中身を見えにくくする
                    (4)別電源をどのようにするか


                     なぜ、改造を考えているかというと、距測LEDのでっぱりを保護できるようにすることと、本体の胸部に音声合成のボードを搭載できるようにスペースを確保したいためです。
                    0


                      カレンダ

                           12
                      3456789
                      10111213141516
                      17181920212223
                      24252627282930
                      << September 2017 >>