• ベストアンサー

PICのAD変換場所

PIC16F819のAD変換したデータをPIC内に格納する際の格納場所ってどこなんでしょうか?例えばアナログの『ピ~』という音をAD変換してPICに格納する場合などです。。 もしくはPIC16F819に関する詳しいサイト・書籍などを知っている方いましたら教えて下さい。 ネットで沢山探しましたが16F819の情報があまりありませんでした。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nta
  • ベストアンサー率78% (1525/1942)
回答No.5

 CALLではありません。割り込み処理は割り込みベクターと呼ばれる番地に割り込み処理ルーチンのはいっている番地を指定します。処理の前後にいろいろなお作法があるのでこれをマスターする必要があります。ソースコードの例はURLにあります。しかし、初めての開発ではいろいろとまどうことがあると思います。いろいろな本を読んで勉強してください。  なお、今回の目的のシステムを考えると、まずハードウエア設計をもう一度見直す必要があると思います。外部メモリーやDAが必要だということはかなり製作の負担になります。もう少しグレードの高いCPUを導入した方が最終的には開発負担を減らすことができると思います。  プログラムの受託開発には百万円単位の設計・開発費が必要です。受託先はインターネットで「PIC 受託開発」などのキーワードで検索すれば見つかると思います。また、PICクラブという趣味の団体がありますのでここに参加してMLで先輩諸氏のご指導を仰ぐという手もあるかと思います。 http://www.picfun.com/

参考URL:
http://www.kimurass.co.jp/pic/0220.htm
全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • nta
  • ベストアンサー率78% (1525/1942)
回答No.4

プログラムを拝見しました。ウオッチドグタイマの処理などの細かいところは開発中だとおもいますが、参考意見をすこしだけ。 (1)ポートBの出力データをどのように処理するのかにもよりますが、一般に、DAデータを外部出力するときに出力タイミングを外部に知らせるストローブパルスを出す必要があります。 (3)DAのクロックの設定(ADCSレジスタ)ができていませんが、システムクロックにあわせて適切な値を設定する必要があります。 (2)サンプリングを8kHz(125マイクロ秒単位)で処理するには、割り込み処理を使わなければ、同じ時間間隔で動作させることは困難です。ジッターはかなり厳しく音質に影響を与えます。内蔵タイマモジュールを使って取り込み部分を割り込み処理に変更して下さい。 (3)D/Aのアクイジション時間(おそらくこれが20マイクロ秒の待ち時間の設定?)+変換待ち時間もありますから、これもタイマやAD変換終了の割り込み処理を使った方が、他の処理が複雑になったときに有利でしょう。 いきなりの割り込み処理のプログラミングは難しい場合には(2)の部分だけでも挑戦して下さい。

tfa
質問者

補足

(2)番の割り込み処理はCALLとかでジャンプするということでしょう? このプログラム完成するのにはまだまだ時間かかりそうに最近思ってきたのですが…。 ※PICのプログラムを有料(小額)で作成してくれるサイトとか知っていましたら教えて貰えませんか?

全文を見る
すると、全ての回答が全文表示されます。
  • nta
  • ベストアンサー率78% (1525/1942)
回答No.3

ごめんなさい。0.8秒ですから20Kバイトは必要ですね。DAコンバータを出力に付けるということなので、EEPROMの128kビット(32K×8ビット)製品のシリアル接続バージョンを搭載すればPICのポートが足りると思います。ただし、シリアル伝送のプログラムはやや難しいでしょう。また、そこまでするのであれば、PICマイコンのグレードを上げて内蔵メモリーの多い品種を選んだ方が最終的なコストは安いかもしれません。

参考URL:
http://www.renesas.com/jpn/products/memory/eeprom/index.html
tfa
質問者

補足

