• ベストアンサー

PICの処理の重さについて

質問します。PICでデータ通信(RS232C)や、PIC内での乗算などをしていますが、データを送受信するのと、PIC内で乗算する処理はどちらがPICにとっては負担となるのでしょう?

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

  • ベストアンサー
  • kuro804
  • ベストアンサー率29% (523/1762)
回答No.2

ANo1さんに対する回答で質問内容が明確になりましたのでそれに応えて。 まず、すでにPCとの通信のやりとりが実装できていれば問題点は データー転送と応答の一連の処理が時間的に間に合うか否かで、PC側に託せる仕事と、PIC自体でやらなければならない仕事が区別できるのではないでしょうか。 通常、このような場合は、PIC側で採取された基礎データを処理なしで全てをPC側に転送、PC側で全てのデータを管理し、処理の変更は可能な限りPC側で行えるようにし、PICは可能な限りシンプルに、外部I/Oの処理と通信処理、エラー処理に限定し設計すればいろんな面でメリットが生じます。 逆に、PIC側がシンプルに設計できない理由があれば、PC側に処理させるメリットは少ないでしょう。 *通信処理、エラー処理は結構技量が問われる魅力的なものです。  ハード、ソフトの両者から一目置かれる存在になります。  今もラジオでどこかの端末が障害を起こしたと伝えてました。銀行のATMでしょうか? RS232Cの処理時間の考察  安定性重視で速度を19200bps程度と仮定しますと2バイトで約1m秒、20バイトで0.01秒はかかります。 割り込みを使いリングバッファー方式なら技量は必要でしょうが処理の負担は倍精度演算ほどは必要ないでしょう。 しかし、送信データに対応した相手方の応答を必要とした場合はさらなる技量が要求されますがPIC自体の負担は少ないでしょう。

aoisango
質問者

補足

ありがとうございました!

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

その他の回答 (1)

  • P0O9I
  • ベストアンサー率32% (693/2146)
回答No.1

PICの種類やプログム方式で変わってきます。 乗算命令を持っているPICで、その精度でよければ1命令で実行できます。高精度が必要であったり、乗算命令持っていない場合はライブラリを使い、数十~数百ステップかかります。データ通信も割り込みを使うか、どうか等で大きく変わります。 必要ならアセンブラレベルにして、ステップ数を数えるとかかる時間を得ることができます。PICは通常外部素子にアクセスしたり、キャッシュメモリ等を持っていないため、ステップ数×1ステップの時間 で正確にかかる時間を計算できます。 しかし、データを送受信と、乗算演算の時間を比較して、どういう意味があるのですか。

aoisango
質問者

お礼

ありがとうございます。データをPICからPCに送って計算させてPIにもどすか、PIC内でデータの計算させるのとでは、どちらがPICに負担をかけないのか知りたかったので質問しました。PIC内では他にもさまざまな処理を行っています。

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

