PICでUSBを!(知識ゼロからのスタートです)
PIC18F14K50のUSB機能を100%自前のソフトで制御する試みです。しかもアセンブラで!
当記事は2009年12月から「TTLでCPUをつくろう!」というタイトルの もとにほとんど毎日連載をしてきたものを再編集したものです。 2011.7.11

前へ
次へ
目次へ戻る
ホームページトップへ戻る
☆PIC18F2550

今までの説明はPIC18F4550を使って行なってきましたが、PIC18F4550は40pinのICでサイズが大きすぎます。ピン数が多いだけにI/Oポートも十分あるのですが、USBインターフェースとしての用途に限定すれば、そんなに沢山のI/Oは必要ありません。
そこでこれからはPIC18F2550を使って説明をしていくことにしました。

[第60回]

●秋月のPICプログラマ対策

前回、MCLRを使わないモードで、さらに内蔵発振モードを設定したプログラムを秋月のAKI−PIC2プログラマボード(PICkit2互換)で書き込むとPICが破損してしまいます、ということを書きました(秋月のサイトにその警告が書いてあります)。
前回紹介いたしましたPIC18F2550のテストプログラムがまさにそのモードです。
以前、私自身がうっかりそれをやってしまって、PIC16F88を1個オシャカにしてしまいました([第4回])。

んでも、今になって考えてみますと、確かに内蔵発振モードは以前から使っておりましたが、MCLRを使わない設定となりますと、はて?そんな設定をして使ったことがあったかいなあ?とちょいとといいますか、はなはだ疑問を感じてしまいます。
ひょっとしますと、そのときは、ただPICを逆差ししてしまっただけだったかも、しれません。
事実、その後に逆指しをしてしまったことも書いておりますので([第4回])。

しかし、まあ、製造販売元が、やらないで、と警告しておりますことを敢えてやってみたって、それは何の得があることでもありませんから、ここは君子危うきに近寄らず、です。

それでは、どうしましょう?
ということなのですが、秋月のサイトの警告には、その下に対策として、

お手数ですが、基板上のICソケットではなく、5ピンの信号線を引き出して書き込みをしてください。

と書いてあります。

ほんと、お手数です。
お手数ですけれど、そうせよ、ということでありますから、そういたしました。

外部書込用の5ピンの引き出し線(コネクタは6ピン)は上の写真に見えているコネクタのpin1からpin5に出ています。
このタイプのコネクタは持っていません。
わざわざそれだけ買いに大須まで出かけていくのも面倒なことでありますから、直に引き出してしまいました。

本来ならば、ゼロプレッシャーソケットなどを使うべきところなのでしょうが、これも同様の理由で、それに今回はちょいとテストをしてみよう、というだけのことでもありますから、普通のICソケットを使ってしまいました。
28pinのナロウ(幅狭)ICソケットは丸ピンタイプしか持ち合わせておりませんが、丸ピンというのは抜き差しが固くて閉口いたしますから、ここも手持ちの20pinと8pinを使って28pinソケットの代用といたしました。

接続する5本のラインは、写真でもコネクタのところにシルク印刷されているのがなんとか見えます。
VPP、VDD、GND、PGD、PGCの5本です。
これを、28pinソケットのpin1(VPP)、pin20(VDD)、pin8とpin19(VSS=GND)、pin28(PGD)、pin27(PGC)に接続します。
VPPは+13Vの高圧ですから、配線を間違えると一発でPICが昇天してしまいます。ご注意ください。
PIC18F2550の端子図はこちら([第58回])にあります。

こちらが裏側の写真です。


さっそく試してみましたら、PIC18F2550を認識してくれません。
むむ。
言わんこっちゃ無い。
さては、誤配線か。
確認してみましたが、配線は合っています。

ということは、外部にソケットを用意する場合には、何か設定が必要なのか?
あらためて、AKI−PIC2プログラマボードの取説を読んでみましたら。
設定が、必要でした。
むむ。説明書はよく読みましょう。

外部のソケットを使う場合には、電源供給用のショートピン(さきほどの6pinコネクタのすぐ下にありました)を、T側ではなくて、B側にせよ、と書いてありました。

そのようにしましたところ、無事書き込みができました。
やれやれです。

●PIC18F2550テストプログラムの説明

テストプログラムリストは前回お見せしましたが、もう一度お見せいたします。
f2550test1.asmです。

;;;pic p18f2550 test program
;f2550test1
;4/25
;
	#include<p18f2550.inc>
;
;cpuclock=8MHz internal oscillator
;
	CONFIG FOSC=INTOSC_EC,WDT=OFF,LVP=OFF,MCLRE=OFF          
;
	org 00
st0
	goto start
;
	org 1a
start
	movlw 7f;clock=8MHz
	movwf OSCCON
	movlw 0f
	movwf ADCON1;porta,b,e are digital
	movlw 0;porta-c are output
	movwf TRISA
	movwf TRISB
	movwf TRISC
;
	movlw 1
loop
	xorwf PORTA
	goto loop
;
	end

では順番に説明をしていきましょう。

●asmファイルの作成