ありがとうございます。 一応、色々な資料を参考にしてプログラム作成してみたんですが…。自分の考えではポートA0にマイクを接続してポートA3,4にスイッチ、ポートB1にてAD変換後のデータを出力と考えています。その他、発信機やコンデンサを色々つければ動くかなと考えているんですが・・。 START BSF STATUS,RPO MOVLW 070H MOVWF OSCCON MOVLW 0EH MOVWF ADCON0 MOVLW TRISA CLRF TRISB BCF STATUS,PRO MAIN BTFSS PORTA,3 CALL PATAN1 BTFSS PORTA,4 CALL PATAN2 CALL PATAN3 GOTO MAIN PATAN1 MOVLW 081H MOVWF ADCON0 CALL TIME BSF ADCON0,GO CALL PATAN4 PATAN2 MOVLW ADRESH,W MOVWF PORTB,1 MOVLW ADRESL,W MOVWF PORTB,1 PATAN3 何もない状態(作成中) PATAN4 BTFSC ADCON0,GO GOTO PATAN4 GOTO MAIN TIME 20μ秒(作成中) RETURN END 間違ってる部分が少しあるかもと思っているんですが。 周りにPICの知識のある人が一人もいないのでお世話になってますがよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • nta
  • ベストアンサー率78% (1525/1942)
回答No.2

PIC内のメモリーがわずか256バイト(キロではありません)、EEPROMも256バイトのみです。内部には残せませんから外部にメモリーを搭載してください。信号処理をして圧縮する能力もありません(かけ算器がないので)から、8キロバイト毎秒で保存するとすれば、2キロバイト程度のEEPROMを外部に搭載すればいいと思います。圧縮作業をしないのでプログラム自体は簡単です。3kには十分収まります。

全文を見る
すると、全ての回答が全文表示されます。
  • nta
  • ベストアンサー率78% (1525/1942)
回答No.1

このCPUのデータシートをダウンロードしてご覧下さい。 ADRESL ADRESHと書かれているレジスタ(メモリーマップドIOですからメモリー上の1E,9E)にあります。ご質問の雰囲気からすると、AD変換されたデータが連続で格納されるようなイメージを持たれているようですが、データの連続取得はあくまでプログラムでおこないます。RAMは全部で256バイトとわずかですから、取得すると直ちにCPU外部に書き出す必要があります。長時間の記録が必要であれば外付けでEEPROMを搭載し、メモリーインターフェースも自分で作成して下さい。

参考URL:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1335&dDocName=en010227
tfa
質問者

補足

