
現在マイコン初心者でD/A変換、SPI通信について勉強しております。現在ポテンショメータの入力に応じて電圧を変化させLEDの明るさを調整しようとしています。(master側からの一方通行)
使用チップ:atmel atmega328p(master)
mcp4921 (slave)
配線図:添付画像を参照ください
開発環境:atmel studio 7(c言語)
ADCを用いてポテンショメータの値はとれるようになったのですが、SPI通信でつまずいております。色々なサイトでコードを見てみているのですが、どのようにmaster側とslave側でコードを分けているのかが分からない状態です。両方にmain関数があるのですがどのようにファイルを配置してビルドしているのでしょうか?
なにか参考になるサイトなどがありましたら、そちらも教えていただけると助かります。

No.2ベストアンサー
- 回答日時:
オシロスコープかロジックアナライザがあれば良いのですが、無いという前提で。
MOSIとMISOを接続しておいてSPIFフラグが立った時にデータレジスタを読めば自分が送信したデータが受信されているはずです。
しかし、このエコーバックではクロック速度と動作モードがスレーブの仕様に合っているかは確認できません。
まあ、スレーブは20MHzのクロックまで行けますし、MODE0で使えるようなので、そこは大丈夫かと思います。
補足提示いただいたコードは特に間違っていないと思いますよ。
またの回答ありがとうございます。なんとかLEDが点灯するところまでこぎつけることができました。もうすこし試行錯誤してがんばってみます。
No.1
- 回答日時:
ちょっと混乱されているようです。
質問の意味が分かりません。スレーブであるmcp4921は単なるDAコンバータICですから、プログラムなんて不要ですよね。
マスターであるatmega328pがマスターとして動作すれば良いだけです。スレーブとしてのプログラムは必要ありません。
さっそくの回答ありがとうございます。いくつかのサイトでマスターとスレーブでそれぞれコードを用意しているところがあったのでこんがらがってしまいました。
とりあえずマスター側の初期設定を
DDRB = (1<<DD_MOSI)|(1<<DD_SCK); // DD_MOSI = PORTB3, DD_SCK = PORTB5
SPCR = (1<<SPE) | (1<<MSTR) | (1<<SPR0);
として通信を
SPDR = cData; // cDataはchar
while(!(SPSR & (1<<SPIF)));
で試してみたのですが通信がうまくいっているかがよくわかりません。これはどのように確認したらいいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- カスタマイズ(車) (続き)初めてカーナビの取付にチャンレジします。アドバイスください。 3 2022/12/10 15:13
- 転職 現在在職中なのですが転職したい会社があり ハローワークを通して応募しました。 先週の終わり頃に書類選 1 2022/08/18 01:00
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- 工学 非言語分野が全くできない人にオススメの参考書を教えてください 1 2023/06/01 16:15
- FTTH・光回線 AU光回線の速度が出ません 2 2022/07/30 16:05
- Wi-Fi・無線LAN 自宅にWifi環境を良くしたいです。 2 2023/03/08 14:38
- その他(プログラミング・Web制作) プログラミング Python 1 2022/09/28 05:02
- CPU・メモリ・マザーボード DELL PC カスタマイズについて。 1 2022/11/20 13:45
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- インターネットビジネス ペット用品のネットショップ運営で悩んでいる事があります。 詳しい方いらっしゃいましたらご教授の程宜し 2 2022/07/11 12:03
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レジスタマップって何ですか?
-
シリアル通信でのデータ取りこぼし
-
PLCとPCの通信
-
組み込みマイコンでのソフトウ...
-
Macターミナルで実行中のプログ...
-
C# シリアル通信でデータ受信...
-
家電製品の電力周波数を変える機械
-
VBSの処理中一旦処理を止めて再...
-
C言語で、メモリを解放しないで...
-
sendkeysにてALT+CTRL+INSERTを...
-
Excel VBAにて、2GB超の点群デ...
-
非表示になったエクセルは?
-
バックグラウンドのプロセスの...
-
フレームワーク「4.8.1」で、[S...
-
分を時間に変換するプログラム
-
ACCESS側からEXCELの書式を設定...
-
電車で待機列の割り込みについ...
-
VB.NETでMessageBoxを表示した...
-
プロセスのアタッチ・デタッチ...
-
C#でのbatファイル実行結果取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レジスタマップって何ですか?
-
PLCとPCの通信
-
組み込みマイコンでのソフトウ...
-
USBハブの自作について
-
H8マイコンのプロテクト方法
-
機械語のレジスタペアについて
-
TCNTとTIFRの意味
-
シリアル通信でのデータ取りこぼし
-
スプレッとの制御
-
PIC12F683でLEDをスイッチで点...
-
FATの故障? 1ファイル内の文字化け
-
古い計量機器からのrs232cを使...
-
マイクロ秒で精度が出るタイマー
-
デジタルマルチメータの自動計...
-
フラッシュメモリへの書き込み
-
プリンタポートの制御
-
無限ループを使う意味
-
geko201とマイコンのシリアル通...
-
C言語 マイコン
-
PICマイコンのCLRWDT動作について
おすすめ情報