関連するQ&A

  • PIC間の通信について

    12ビットのAD変換を1つのPIC(PIC16C771)で行い、 その変換後の値をもう1つのPICで処理したいのですが、PIC同士ではどのような通信を行えばよいのでしょうか? よろしくお願いします。

  • VB EXPRESSで RS-232C扱えますか

    趣味でPICを使って色々小物を作って楽しんでいます。 パソコンとPICをつないでいろいろやりたいんですが、いまのところ RS-232C経由でハイパーターミナルで送受信するだけでいまいちです。 そこで質問ですがVB EXPRESSで作ったプログラムで RS-232C通信経由でPICと送受信できるんでしょうか? 尚、VB EXPRESSはつい最近はじめたばっかりで入門段階です。

  • PIC16F877内蔵USARTが受信しない

    PIC16F877です。 [環境]  MPLAB IDE 6.6  CCS 3.15  WinXP sp3 送受信ピンは専用ピンに割り当て、内蔵USARTを使ってRS232C通信しています。 PICから相手機器にコマンド発行し、相手から応答データが帰ってきていますが、 kbhit()を確認してもHighになってくれません。 PIC入力ピンをオシロで当たって波形も確認済み、また信号ラインをシリアルモニタで 受信データラインを横取りして確認してもデータは正常に読み取れていますので、データは 正常だと思います。 同じような経験をお待ちの方はおられませんか? よろしくご教授、お願いします。

  • pic-パソコン間のシリアル通信

    PCからあるいはPICから操作を行って何かやりたいと思い、USART機能を持ったPICを使ってPICとPC間でシリアル通信を行いたいと思っているのですが、回路設計で悩んでいます。 PCのRS232Cシリアルインターフェースとの接続をするために変換回路を作りたいのですが、PIC関連の書籍のほとんどが変換用の専用ICを用いているのですが、なるべく安価な部品(抵抗、ダイオード等)で実現できないか考えています。 PIC→PC への方向の通信 PC→PIC への方向の通信 PIC⇔PC への双方向の通信 以上の3パターンでICを用いないでできる定番の回路、もしくは実現可能だと思われる回路などがありましたら教えていただけないでしょうか。

  • RS232通信 PIC-PC間

    PICからの数値データをPCにRS232で送信しようと考えているのですが、 putc関数(puts)を用いてitoa関数で数値を文字に変換してから送信しようとしたのですが、 itoa関数の部分でプログラムが止まってしまいました。(たぶん重かったのではないかと思います。) PIC内で重くなく数値を文字に変換する方法か、RS232通信を用いて数値を送る方法があれば教えてください。

  • 離れたPIC同士のシリアル通信の回路でのPICの…

    離れたPIC同士のシリアル通信の回路でのPICの破損について 5m離れた2つのPIC間でシリアル通信(9600bps)をする回路を作りました。 単にそれぞれのPICの内蔵モジュールのTXとRXをたすきがけしただけの回路です。 また、メインの電源は12Vで、それぞれのPICの近くにそれぞれ専用の7805を配置してPICに5Vを供給しています。 また、2つのPIC間のケーブルはコネクターで取り外せるようになっており、同ケーブルにはシリアル通信(送信、受信)、+12V、GNDの計4本の線で構成されています。 この状態で特に問題無く通信はできているのですが、ふとしたことでPICの内蔵モジュールが破損することがあります。 同じ回路を2セット作りましたが、同様に破損してしまいました。 多分、コネクタを抜き差しするか、或は電源を投入、切断のタイミングではないかと予測しています。 (詳しくは、参考URLの図をご覧ください。  図には電源のコンデンサなどは記載していませんが、それぞれ適宜、配置してあります。) 尚、2つのPIC付近の7805には、PIC以外にそれぞれ違う消費電流の負荷が接続されています。 そのため、5Vに安定するまでの時間に違いが出てしまい、結果、内蔵モジュールの規格外の電圧がかかってしまうのかと予測しています。 ここで質問です。 ・このような状況の場合、PICが破損する原因はどのようなことが考えられるでしょうか? ・解決策はどうしたら宜しいでしょうか? まだ試していませんが、MIDIのようにフォトカプラを使用するか、RS-232Cトランシーバを使用するか等を考えておりますが、なるべく簡易で確実な方法をとりたいです。 宜しくお願いいたします。 http://box.c.yimg.jp/res/box-s-vboqi4x6dy2zfrx7fyns5aqghq-1001?uid=5c9c0a84-d898-45e4-8d4b-df319ca25f24&etag=5c2f1b99137520886935391

  • PICのIOピンからの電流回り込み

    2つのPICのIOピン同士を繋いでRS232C通信を試みています.PICはPIC16F877を使用しております.最初は片方のPICのみに電源を与えて動作させ,しばらくしたらもう一方のPICに電源を与えて動作させたいのですが,片方のPICのみ電源をONにすると,IOピンから電流が流れ,もう一方のPICが動いてしまいます.電流の回り込みという現象らしいのですが,回路でどのように対策したらよいか,方法がわからず困っています.何か方法をご存知の方,ご教授お願い致します.

  • PIC-PCシリアル通信プログラム

    PICとPCでRS232のシリアル通信を行おうとしているんですけれど、 PICからPCに文字列を送ろうと たとえば PIC側からプログラムで puts("A\0");とデータを送信して ReadFile()関数でPC側で受信しているんですけれど、 受信したデータを画面表示されると Aフフフフフフフフフフフフフフフフフフフフフフフフと表示されてしまいます。 ちなみに送信データをNULLだけにしても フフフフフフフフフフフフフフフフフフフフフフフフフを表示されます。 これを解決する方法がわかりません。 どなたか教えてください。

  • PICでのI2C通信でのマスタ、スレーブの切り替え

    現在PIC18F2550同士で、I2C通信を行いたくアセンブラでプログラミングをしておりますが、教えていただきたい点があります。 ・マスターとスレーブは動作中に入れ替えることはできないのでしょうか? RS等から任意の信号を与えると、マスタとスレーブが切り替わるようなことがしたいのですが、どの書籍をみてもそのような事ができるとは書いてなく困っております。 ・PICだけでなくI2C通信を行うことのできるマイコンorCPU(プログラミングが簡単で高速動作できる)はあるのでしょうか?あればお教えいただきたいです。 以上よろしくお願いいたします。

  • PIC18F2550でのUSARTの使い方について

    フリーのC18コンパイラで電子工作をしています。 今回18F2550でシリアル通信に挑戦していますが、自分の目的の動作のためのレジスタ設定が理解できません。教えて下さい。 動作内容はPICからシリアル通信でデータを送り12ビットシリアル-パラレル変換の「NJU3714」でシリパラ変換させることです。PICのデータ受信は今のところしないつもりです。

このQ&Aのポイント
  • カラーインクが切れているにもかかわらず、モノクロ印刷をすることができないトラブルが発生しています。
  • Windows10のパソコンを無線LANで接続しており、関連するソフトやアプリは特にありません。
  • このトラブルが発生しているのは、ブラザー製品に関する質問です。
回答を見る