としぶぅ~の「工作部屋」...毎日少しのお勉強

趣味・関心事を書いていこうと思います。

PIC16F88を動かす。。。その48(SPI:その9)

2012-11-19 05:30:58 | PIC16F88

おはようございます。

としぶぅ~です。

今週もスタートですね、今週は木曜日まで・・・・日数少ないので頑張って走り切ります^^

 

さて、今日はSPIぼパラメータについて続きをかきます。

とりあえず、CKPについては先日かきました。

しかし、CKPは単独ではなくCKEとの組み合わせで設定しなければいけません。

先日このCKEについて訳した内容をレジスタの説明でそのまま書いておいたんですが。。。。

どうもつじつまが合わない^^;

よくわからない状態でしたが、ちょっと参考書引っ張り出して「どういう意味!?」ということを確認しました。

そこでわかったのは、CKEはデータの1bitの区切りをどこからどこまでにするのかを決めるためのもの・・・

と書いてあります。

CKEが0の時:クロックがアクティブ→アイドルで1bit

CKEが1の時:クロックがアイドル→アクティブで1bit

それで、アイドルとアクティブのレベルについては、CKPで設定する。

CKPが0の時:アイドル=”L”、アクティブ”H”

CKPが1の時:アイドル=”H”、アクティブ=”L”

になります。

波形で見てみると

CKE=0、CKP=0のときは、

CKE=1、CKP=0のときは、

とこんな感じでしょうか・・・

上記はCKPを0に固定で見ましたが(CKEの挙動を見るには十分かな。。。とおもいます。)後、2種類の組み合わせが

あります。

ま、極性が反転するだけなので上記の挙動がわかれば想像つくんではないでしょうか。。。

 

今日はこの辺でタイムアップです。

明日からはSPIのI/Fを持つEEPROMの訳をしようかなと思います。。。英文との戦いが始まります(笑)

ま、必要なところだけしか訳しませんが^^;

 

それではみなさま・・・今日はこの辺で!

今日も良い一日になりますように(^o^)/

 

 

 


PIC16F88を動かす。。。その47(SPI:その8)

2012-11-18 23:05:30 | PIC16F88

こんばんわ

としぶぅ~です。

 

昨日はいまいち調子が出なかったのでブログはお休みしました。。。

考えてはいたんですが、ブログを書くために手を動かすところまでいかなかった^^;

本日は、なんか眠たかったですがSPIの確認と、今後LCDをSPIかI2Cで通信できるようなモジュール化

するために回路の変更!と基板を変更・・・・モジュール基板を製作しました。。。

なかなか大変ですね。仕事ではないので。。。。集中力が・・・なかなかすすみません^^;

とりあえず現状の回路図は下記のように修正しました。

SPIのI/Fを持っているEEPROM 32Kbitを取り付けました。。。そろそろ基板面積がなくなってきましたが

なんとか詰め込みました。

使っているEEPROMは、25AA320というMicrochip製です。

http://ww1.microchip.com/downloads/en/devicedoc/21227e.pdf

また使うのに英文とのたたかいですか・・・・^^;

基板は、こんな感じ

左は、LCDモジュールにするためのシート・・・まだ未完成です。

現行基板は、

見えませんが、裏面はごちゃぐちゃになっているので、今回いろいろきれいになるように修正入れました。

後、電源をスイッチでPickitからと外部からと切り替わるようにしていましたがくっつけました。

(ダイオード入れたらPickitからの供給がうまくいかなくなった・・・ダイオード分の電圧効果?電流足りない?)

ちょっと不具合ありそうですが・・・・その都度対応します。

後は、LCDモジュール・・・・まだ未完成です。

回路図書いてからまた配線開始します。

とりあえずアップ写真

なんか暗くて見にくいですね。。。

今日はこんなところかな~

 

とりあえず変更したとこ丸つけた写真も・・・

 

さて・・・それでは今日はこの辺で。。。

みなさまお休みなさい(^o^)/

 

 


PIC16F88を動かす。。。その46(SPI:その7)

2012-11-16 05:54:12 | PIC16F88

おはようございます。

としぶぅ~です。

 

昨日はすごく寒かったですね。。。。今日も寒いですが。。。

今日も一日がんばりましょう!

今日頑張れば明日は休みです。

 

では今日はちょっとパラメータをさわったらどうなるか波形を見て確認しました。

まずは、

CKP=0/CKE=0/SMP=0

設定した内容通りデータは出力されています。。。

CKP=1/CKE=0/SMP=0

こちらも・・・

今日はCKPを変えたときの挙動しかかけなかった。。。時間切れです。

CKPは送受信のポラリティ。。。つまり極性のパラメータなので、送信側-受信側で上記の状態が一致していれば

通信は問題なくできると思います。

