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

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

PIC18F2550では大きすぎて、計画中のTK80互換マイコンボードND80ZVには組み込めそうにないことがわかりました。
USB機能内蔵のPICにはPIC18F4550、PIC18F2550のほかに20pinのPIC18F14K50があることはちょっと前から知っていました。しかしUSBに関する部分がPIC18F2550とはかなり異なっているようです。
案の定しっかり泥沼にはまってしまいました。

[第80回]

●SLRCONレジスタ?

PIC18F14K50の動作テストをするために、PIC18F14K50のDataSheetを読んでいましたら、見たことのないレジスタについての説明にぶつかりました。

なんじゃこりゃあ?


[出典]MICROCHIP社PIC18F1xK50DataSheet

うむむ。
MICROCHIPさんもよくわからないことをやってくれます。
なんだかいまひとつ理解に苦しむところなのですが、どうやらI/Oポートの出力のスルーレートを加減する、ということのようです。
スルーレート?
はて?
なんでまたそんなことを?

よくはわからないのでありますが。
しかも、デフォルトではスタンダードではない設定になるのだとか。
at 0.1timesとありますから、transition rateつまり立ち上がり立ち下りの速さということでしょうか、それが0.1timesつうのは数値だけを見るとめちゃめちゃ速くなる、ように思ってしまうかもしれませんが…。

それは多分timesをタイムすなわち時間ととらえるとそのように印象してしまいます。
しかしtimeではなくてtimesなのですよねえ。

timesという場合には、確か、○倍という意味だったと記憶しておりますが…。
そうだとすると、0.1timesは0.1倍ということですから、めちゃめちゃ遅くなってしまいます。
まあなにを基準にして、その0.1倍か、というところがよくはわからないのですが。

それにしても、もしも0.1timesがそういう意味だとしたら、なぜわざわざ遅くしなければならないのか。
うむむ。
なぞですねえ。

なにはともあれ、試してみることが一番の近道です。

前回のプログラムにSLRCONのところだけ追加しました。

;;;pic p18f14k50 test program
;f14k50test3
;10/5/21
;
;
	#include<p18f14k50.inc>
;cpuclock=32MHz internal oscillator
;
	CONFIG FOSC = IRCCLKOUT,WDTEN=OFF,LVP=OFF;not WDT          
;
	org 00
	movlw 64;clock=8MHz,select Primary Clock
	movwf OSCCON
	movlw 40;PLL on for intosc=8MHz only
	movwf OSCTUNE
	clrf ANSEL;PORTA,PORTC are digital
	clrf ANSELH;PORTB,PORTC are digital
	clrf SLRCON
	clrf TRISA;porta=out
	clrf TRISB;portb=out
	clrf TRISC;portc=out
;
	movlw 1
loop
	xorwf PORTC
	goto loop
;
	end

デフォルトではSLRCONのbit0〜bit2は1になるようです。
ということはスタンダードレートではなくて、その0.1timesになっていることになります。
そこでプログラムでSLRCONの全ビットを0にしました。
clrf SLRCONです。

●プログラムTEST3の出力波形です

プログラムを実行中のRC0からの出力波形です。

下側(CH2)がRC0からの出力です。
SLRCON=0にしましたから、スルーレートはスタンダードです。

これを前回のTEST2の出力波形と比べてみましょう。

前回のプログラムTEST2ではSLRCONはさわっていませんから、デフォルトの設定、つまりスタンダードの0.1timesのスルーレートです。
そういえばなんだかこちらのほうが、勾配がゆるやかなような…。

CH2の波形を拡大して比べてみましょう。
まず、こちらは今回のTEST3の波形です。


そしてこちらが前回のTEST2の波形です。


たしかに、こちら(0.1times)のほうがゆるやかなようです。

でも、こんなものがなぜ必要なのでしょうかねえ。
CPUをつくろう!第509回(2010.5.26upload)を再編集

PICでUSBを![第80回]
2011.7.12upload

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