レスありがとうございます。 説明不足でしたがスイッチを2つ付けて1つを押したら音声を可能な限り(0.8秒位)録音(アナログをAD変換を用いてPIC内に保存)、もう1つを押したら再生されるという物を結果的に作りたいと思っています。再生する際にはポートBよりデータを出力して別にDA変換装置などを取り付けて行う予定です。録音したデータはいつでも再生できるようにPIC内に保存しておきたいと考えています。このプログラム作るのは大変なのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PIC AD変換

    pic AD変換の仕方。 PIC12F675を使ってLEDの点滅プログラムを作りたいのですが、 そのとき可変抵抗器をつないでAD変換すれば点滅速度を変えられる 用になると思うのですが、AD変換のプログラムがわかりません。 どなたか教えてください。 初心者なのでできるだけ解説付きで、できれば HI-TECH C言語でお願いいたします。

  • PICでのAD変換について

    PIC16F873を使って、入力信号のAD変換をして、基準値との差により、PWM信号を生成しようとしています。 変換結果の上位8bitがADRESHレジスタに格納されるということなのですが、PWMの周波数を確保するため、できればこの8bitの値をを7bitに落としたいと考えています。 何か方法があれば教えてください。

  • PICのPWMについてのプログラム

    先程似たような質問してしまいましたが変更します。 PICを使い外部からのアナログ音声約0.5秒をPIC内臓のAD変換機能を使用してPIC内に格納します。 元々スイッチを2つ付けて1つを押したら上記のようになり、もう1つを押したら格納されているデジタルデータがPWM波となりポートBから出力される物を作りたいです。 出力された波形はローパスフィルターを通りDA変換されてアナログ音が外部に出る。 『0.5秒しか録音できないレコーダ』みたいなものをつくりたいというのが全体図です。 AD変換やDA変換はなんとか解るのですがPICからPWM波を出力する回路(プログラム)がよく解りません。 知っている方いましたら力を貸してもらえませんでしょうか?

  • PIC18F4550でAD変換

    PIC18のAD変換を使用しているのですが わからない部分があるので質問させていただきます。 ・現象  リファレンス電圧は電源電圧+5V(Vdd)を使用し10bit分解能で行っているのですが90mV位(低い電圧のAD変換)の時の変換値がずれます。 ・測定方法  測定はテスターでPICのVss端子にGND、アナログ信号入力端子に+側を当て直接PICの足をさわっています。 ・結果  1023=5Vですので1=約0.0049V  0.097V=19を示して欲しいのですが17となります。  5V時は1023を示し2.5V時は511が出ており電圧を上げると計算通りに示します。  リファレンス(電源電圧)を意図的に変えてみたのですが低い電圧の時は変化がありませんでした。 上記点より低い電圧での変換では精度が出ないという事なのでしょうか。 またこのあたりの仕様が記載されている資料などありましたら宜しくお願い致します。

  • PICでAD変換すると電圧降下がおきます。

    現在PIC24FJにてAD変換をしようとしています。 AD変換の入力端子は、3.3Vで常時プルアップ(10KΩ)されています。 しかし、AD変換実行している時だけ、アナログ電圧が3.3Vから0V付近へ落ちてしまい、AD変換終了後は3.3Vに戻るというような現象が発生してしまいます。 AD変換のステータス自体は正常に完了したことになっており、デジタル値も実際の電圧(0V付近)が取得できています。 このような現象は、対処方がわからず困っています。 どなたかアドバイスをいただければ助かります。 よろしくお願いします。

  • AD変換する方法が分かりません

    真空計の出力端子にアナログ出力端子があります。そのアナログ信号をAD変換してFPGAに取り込み、真空計と同じ真空値をFPGA側にも表示させたいのです。 第1歩として、アナログ信号をAD変換させる方法が分かりません。 デジタル側は8bitで出力させたいです。 AD変換としてPICを使うべきか、それともAD変換専用の半導体を使えば良いかわかりません。 AD変換専用の半導体素子は、何を使えば宜しいでしょうか? 教えて下さい。

  • PIC AN端子

    PIC初心者です。16F627AなどにあるAN0-AN3などはアナログ端子=AD変換機能を持ってると考えていいのでしょうか?

  • PIC16F877A、AD変換について教えて下さい

    PIC16F877Aのデータシートの126ページ以下の式が記載されていますが どう計算したら記載どおりの答えになるのかがわかりません。 1、TC = -CHOLD ( RIC + RSS + RS ) 1n( 1 / 2047 ) 2、-120pF ( 1kΩ + 7kΩ + 10kΩ ) 1n( 0.0004885 ) 3、-120pF ( 18kΩ ) 1n( 0.0004885 ) 4、-2.16μS(-7.6241) 5、16.47μS ここでどうやったら3番から4番になるのかがわかりません。 分解して教えていただけると助かります。 また、該当ページの「注意3」という部分に 「アナログ信号用の推奨インピーダンスは10kΩ以下です。 これは、ピンのリーク使用を満たすために必要です。」 と記載がありますがAD変換するポートには 10k以下の抵抗をつけてくださいということでいいんでしょうか? よろしくお願いします。

  • PIC12F683 AD変換について

    PIC12F683のアセンブラの設定についてご教授ください。 以下のように設定したところGP4ピンにてAD変換できませんでした。 init MOVLW   07h MOVWF   CMCON0 BSF     STATUS,RP0 MOVLW   b'00111000' MOVWF   TRISIO MOVLW   070h MOVWF   OSCCON MOVLW   018h MOVWF   ANSEL BCF     STATUS,RP0 MOVLW   b'10001101' MOVWF   ADCON0 「MOVLW 018h」の行を削除すると問題なくAD変換動作します。 しかしその場合「ANSEL」に070hが入るのでGP4がデジタル 入出力になり動作しない用に感じますが、なぜか動作します。 動作するので問題はないのですが、なぜかすっきりしません。 原因が分る方がおられましたら教えていただけますでしょうか? .

  • 負電圧を正電圧に変換したい(PIC AD変換)

    PICマイコンを使いLCDにATX電源の電圧表示をする回路を組んでます。 使っているマイコンはAD変換付きの16F877です。 3.3V,5V,12Vは問題ないのですが、-12Vの測定で悩んでます。 まだ試してないのですが 1・別途AD変換ICを容易して-12VをGNDにする 2・分圧しOPアンプで反転・増幅して取り出す(出来るのでしょうか?) アドバイス・ヒントで構いません。よろしくお願いします。