PICのプログラムはアセンブラで作成します。
MPLABで新規ファイルを作成するのが普通のやり方ですが、asmファイルの中身はプレーンテキストですから、メモ帳(Notepad)などで作成してからMPLABで開いてアセンブルすることもできます。



MPLABでasmファイルを開くと、命令は上図のように青色太字で表示されます。
ただしMPLABで既存のasmファイルを開いて、それに修正を加える場合には、図のように文字が着色表示されますが、新規ファイルとして作成していく場合には、一旦拡張子をasmにしてファイルを保存しないことには、着色表示はされません。
この着色表示は、正しい命令の綴りを入力すると、すぐに青色太字に変わって表示してくれますから、綴りの間違いにすぐに気が付いてなかなか便利です。

MPLABは[第3回]でご紹介いたしました。入手方法などもご紹介しておりますので、そちらを参考にしてくださいませ。

MPLABのもともとの「正統的な」使い方としては、多分projectを作成するところから始めるのでしょうけれど、私はそういう面倒なことがいたって苦手ですから、projectは作成せずにいきなりasmファイルを作成するか、既存のasmファイルを変更することから入っています。
左上のNewFileアイコンかOpenFileアイコンをクリックするか、File→NewかFile→Openです。

作成を終わったらsaveFileアイコンをクリックして上書き保存するか、File→Save as…で、名前をつけて保存します。
このとき拡張子をasmにすることを忘れないようにします。

作成したasmファイルをアセンブルするには、Project→Quickbuildを選択するだけです。
エラーがなければPICプログラマで書き込むためのHEXファイルが作成されます。
Quickbuildの前に、Configure→Select DeviceでPICの名前を合わせておいてください。
上の図では、PIC18F2550のためのプログラムなのですが、画面下部にはPIC18F4550と表示されています。
この場合にはお仲間ですから、警告メッセージが出るだけで、アセンブルは正常に終了します。
しかしたとえばPIC18F2550のためのプログラムなのに、デバイスとしてPIC16F628などをセレクトした状態でアセンブルすると多分エラーがどっとでてしまいます。

●incファイル

プログラムの先頭には、そのプログラムを書き込むつもりのPICに合わせたincファイルを指定します。

#include<p18f2550.inc>

です。
Cなどでヘッダーファイルをインクルードするのと全く同じです。
incファイルはMPLABをインストールしたときにできるフォルダ(だと思いますが、もう記憶にありませんのであしからず)¥Microchip¥MPASM Suiteにあります。
拡張子はincですが、中身はプレーンテキストですからメモ帳(Notepad)などでも開けます。

ここにレジスタの設定が全て定義されていますから、どう書けばよいのかわからないときなどに、このファイルを開いて中を読んでみるのがよいと思います。
アセンブルしたときに表現のエラーだと思われるようなエラーが表示されたときは、このincファイルの該当するところを見ると正しい表記がみつかります。

参考までに、p18f2550.incのはじめの部分を見てみましょう。

        LIST

;==========================================================================
;  MPASM PIC18F2550 processor include
; 
;  (c) Copyright 1999-2007 Microchip Technology, All rights reserved
;==========================================================================

        NOLIST

;==========================================================================
;  This header file defines configurations, registers, and other useful
;  bits of information for the PIC18F2550 microcontroller.  These names
;  are taken to match the data sheets as closely as possible.
;
;  Note that the processor must be selected before this file is included.
;  The processor may be selected the following ways:
;
;       1. Command line switch:
;               C:\MPASM MYFILE.ASM /PIC18F2550
;       2. LIST directive in the source file
;               LIST   P=PIC18F2550
;       3. Processor Type entry in the MPASM full-screen interface
;       4. Setting the processor in the MPLAB Project Dialog
;==========================================================================

;==========================================================================
;
;       Verify Processor
;
;==========================================================================
        IFNDEF __18F2550
           MESSG "Processor-header file mismatch.  Verify selected processor."
        ENDIF


おお。うっかりしていました。
LIST P=PIC18F2550
と書くのを忘れておりました。
それを書かないと、Processor−header file mismatch.と表示されてしまいます。

でも、これは書かなくても特に支障はないようです。
最初にお見せしたf2550test1.asmをProject→Quickbuildとしてみますと、下のようにError:0で正しく終了してくれます。

f2550test1.asmのあるフォルダに、f2550test1.HEXファイルが作成されています。

もっともさきほどの、LIST P=PIC18F2550が無いために表示された、”mismatch”のメッセージは、Configure→Select Deviceでpic18F2550を選択してから、quickbuildすると、表示されなくなります。
私はMPLAB IDE v7.31とv8.40を使っていますが、このバージョンでは、Configureでデバイスを選択することが優先されるようですので、LIST P=PIC18F2550は省略しても支障はないでしょう。
参考までに、Configure→Select Deviceでpic18F2550を選択してから、もう一度quickbuildした結果を下に示します。


本日は時間がなくなってしまいました。この続きは次回にいたします。
CPUをつくろう!第487回(2010.4.26upload)を再編集

PICでUSBを![第60回]
2011.7.11upload

前へ
次へ
目次へ戻る
ホームページトップへ戻る