2006年11月17日

PIC16F88でアナログ入力 @ 電子工作

今後のために、PIC16F88でアナログ入力をしたくて試しているのですが、上手く行きません。while(GO_DONE == 1){}のループから抜け出せないようです。設定に関して分かってない部分があるので、何処か設定が抜けているのだと思うのですが、分かりません。色々なパターンを試したり、他の所で見付けた仕組みを試したりしているのですが、ダメ。

以下、sdcc用のソースです。

#include <pic16f88.h>
int at 0x2007 __config = _INTRC_IO & _LVP_OFF & _WDT_OFF & _PWRTE_OFF & _CP_OFF & _BODEN_OFF &_MCLR_OFF & _CCP1_RB3;

int result;

void main( void) {

OSCCON |= 0x70; //8MHz internal clk

ANSEL = 0x01; //AN0使用
TRISA = 0x0F; //アナログ入力

ADCON0 |= 0x81;
ADCON1 |= 0xc0;
ADRESH = 0; ADRESL = 0;

TRISB = 0x00;
PORTB = 0x00;
result = 0;

while(1){
GO_DONE = 1;
while(GO_DONE == 1){
PORTB=0x02;
}
// result = (ADRESH << 8) + ADRESL;
PORTB= ADRESL;
}
}

何故動かないのか分からないのでお手上げです。(T_T) やはりアセンブラを勉強した方がよいのかな。

・・・

えぇ〜っ、マジかよ。二時間近く悩んだのに、Linuxでコンパイルしてみたら、普通に動きました。(T_T) この二時間は何だったんだ。どうやらMacのsdccは上手く動かないみたいです。基本的なポートの出力するプログラムは問題ないのですが、その他はダメっぽい。通信関係もダメなので、アナログで入力したデータをRS-232Cに出力するなんて事は二重にアウトですね。まぁ、でもLinuxマシンでコンパイルすれば動くようなので、コンパイルはLinuxマシンで行います。Macでログインして、PICへのプログラム書き込みはWindowsって・・・。物凄く面倒なことをしている感じがします。(^_^;)

部品の選別とか作ったモノの挙動を計測する手段が欲しかったので、上記のプログラムに通信機能を付けて、RS-232Cでデータを出力する形を作ります。

上記のソースとは若干違うのですが、一応HEXファイルの内容も下に書いておきます。AN0のアナログ入力データ値をBポートに接続したLEDに出力します。但し下位の8ビットのみ(ADRESL)です。

可変抵抗のセンターをAN0に繋ぎ、両サイドはそれぞれ、+5VとGNDに繋ぎました。Bポートには300Ωの抵抗+LEDを8組です。アナログ入力が出来ていると言うことの確認だけなので、問題なし。今回は内蔵クロックを使っているので、セラロックは外しました。

起動すると先ずはLEDの点灯チェックとして何回か点滅し、その後、アナログデータの取得状態に入ります。デバッグ状態確認用のコードが入っていたりするのですが、余りにも高速に切り替わっているので肉眼では分からないですね。(^_^;)

:020000040000FA
:0600000000008A118828AF
:06000A00703083160313A1
:100010008F0401309B000F308500813083129F04D4
:10002000C03083169F0483129E0183169E018601B1
:100030008312860183120313A001A1015C201F1506
:1000400083120313A6011F19A60A2608013A031DED
:100050002E280230831203138600202883120313F4
:100060001E0883120313A900A600A701A801831686
:1000700003131E0883120313A6002807A0002908F3
:10008000A100A7010318270FA107831603131E0859
:10009000831286007920831203132108803E7E3E5E
:1000A000031D542801302002031C1F280430831232
:1000B000031386001F28080083120313A401A5015F
:1000C0002508803E803E031D672804302402031863
:1000D0007828FF30831203138600792083120313DC
:1000E0008601792083120313A40A0319A50A602844
:1000F0000800103083120313A2002730A300FF3042
:10010000A207031CA30322082304031D7F28080061
:040110008A11052823
:02400E00182F69
:00000001FF


こんなプログラムを試す人も居ないと思いますが、一応注意書きをしてきます。このプログラムを利用される場合は、十分に内容を理解してご利用下さい。これらのプログラムを使用していかなる損害が生じたとしても、当方では責任が取れません。ご了承下さい。

閲覧数: 8285 / はてなブックマークusers

blog comments powered by Disqus

関連日記

アマゾン広告

この日記ページは閲覧数などの条件に応じて、閲覧制限を行っています。他からリンクしていただいても、そのリンクから辿った閲覧者が当ページの内容をご覧頂けない場合があります。ご了承下さい。

▼日記検索

Mac

Shade

3D

Flash

ゲーム

ウェブ

音楽

映画

デジカメ

Windows

Linux

携帯電話

テレビ

広島

電子工作

iOS

▼ 最近のトラックバック

▼ランキング

▼関連サイト