半田ごてを握ったら書くブログ 2nd

半田ごてを握ったら書くブログの続きです。

とりあえず、動いた。

本業のツメと突発事故により、PIC遊びができていなかったけど、やっと触る時間がとれた。
まずはLEDの点滅。プログラムとPICKit2での操作に慣れることが目的。

フラッシュメモリへの書き込みは初めてなので、少し心理的な壁があったが、できてしまえばなんてことはない。
LEDがピカピカ光ってかわいい。



自作したPICKit2用のプローブはそれ自身はつないでおいてもかまわないんだなぁ。ライタ側を切り離せばいいのだから。
それに気がつくまで、何回かブレッドボードにピンの抜き差しをしてしまった。ピン自身が太いから面倒だった。

レジスタ類も大枠理解。CLOCKも内蔵4MHzと外付けセラロック20MHzで試してみた。5倍速いぜwww。


ただ、アセンブラで書くときに __CONFIG の指定の解説ページが少なくて戸惑った。
なので、↓は自分用メモ。

; PIC16F648A の __CONFIG について
;
; プログラムメモリ・コードプロテクション
; _CP_ON : CP1 = 0 / CP0 = 1 ==> 0200h から 07FFh までプロテクションあり
; _CP_OFF : CP1 = 1 / CP0 = 1 ==> プロテクションなし
;
; EEPROMコードプロテクション
; _DATA_CP_ON : CPD = 0 ==> EEPROM書き込み禁止
; _DATA_CP_OFF : CPD = 1 ==> コードプロテクション解除
;
; 低電圧プログラミング指定
; _LVP_ON : LVP = 1 ==> RB4/PGMポートをプログラミング指示ポートに使用し、低電圧プログラミングが可能
; _LVP_OFF : LVP = 0 ==> RB4/PGMはデジタルI/Oポートとして使用し、プログラミングにはMCLRポートを使用する
;
; 低電圧リセット指定
; _BOREN_ON : BODEN = 1 ==> 低電圧リセットを使用する
; _BOREN_OFF : BODEN = 0 ==> 低電圧リセットを使用しない
;
; マスタ・クリアピン指定
; _MCLRE_ON : MCLRE = 1 ==> RA5/MCLRピンをマスタ・クリア(MCLR)として使用する
; _MCLRE_OFF : MCLRE = 0 ==> RA5/MCLRピンをデジタルI/Oポートとして使用する。この場合、MCLRは内部でVDDに接続される。
;
; パワーアップタイマ指定
; _PWRTE_ON : PWRTE = 0 ==> パワーアップタイマを使用する
; _PWRTE_OFF : PWRTE = 1 ==> パワーアップタイマを使用しない
;
; ウォッチドッグタイマ指定
; _WDT_ON : WDTE = 1 ==> ウォッチドッグタイマを使用する
; _WDT_OFF : WDTE = 0 ==> ウォッチドッグタイマを使用しない
;
; 発振器指定
; _RC_OSC_CLKOUT : FOSC2 = 1 / FOSC1 = 1 / FOSC0 = 1 ==> ER(External Resistor) : RA6/OSC2/CLKOUT を CLKOUT として使用し、RA7/OSC1/CLKIN に抵抗器を接続して内部発振器を使用
; _RC_OSC_NOCLKOUT : FOSC2 = 1 / FOSC1 = 1 / FOSC0 = 0 ==> ER(External Resistor) : RA6/OSC2/CLKOUT を I/O として使用し、 RA7/OSC1/CLKIN に抵抗器を接続して内部発振器を使用
; _INTOSC_OSC_CLKOUT : FOSC2 = 1 / FOSC1 = 0 / FOSC0 = 1 ==> INTRC(Internal 4MHz OSC) : RA6/OSC2/CLKOUT を CLKOUT として使用し、RA7/OSC1/CLKIN を I/O として使用
; _INTOSC_OSC_NOCLKOUT : FOSC2 = 1 / FOSC1 = 0 / FOSC0 = 0 ==> INTRC(Internal 4MHz OSC) : RA6/OSC2/CLKOUT および RA7/OSC1/CLKIN を I/O として使用
; _EXTCLK_OSC : FOSC2 = 0 / FOSC1 = 1 / FOSC0 = 1 ==> EC(External Clock In) : RA6/OSC2/CLKOUT を I/Oとして使用し、RA7/OSC1/CLKINをCLKIN として使用
; _HS_OSC : FOSC2 = 0 / FOSC1 = 1 / FOSC0 = 0 ==> HS発振器(4MHz-20MHz) : RA6/OSC2/CLKOUT および RA7/OSC1/CLKIN を使用 ----
; _XT_OSC : FOSC2 = 0 / FOSC1 = 0 / FOSC0 = 1 ==> XT発振器(4MHz以下) : RA6/OSC2/CLKOUT および RA7/OSC1/CLKIN を使用
; _LP_OSC : FOSC2 = 0 / FOSC1 = 0 / FOSC0 = 0 ==> LP発振器(200KHz以下) : RA6/OSC2/CLKOUT および RA7/OSC1/CLKIN を使用

で、こんな感じで使う。
__CONFIG _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_OFF & _PWRTE_OFF & _WDT_OFF & _HS_OSC