SMPの挙動がどうなるか・・・・ちょっとうまく見れるか。。。。データ取り込みが、真ん中・・・後ろ・・・と書いてありますが

オシロで見てわかるだろうか??

明日?今晩?ちょっと見てみたいと思います。

 

今日もタイムアップです。。。。時間短いですね。。。

今晩は定時退社日なので、なにかやろうかな。。。^^

 

ではみなさま。。。本日もよい一日でありますように(^o^)/

 

 


PIC16F88を動かす。。。その45(SPI:その6)

2012-11-15 05:29:06 | PIC16F88

おはようございます。

としぶぅ~です。

 

なんかと~ってもさむいですね。。。。冬になってしまったな~

さて、今日もがんばります。

 

昨日ビルドができなくてとまどったSPIですが何とか動きました。

とりあえず、今日は各パラメータ値でどうなるか、波形で見ていきたいと思います。

モードはマスターモードの出力で定期的にSPI出力からデータとクロックが出るはずですので確認します。

プログラムはPWM確認用のプログラムをベースに作ってあります。

SDOから出力するデータは、bitの切り替わりがわかりやすいように1bitずつ”H"→”L”となるようにAAhを

出力しています。

まずは、転送レートから確認していきます。

OSC=8MHz

CKP=0,CKE=0,SMP=0(送信時立ち上がりでデータの真ん中でデータが取れるように出力)

SSPM=0の時、8MHz/4 → 2MHz

OSC=8MHz

CKP=0,CKE=0,SMP=0(送信時立ち上がりでデータの真ん中でデータが取れるように出力)

SSPM=1の時、8MHz/16 → 500KHz

OSC=8MHz

CKP=0,CKE=0,SMP=0(送信時立ち上がりでデータの真ん中でデータが取れるように出力)

SSPM=2の時、8MHz/64 → 125KHz

転送レートは問題なく設定どおり動作しているようです。

時間が足りなくなりました。。。。

今日はこの辺にしておきます。

 

明日は各パラメータ(CKE/CKP)を変更した時の挙動を見ていきます。

今はとりあえず出力しか見ていないので、入力の挙動も見てみたいですね。。。

ここでタイムアップです。

 

また明日です。

それではみなさままた(^o^)/

 

 


PIC16F88を動かす。。。その44(SPI:その5)

2012-11-14 06:16:18 | PIC16F88

おはようございます。

としぶぅ~です。

 

今朝は寒い・・・・今冬一番冷え込み?らしい・・・

本日はプログラムをさわっていました。。。

ささっと作ってちょっと動かしてみようと思ったけど・・・・ビルドができない^^;

なぜ!?

ちょっと苦戦している間に時間となってしまった。。。

なんか、新しく作ったファイルのディレクトリが見つからない・・・・などとメッセージがでてくる。

Error [141] D:\pic_WorkSpace\PIC16F88\template_pwm\main.c; 16.16 can't open include file "spi.h": No such file or directory

う~む。。。。他のファイルと同じ場所においてあるんだけどな~

もう少しやってみます。。。。でもそろそろタイムアップです。

なんか変なところでつまずくな~

とりあえず本日の成果・・・・ほとんどないですが初期化のソース。。。

//spiの初期化
void spiinit(unsigned char spimode)
{

/*************************************************
SPIモード
spimode = 0000 :spi-master-mode OSC/4
spimode = 0001 :spi-master-mode OSC/16
spimode = 0010 :spi-master-mode OSC/64
spimode = 0011 :spi-master-mode TMR2 output/2
spimode = 0010 :spi-slave-mode SSpin Disable
spimode = 0010 :spi-slave-mode SSpin Enable
**************************************************/

SSPM=spimode; //SPIモードの設定
CKP=0; //送信up-受信down
SMP=0; //データを真ん中で取り込む
CKE=0; //アイドル→アクティブ

//RB2とRB5は入力と出力ポートに設定
TRISB2=0; //RB2/SDO:出力に設定
TRISB5=0; //RB5/SSn:出力に設定
TRISB4=0; //RB4/SCK:出力に設定
TRISB1=1; //RB1/SDI:入力に設定

SSPEN=1; //SPIポートイネーブル

}

非常に簡単に書きました。。。。これでSSPBUFにデータを書き込めば、SDOとSCKにデータが出てくるはずです。

 

うむ。。。なぜにビルドできない・・・・なぞ・・・

 

では今日はこの辺にて

みなさま。。。本日もよい一日になりますように~

 

 P.S.もう少し粘っていたらビルドできるようになりました。。。原因は、ソースファイルの取り込みフォルダが間違っていました^^;

   新しく作ったフォルダからソースファイルを取り込んだら問題なくできた・・・・時間が^^;

   とりあえず出力も出ているようです。。。。でもうまく波形がとれません・・・・オシロの限界??