*

1台のarduinno nanoで割込みとSPIの同時使用

公開日: : Arduino, C言語, RaspberryPi, 開発

どもです。
先日手に入れたArduino nano(中華)で遊んでいます。
今回、この1台のArduino nanoで割込みとSPI通信を行ってみたので、その内容について書いてみます。

1.作業環境と使用デバイス
割込みとSPIを行うので、割り込み信号を発生させるデバイスとSPI通信を行うデバイスをそれぞれ用意します。
(もちろん1台で全て完結させることもできる…かもしれませんが、今回は別デバイスで行っています。)
で、実際に用意した構成が下記。
arduino_spi_and_interrupt

開発環境自体は、次の通りです。
<PC>
(HW)
CPU:Intel(R) Core(TM) i7-3770L 3.5GHz
メモリ:16.0(GB))

(SW)
OS:Windows7 Professional SP1 (64bit)
Arduino IDE:Ver.1.8.9
Eclipse : Ver.2019-12(4.10.0) (Build:20181214-0600)

<Arduino>
Arduino nano(中華版)

<RaspberryPi>
H/W:Raspberry Pi 3 model B
OS:Stretch – [2018-04-18-raspbian-stretch]

2.何のために?
これまで書いてきたエントリで、ArduinoからRaspberryPi3に対してSPI通信でデータを送信する方法を書いてきました。
なので、次は組み込みでよく使う機能である「割込み」について調べてみることにしました。
なお、実際の開発現場では、「通信」と「割込み」は当然ながら1つのデバイスに実装されます。
Arduinoでそれを実現できるか、実現するためにはどうしたらいいか、ということを調べるためです。

3.何をした?
Arduinoが2台手元(いや、実際にはもう数台ありますが…あ、どーでもいいですね)にありますので、一方で割込み発生用の信号を作ります。
もう一方のArduinoでは割込み発生回数をカウントし、かつSPI通信で割込みの発生回数をRaspberryPi3に送信します。
RaspberryPi3では、単純に受信した割込み回数を表示します。

4.やってみた
今回作成したコードですが、「キモ」になる割り込み/SPIの両方を実施するArduinoのもののみを載せます。
(他のコードは、これまで紹介してきたものとほとんど変わらない、あるいはとてもシンプルなので、割愛します。)

5.何をしている?
「何をしている?」とは書いていますが、やっていることと言えば、これまでの記事で書いてきた内容を、ただただ結合しただけ、です。

ただ、1つだけ説明しておく箇所があるとすれば、それはloop()内の、

です。
以前のSPI送受信サンプルでも書いたと思いますが、SPI通信が実行された際にバッファの先頭から順番に送信されるためには、SPIのデータピン(SPDR)に事前にデータをセットしておく必要があります。
上記コードは、そのための処理になります。
また、バッファのindexを1にセットしておくことで、SPI割り込みが発生した際に、SPDRにセットされたデータの次のデータが送信されます。

6.まとめ
今回のエントリでは、1台のArduinoで信号割込みとSPI通信(いや、SPIも割込みなんだけどね…)を同時に行うことに挑戦しました。
次回は、割込みを違う方法で発生させてみることに挑戦してみます。

ではっ!

関連記事

RasPi_Qt

QtでRaspberryPi/GUI開発(6):pigpioを使用したチャタリング対策

どもです。 前回のエントリーで、pigpioを使用したボタンを使用したLEDの点灯/消灯について書

記事を読む

toppers

C言語でEV3開発(20)-超音波センサと安全状態

どもです。 前回は、BluetoothでPCとEv3を接続してコマンドの送受信について書きました。

記事を読む

no image

Windows-QtCreatorでのデバッグ

どもです。 更新の間隔が空いてしまいました。 久しぶりの更新です。 最近、Qtを触り始めま

記事を読む

eclipse_cdt_top_100

C言語でEV3開発(3)

どもです。 今回のエントリーの内容は、前回まででセットアップした環境で、実際にEV3上で動く実行フ

記事を読む

eclipse_oxygen

Eclipse/CrossCompile環境でプロジェクトをクリーンできない

どもです。 今回は、Eclipseでクロスコンパイル環境を作成した場合、を実行すると「指定されたフ

記事を読む

python

Ev3開発サポートツール(4)-Pythonによるグラフ表示

どもです。 前回のエントリーで、VisualStudioCommunityでのPythonの開発環

記事を読む

toppers

C言語でEV3開発(23)-モーターの性能確認

どもです。 今回は、EV3に付属しているモーター(Lモーター/Mモーター)の性能について調べてみた

記事を読む

no image

C言語でEV3開発(17)-コマンドによるTOPPERS/HRP2 EV3RT アプリケーションの制御(コントロール)

どもです。 今回は、TOPPERS/HRP2 EV3RT で作成したアプリをPC上から操作するため

記事を読む

eclipse-juno-logo

C言語でEV3開発(1)

どもです。 2回目の投稿。 本格的な投稿としては、初めての投稿になります。 内容は、LEG

記事を読む

toppers

C言語でEV3開発(22)-ロギング機能

どもです。 前回は、モーターの出力を制御する方法について記載しました。その際に、モータ/車体が期待

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Arduino_Logo
ホールセンサーの種類と使い方(割込み編)

どもです。 前回に引き続き、今回もホールセンサーについてです。

Arduino_Logo
ホールセンサーの種類と使い方

どもです。 今回のエントリは、表題にある「ホールセンサー」についてで

Arduino_Logo
1台のarduinno nanoで割込みとSPIの同時使用

どもです。 先日手に入れたArduino nano(中華)で遊んでい

Arduino_Logo
Arduino nano(中華版)をセットアップしてみた

どもです。 突然ですが、「Arduino nano」互換(なのか?)

raspberry-pi
libpigpioでのRaspberryPi3とArduinoのSPI通信

どもです。 今回は、libpigpioを使用してRaspberryP

→もっと見る

PAGE TOP ↑