■ プログラミング製品のサポートについて
プログラムを作る各種製品、PicBasic Pro Compilerや、mikroCなどについてのご質問、もしくは当方製品をお買い上げ後にその製品についてお客様でプログラムを作成した場合のプログラム内容に関するご質問については当方では承っておりません。 当方では基本的に「ソフトウエア本体のインストール方法とプログラミングに関わらない使い方」についてのみご案内致しております。ソフトウエアのインストール方法や設定方法、コンパイル方法のご案内等については当方よりご案内しております。
プログラミング内容に関するご質問、エラーの解析、ワーニングメッセージの解析、プログラミングの仕方やコンパイラーの仕組み、プログラミング手法、PICマイコンの使い方についてのご質問は当方ではお答え致しておりません。各製品のサポートフォーラム又は開発元の公式サポートをご利用頂くことになっております。
原則としてプログラムの内容やプログラミングに関するご質問については当方ではお答え致しておりません。プログラミングに関する技術的なご質問についても当方では原則としてお答え致しておりません。例えば下記のようなご質問については原則としてお答えしておりません。
・「○○のように動くプログラムを教えて下さい。又はサンプルを送って下さい」というようなプログラム作成に関するご質問。
・作ったプログラムを添付して「どこが悪いかデバッグしてください」「○○のように動くようにしてください」というご質問やご依頼
・「プログラムを作ったが動かないので、動くようにしてください」というご依頼
・「このように動かすつもりで作ったが思うように動作しないので、どこが悪いか教えてください」というご質問
・「○○のようなプログラムを記述した時、こんな動作をしたが正常かどうか、又はどうしてごのような動作をするのか」というようなプログラム内容に関わるようなご質問
・「この部品を使いたいのでこの部品で動くプログラムを紹介してください。又はプログラムを手直ししてください」というようなプログラムの作成や内容の確認、デバッグ、検証が必要になるような作業を含むご質問
・エラーメッセージが表示されている、ビルドができないなど、エラーの原因を教えてほしいなどプログラムの内容に関わるエラーやワーニングについてのご質問
その他、当方でお答えできないと判断したご質問についてはお答え致しかねる場合があります。 上記のようなご質問をお寄せ頂いても当方からはご回答できませんので、あらかじめご了承ください。
プログラミングについては、様々な条件や使用しているデバイス、ハードウエア環境などによってその動作や内容が変わり、不確定・不確実な部分が多く、当方からある特定の事象だけ(例えば○○が△△のように動作しないなどの個別プログラムの動作に関する事例、事象)を勘案して回答をすることは適切でないと考えております。 また、プログラミングに関するご質問に対するご案内、回答はその内容が、直接最終的な"機器の動作"に直結することがあり、バグを含む瑕疵責任など、責任問題に抵触することがあるため、当方からの回答はしないことを原則としております。
プログラミングについてのご質問については下記の製品の開発元が開設しているフォーラムでは多数の記事が投稿されており、ほとんどの解決方法が見つかります。 また、ご質問の前に必ずデバイスのデータシートをお読みください。データシートをお読みになることで問題が解決できることがあります。
また、エラーメッセージをGoogle等の検索エンジンで検索するとほとんどの場合関連するページやフォーラムの投稿記事が検索され、そこに原因や解決方法が出ています。まず最初にそのエラーメッセージやワーニングメッセージで検索することをお試しください。
●PicBasic Pro Compilerの場合 http://www.picbasic.co.uk/forum/forumdisplay.php?s=f2719d812983911a3fe82e8a194ad82f&f=4
フォーラムに記事がない場合、ネットで検索しても解決先が見つからない場合にはフォーラムに新規に記事を投稿して世界中のユーザーからの回答を待ってください。もしフォーラムに投稿せず直接メーカーのサポート担当者に問い合わせしたい場合には、下記のメールアドレス宛にメールをお送りください。 なお、文章は英文となります。ご質問内容は英文でお書き下さい。お答えも英文となります。 また、ソースファイルを添付する場合には、必ず拡張子を.TXTに変更してテキストファイルとして添付をお願い致します。メール本文にソースコード等を記述されませんようお願い致します。
support@melabs.com
●mikroCやVisualTFT,VisaulGLCDの場合 http://www.mikroe.com/forum/
"Search"リンクよりキーワードを入力して関連する記事を検索できます。その際、"Forum"のプルダウンから検索するフォーラムを"mikroC PRO for PIC General"又は"mikroC for PIC General"に絞り込むことで記事の検索範囲を絞り込むことができます。 まずはフォーラムで記事検索をしてください。
http://www.mikroe.com/forum/
フォーラムで解決策が見つからない場合には個別にサポート担当者に問い合わせることができます。 問い合わせはチケット制です。下記のURLからお手続きください。
http://helpdesk.mikroe.com/
お問い合わせにはユーザー登録が必要です。右上にある"Sign in"の部分をクリックします。"Need an account? Sign up."をクリックして新規にアカウントを作成してください。 アカウントを作成したらログインします。
"Start a conversation"をクリックし、"Technical Support"から進んで質問事項を入力して担当者にお問い合わせ下さい。
●PICマイコンそのものについてのご質問
PICマイコンの使い方そのものに関するご質問は、マイクロチップ社の技術サポートが行っております。PICマイコンの使い方や設定方法等は、データシートにすべて記載されており原則、データシートを読むことをおすすめします。また、PICマイコンは型式が異なっても共通する内容が多くありますので、インターネット等で情報を検索すると解決策が見つかります。
http://www.microchip.co.jp/support/tech-help.php
------------------------------------------------------------ ☆サポート問い合わせのコツ
サポートに問い合わせる場合、またはフォーラムに投稿する場合には、より具体的にお書きください。
・何をした時に ・どんな現象が発生し ・どんなエラーが表示されるのか?
・どんなプログラムを記述した時に ・どんな現象が発生し ・具体的にはどのようにしたいのか?
エラーが表示される場合、たとえば「I get an error message when file is compiled.」だけでは、どんなエラーなのか分かりません。よって「Below is the messages accompanying this error.」などと記述してエラーメッセージの内容もその下に記述してください。
その他、プログラムについてご質問になる場合には、プログラムの一部だけを抜粋しても前後の関係があるので分からない場合があります。できる限り、問題となっている部分を中心にしてプログラムを短くした上で全体がわかるようにプログラムソースを提示することをおすすめします。しかし、エラーとは関係ない部分が大量に含まれていると全体の見通しが悪く、回答が得られない場合があります。
よくサポートフォーラムなどを見ていると、「うまくいきません」や「正しく動作しません」と記載しているケースがあります。(例:This library does not seem to work fine.)しかし回答する側からすると、「何が」「どのように」うまくいかないのか分からず質問が繰り返されている例を見かけます。うまくいかない「内容」を具体的に記述するようにすると、的を得た回答が得られます。また、逆に「どのようにした場合はうまく動作するが」「このようにすると、このようになってうまくいかない」など色々と試行してみた結果も併記すると回答がつきやすいです。
---------------------------------------------------------------
まずプログラムが思うように動作しない・・という場合には次のことを試してください。
[1]プログラムを最小限短くする
例えばある程度プログラムを作って、動かしてみて「○○も△△も動作しない・・」となってしまうとどこに問題があるのかわかりにくくなります。 まず最初にプログラムを「○○が動作しない」という部分だけに削り、その部分だけをデバッグしてみます。そこが動作しない結果、△△の部分にも影響を与えている場合があります。 基本はまずプログラムは最小限の小さくしながら、各機能を試しながらそれを組み合わせる感じで長くしていくことを基本としてください。
多くの問題はほとんどこれで解決します。例えば「IOピンが思ったように動作しない・・・」という場合、当然その「IOピンを使って処理を分岐するように書いたプログラム」であれば、その分岐処理も期待通りには動作しないでしょう。 このような場合、まずはIOピンだけのプログラムを書きましょう。例えばPORTAの入力値をそのままPORTBに出力するプログラムを書いてみる・・・
TRISA = 0xFF; TRISB = 0x00; PORTB = PORTA;
さあこれで動作するでしょうか。もし動作しなければ原因を探すことになります。 一番多いのが次の[2]でも記載していますが、ポートがデジタルIOになっていないことです。PICは電源投入時やリセット後、ピンがアナログ入力モードになっていることが多くデジタルIOとして使う場合にはレジスタによる設定が必要です。PIC16F1939を使っていたのならば・・・
ANSELA = 0; ANSELB = 0;
この2つをプログラムの先頭部分(mikroCならばmain関数の最初)で記述しないといけません。 これで再度実行すればプログラムは動くようになったはずです。 もし、これでも動かなければコンフィギュレーションビットの設定が誤っているのかもしれません。
最小限簡単にしたプログラムが動作したら、次のステップに進みましょう。少し機能を追加して思い通りに動作するかどうか確認します。そこで詰まったら再度その部分だけを切り取ってデバッグしたり、データシートを読み返してみましょう。
長くなったプログラムのデバッグはとにかく大変です。疑われる場所が複数あると、どこが悪くてどこが正しく動いているのか分からなくなり、行き詰まってしまいます。少しずつプログラムを確認し、動作確認ができたら次のプログラムを継ぎ足して・・・とすこしずつ大きくしていくように作ればデバッグが楽になります。
[2]サンプルプログラムをそのままコピーして使ったり、別のPIC用に作られたプログラムを移植しない
よくあるのがこの問題です。 サンプルプログラムはプログラミングの際とても便利ですが、それをそのまま使ったり、そっくりコピーして思ったように動作させよう・・というのは難しい話です。サンプルプログラムはあくまでも一例でありその内容がすべてのケースで使えるわけではありません。 また、別のPIC用のプログラムを移植させている場合にもトラブルが多く発生します。
これは先に書いたとおりこれらは「プログラムを徐々に長くながらデバッグ」したわけではないからです。少しずつ、1つずつ動作を確認しながらプログラムを長くしてきた場合、どのあたりに問題があるか検討が付きやすいですが、長いプログラムのそのままコピーしたり別のPIC用に移植すると、いきなり長いプログラムを実行することになり、もしそのプログラムが思ったように動作しないとどこに問題があるのか切り分けがすごく難しくなるということです。
「PIC○○で動いたプログラムをPIC△△用にコンパイルして書き込んだけど動かない!」ということがあります。PICはデバイス毎にレジスタの設定内容が違ったり名前が異なったりしています。あるデバイスで動作したプログラムをそのままコピーして別のPIC用にコンパイルしてうまく動作するケースはごくまれです。PICが変わったのであれば、できれば1から作り直すことをお薦めします。
例えばTMR0を使ったプログラムの場合・・・PIC16F1939で作ったプログラムがあったとします。 TMR0のプリスケーラ分周比はPIC16F1939ではOPTION_REGレジスタのビット0〜2で設定します。
このプログラム同じピン数のPIC18F45K22に移植したとします。しかしPIC18F45K22ではプリスケーラの分周比設定はT0CONレジスタのビット0〜2で設定します。
そのまま移植してもプリスケーラの分周比を設定するレジスタが違うので正しく設定の記述を変更しなければ動作しないのは明白です。1からプログラムを作るとこのあたりは1つ1つ確認しながら作り込みますので違いの気づきますが、そうでないと見落としてしまいがちです。
[3]データシートを確認する データシートは必ずご確認ください。特に重要なのはPICの場合電源投入時多くのデバイスで、ピンがアナログ入力モードになっている点です。 アナログ入力とはADコンバータの入力ピンです。この設定になっているピンはデジタルIOとしてプログラムから出力をしたりピンの状態をプログラムで検出することはできません。プログラムの先頭部分で必ずデジタルIOピンとしての設定をレジスタで行う必要があります。これをしない場合プログラムが全く思い通りに動かないということになります。 設定はある程度デバイスファミリー間では同じですが、異なるファミリーのデバイスでは設定するレジスタが異なります。 例えば、PIC16F1939などエンハンスドPIC16シリーズ、PIC18F(K,J)などの場合には、ANSELAやANSELBといったレジスタ、PIC16F887などややレガシーなデバイスではANSELH、ANSELレジスタで設定します。さらに古いタイプのPIC16F877AなどではADCON1レジスタで行います。 ご使用のデバイスがどのレジスタを設定すればデジタルIOにできるか、などはそのデバイスのデータシートを見る以外方法はありません。 「うまく動作しない!」という場合には必ずデータシートをお読みください。
[4]コンフィギュレーションビットの設定を確認する PICを使う上でコンフィギュレーションビットの設定は欠かせません。適当な設定値で使うとプログラムは正しくても全く動作しなかったり、勝手に動作周波数が4逓倍されていたり、Watchdog Timerでリセットがかかってタイマの動作がおかしくなったり・・・と原因を複雑にする様々な問題を引き起こします。 コンフィギュレーションビットの設定もデバイスにより「まちまち」です。ある程度の共通した項目はありますが、デバイスによって設定内容はことなるため、データシートの参照が不可欠です。またインターネットなどでも情報を手に入れられますので、使っているデバイスの型式で検索をしてみると解決策があるかもしれません。
|