ブログパーツUL5

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

        1

        カレンダ

        1234567
        891011121314
        15161718192021
        22232425262728
        293031    
        << March 2009 >>