
No.1ベストアンサー
- 回答日時:
>arduinoって同時にプログラム実行できないんでしょうか。
できません。
ちなみにマルチコアなどでない限りPCでも同時に実行できるのは1つの命令が基本です。
# 最近はマルチコアも普通になってきていますが。
>例えばシリアル通信中にLチカをして通信状態確認するとか。
処理を細切れにして実行するようにスケッチを作成すれば可能です。
シリアルの受信バッファにデータがあったら1文字(1Byte)読み込んで配列に格納。なかったら次の処理へ。
時間を取得して、前回のLED点灯(または消灯)から一定時間過ぎていたらLEDを消灯(または点灯)。
シリアルからの受信データがある程度貯まったら内容判定して必要な処理を実行、
というかんじでループ中に細切れに処理していきます。
# シリアル送信も1ループ中に1文字(1Byte)だけ送信。とか。
No.3
- 回答日時:
回答が難しいですね…。
マルチコアでないので、本当に同時に、任意のプログラムを実行することは、できません。
ただし、
本当に同時に実行していなくても、数ミリ秒程度の間隔で別のプログラムを順に実行すれば人間の目には同時に見えます。
これはPCでも行っていることです。あまりArduinoでこれ(時分割マルチタスク)を行うのは一般的ではないですが、やってできないことはないでしょう。
もうひとつ、プログラムを実行するのはマイコンの中のCPUですが、マイコンにはCPU部の他に周辺機能(ペリフェラル)があります。
マイコンによってできる機能は違いますが、大抵のマイコンではシリアル通信をするとかPWMでLEDを点滅させるとかの作業がプログラムの実行と同時にできます。
No.2
- 回答日時:
arduinoのCPUは、マルチコアではないので並列処理はできません。
代わりによくあるパターンとしては、受信割り込み、タイマー割り込みなどの割り込みを使います。
割り込み処理中はメインスレッドは停止していますが、
メインスレッドからみると自分が行っている処理とは無関係に処理が進んだように見えます。
割り込み処理は、並列実行と同じような問題(2つの処理が同じ変数にアクセスする場合に
何も考えずに作るとデッドロックするなど)が発生しますが、それらに気をつけるとよいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
命令網羅率の計算問題です
-
プログラム言語FortranとCの違...
-
【有効数字について】 授業で、...
-
携帯電話の略語であるMBって英...
-
文字の容量(サイズ)についての...
-
かけ算(わり算)と足し算(引き算...
-
ジークアクスのサイコガンダム...
-
EXCEL16進⇒浮動小数変換したい
-
GB と Gbの違いの意味
-
実行計画の「COST」と「BYTE」...
-
KBのMB違いって
-
ダウンロード時間の計算方法
-
エクセルでビット1をカウント J...
-
1TBHDDに音楽ファイルは何ア...
-
計算方法を教えてください!!
-
【暗号資産】Bitcashって仮想通...
-
2バイト文字を一括削除するマクロ
-
1秒は何ミリ秒とか、単位変換の...
-
情報科学
-
アホな質問なんですが・・・(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラム言語FortranとCの違...
-
arduino
-
64ビット化による処理速度低下...
-
組み込みCプログラムで実数型
-
CPU、Z80からステート数から...
-
CPUのHTについて教えてください。
-
アセンブリ言語で。
-
COM1(RS232C)とUSB仮想COMポー...
-
VBSとVBA
-
H8Sで割り込み発生時の飛び先ア...
-
ステート数とは
-
PICマイコンのプログラムについ...
-
+=と÷=の処理速度の謎を教え...
-
パイプライン処理の処理能力に...
-
応用情報技術者試験問題の解き...
-
マイコンのビット数とクロック数
-
私は
-
任天堂64の64 CPUの仕...
-
IPCについて
-
MIPS と クロック周波数の換算方法
おすすめ情報