PIC12F1822を使った開発中に気づいたことメモメモ
■(1)UART通信で、RCIFの値がとれない場合(RCIFフラグがたたない)
・TRISAの値が正しいか
→入力のところが出力になっていないか?
RXDTSELが0なら、RA1ピンは入力、1ならRA5ピンが入力(つまり1)になっていないといけない
・割り込みの設定
RCIE = 1;
だけでなく
PEIE = 1;
GIE = 1;
もしておく
■(2)UsartのボーレートとSPBRGH、SPBRGLの値設定
以下のサイト参照
Usartのボーレート算出
http://www48.atpages.jp/cent22/Electronics/PIC/Usart_Calc_Baudrate/Usart_Calc_Baudrate.html
この表で、BRG16の設定は、その表の上(BAUDCON.3)にあるようにBAUDCONの3ビット目を0にするか、1にするかのこと
BAUDCON = 0b00001000;
同様に、BRGHの設定はTXSTAの2ビット目
TXSTA = 0b00100100;(のおわりのほうの100)
クロック(Clk source)は
#define _XTAL_FREQ
で定義するだけでなくOSCCONレジスターで定義する※
OSCCON = 0b01110010;(の中ほどの1110が8MHz)
PLL(4倍にする、しない)は
#pragma config PLLEN
で定義し
#pragma config FOSC
で指定するけど、これがOSCCONの下位の値(終わり10は内部クロック)にも関係するので注意(※)
その表で書いてあるのは、4倍した場合、しない場合の周波数が載っている
ので、上記設定を元に、上述のサイトの数値を入れると吉
※参考
http://www.geocities.jp/zattouka/GarageHouse/micon/MPLAB/18F14K50/memo.htm
と
http://www.picfun.com/pic18/pic18xx02.html
■(3)12F1822と12LF1822の違い
・12LF1822は、省電力で動く
IDE側で、12LF1822を選択すると、PICKIT3の入力電圧を変えてくれるが・・
・前に書いた
PICでの開発方法のまとめ
http://blog.goo.ne.jp/xmldtp/e/6ec32e5abe7d923caab046dc9b7dd698
にもとづき、サンプルソースに
http://www.geocities.jp/zattouka/GarageHouse/micon/MPLAB/12F1822/LEDblink/LEDblink.htm
を使う場合
#pragma config BORV = HI // 電源電圧降下常時監視電圧(2.5V)設定(HI)
をコメントにする
(つまり // #pragma config BORV = HI)
LVPをOFF→ON
(つまり #pragma config LVP = ON // 低電圧プログラミング機能使用する(ON))
にしておかないと動かない
■(1)UART通信で、RCIFの値がとれない場合(RCIFフラグがたたない)
・TRISAの値が正しいか
→入力のところが出力になっていないか?
RXDTSELが0なら、RA1ピンは入力、1ならRA5ピンが入力(つまり1)になっていないといけない
・割り込みの設定
RCIE = 1;
だけでなく
PEIE = 1;
GIE = 1;
もしておく
■(2)UsartのボーレートとSPBRGH、SPBRGLの値設定
以下のサイト参照
Usartのボーレート算出
http://www48.atpages.jp/cent22/Electronics/PIC/Usart_Calc_Baudrate/Usart_Calc_Baudrate.html
この表で、BRG16の設定は、その表の上(BAUDCON.3)にあるようにBAUDCONの3ビット目を0にするか、1にするかのこと
BAUDCON = 0b00001000;
同様に、BRGHの設定はTXSTAの2ビット目
TXSTA = 0b00100100;(のおわりのほうの100)
クロック(Clk source)は
#define _XTAL_FREQ
で定義するだけでなくOSCCONレジスターで定義する※
OSCCON = 0b01110010;(の中ほどの1110が8MHz)
PLL(4倍にする、しない)は
#pragma config PLLEN
で定義し
#pragma config FOSC
で指定するけど、これがOSCCONの下位の値(終わり10は内部クロック)にも関係するので注意(※)
その表で書いてあるのは、4倍した場合、しない場合の周波数が載っている
ので、上記設定を元に、上述のサイトの数値を入れると吉
※参考
http://www.geocities.jp/zattouka/GarageHouse/micon/MPLAB/18F14K50/memo.htm
と
http://www.picfun.com/pic18/pic18xx02.html
■(3)12F1822と12LF1822の違い
・12LF1822は、省電力で動く
IDE側で、12LF1822を選択すると、PICKIT3の入力電圧を変えてくれるが・・
・前に書いた
PICでの開発方法のまとめ
http://blog.goo.ne.jp/xmldtp/e/6ec32e5abe7d923caab046dc9b7dd698
にもとづき、サンプルソースに
http://www.geocities.jp/zattouka/GarageHouse/micon/MPLAB/12F1822/LEDblink/LEDblink.htm
を使う場合
#pragma config BORV = HI // 電源電圧降下常時監視電圧(2.5V)設定(HI)
をコメントにする
(つまり // #pragma config BORV = HI)
LVPをOFF→ON
(つまり #pragma config LVP = ON // 低電圧プログラミング機能使用する(ON))
にしておかないと動かない