昨晩から12F675を弄っていたのだけど、
何点か手こずった点があったので忘れないうちにまとめておきます。
手こずった点
1.久しぶり過ぎて環境を思い出せないw
2.内部クロックを使う設定がうまくいかない
3.出力が思うようにいかないピンがある
4.AD変換の使い方
1.
自分の過去の記事を参照にして(GJ 書いててよかった(^_^;))
コンパイラは「mikroC」
書き込みは「PICProg4U」 を利用していた事が判明!
パソコン内を探したところ、
過去に作ったコード、デバイスの自分用設定値ともに無事発掘。
PICProg4では、
設定プログラマ⇒JDCプログラマ
デバイス ⇒PIC12F675
のみ設定変更
今度USBメモリでも買って、ツール一式を入れておくようにしよう。
2.
プログラムを書きこんで回路を動作させても反応なし
全IOポートをオンオフするプログラムでもどのポートも反応なし
これはクロックが発生していないと判断して調査を開始。
「mikroC」のConfig設定で
・_HS_OSC
・_INTRC_OSC_CLKOUT
を同時に設定してしまっていたせいで _LP_OSC の設定として出力されていた様子
PICの仕様書
REGISTER 9-1: CONFIG . CONFIGURATION WORD
の項を参照すれば一目瞭然で判るのですが
mikorCのぽちぽち選択する方式しか見ていなかったので
4Mhz ⇒ HS
内部 ⇒ INTRC と思わず両方設定してしまっていました。
注意点:OSC絡みの項目は どれか一つだけを選択します。
3.
GPIO.3の出力が全くされていません。
仕様書をよくみると GPIO.3 は入力専用PINです。(I/Oじゃ無いやん!)
REGISTER 3-2: TRISIO の項辺りに
Note: TRISIO<3> always reads 1
The exception is GP3, which is input only and its
TRISIO bit will always read as '1'. Example 3-1 shows
how to initialize GPIO.
しょうがないので今回SWのinputピンに割り当てました。
次に、GPIO.0 GPIO.1 の出力が弱い・・・・
んーコレは悩みました。 12F629ではこんな事なかったから・・・
ということは 629との差分機能に関することか! と思い至り調べたら
12F675では
デフォルトで GPIO0 と GPIO1 のピンがコンパレータに接続されています。
6.2 Comparator Configuration の項で CMCON 下3桁 000 の場合を参照
何も追加機能をデフォルト設定にしなくてもいいじゃないですか(涙)
12F629からプログラムを移植する人! CMCONは必ず設定すること!!
コンパレータを利用するとき以外は
CMCON = 0b00000111 を設定する事!!
これで無事思ったとおりの出力を得られました。
4.
まぁこれは手こずったというか、
最初 ADCON0 レジスタを操作して
ゴチャゴチャやっていてめんどうだな~(-_-;) と思っていました。
ところが! 途中でmikroC のライブラリで Adc_Read というLibraryを発見!
コレは凄いです。
今までの ポート充電、取得命令、ウェイト、計測 の作業を
変数 = Adc_Read(取得したいポートの番号); ※変数は unsigned int で用意
の1文で完了です。 あまりの事に笑ってしまいましたw
肝の部分は
TRISIO = 0b00000001; ?インプットピンにして置くこと
ANSEL = 0b01000001; ?ADピンの宣言をして置くこと
ADCON0.VCFG = 0; ?PICの電源を比較対象とする
ADCON0.ADFM = 1; ?取得結果(10bit)を右詰に
PWM_wid1 = Adc_Read(2);
これで無事取得。
以上の点をクリアして在順調に開発作業を継続中。
プログラムした内容が
素直に回路で動作してくれるようになればこっちのもんです。
今回は完全に私のメモでしたね (`・ω・´)ゞ