![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
現在Atmel Studio6.1 + JTAGICE3でATmega88Pのプログラミングを行っています。
https://sourceforge.jp/projects/cc1101driver/scm …
このプロジェクト内で、リアルタイムデバッグを行っているソースコードで、無線モジュールIC CC1101がある端末出力されて受信したデータがあった場合、SPI通信でATmega88PマイコンにSPI通信割り込みでデータを送信して、データ内容で条件が適合するとAtmega88pの特定のeepromアドレスへ受信データ内容の一部データ(IDコード)を書き込むようにしている箇所があります。
u8 setup_oper() 関数内の
length = cc1101_rx((u8 *)fifo,0);
if(length > 0)
{
gggLength = length;
if(length == sizeof(fifo_t) && fifo-
・・・・(中略)・・・・
}
リアルタイムデバッグ中に上記のコードで端末側がデータ送信を行っているのに、受信した場合にlength = cc1101_rx((u8 *)fifo,0); のコード部分では受信したデータのlength値が代入されるはずなのですが、それが”0”のままであるため、eepromへの書き込みが行われていないことに気づきました。
いろいろとソースコードの修正を試みたところ、
#define F_CPU 800000UL
元々このように設定されていたコードを
#define F_CPU 2000000UL
このように変更したところ、正常にCC1101からのSPI通信もeepromへのデータ書き込みもうまくいくことがわかりました。
この”#define F_CPU”というコードはどのような意味があるのかご教示頂きますよう、よろしくお願い致します。
また、現在Atmega88pの元周波数は8MHzを使用したく、8CKDIVのチェックを外しています。
なので、
#define F_CPU 8000000UL
このように設定してみたところ、これだとCC1101とのSPI通信ができないようでeeprom書き込みのコードに到達できなくなります。
#define F_CPU 2000000UL
これは内部周波数が元の8MHzを4分周した2MHzのことなのだろうか?
このように思って2000000ULとしてみたのですが、この考えでよろしいのでしょうか?
どうぞ、ご教示頂き増増すよう、よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
>#define F_CPU 2000000UL
マクロ定数と言い、関数内で”F_CPU”と記述すれば、コンパイル時に2000000という数字に置換されます。
複数回F_CPUを使っていても、#define行の数値だけを変更してリコンパイルすれば、全てのF_CPUが一括変更されるので非常に便利です。
例えば
clock_A = F_CPU/4 ;
と記述してコンパイルすれば
clock_A = 2000000/4 ;
と置換され、clock_Aが求められます。
後半の質問はソースコードの解析が必要なので、さすがに回答出来ません。
No.3
- 回答日時:
検索すればすぐわかることですが、F_CPUはシステムクロック周波数の定数宣言ですね。
ですから8MHzで使うなら #define F_CPU 8000000UL が正解です。
なぜ意図した動作をしないかですが、まず警告メッセージのないソースにしなければデバッグどころではありませんよ。
cc1100.cやi2c.cではF_CPUが宣言されていないので、デフォルトの10MHzとしてコンパイルされています。
まあ、_delay_msの精度がでないだけなのでたいした問題ではないでしょうが・・・・
あと、関数プロトタイプ宣言もちゃんと書きましょう。
回答頂きありがとうございます。今までAVR Studio4 + winAVRでのプログラムではF_CPUというのは無かったように思うのですが、Atmel Studio5からはこのような定義が必要になったということを確認しました。
今まではマイコンの内部クリスタルの周波数を使う場合はヒューズビットの設定で内部周波数が決定されると思っていました。
No.2
- 回答日時:
No.1です。
回答はしたものの・・・
まさか#defineの意味も解らずに、Cソースを読んだり書いたりする人はいないよな?
と考えたら、回答が的外れのような気がしてきました。
だとしたら、ゴメンなさい。
回答頂きありがとうございます。#defineというのを使ったことが無いわけではないのですが、AVR Studio4 + winAVRでのプログラミングの時には、#define F_CPU 2000000ULこのようなマクロ定義のコードを書いたことが無かったので、今度からは必要なのかなと感じております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
- C言語・C++・C# C言語初心者です、、、お助けください 2 2023/03/14 20:08
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- PHP php 完了画面の送信メールのコードを書いているのですが・・・ 2 2023/06/02 12:01
- JavaScript 読み込んだQRコードをフォームに受け渡したい 1 2023/05/18 11:18
- 統計学 生物統計学の質問 7 2022/05/17 13:59
- PHP PHPを使って、別サイトの一部を取得して表示したいのです。。 1 2023/01/18 21:45
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「未使用」と「不使用」ってど...
-
XMLデータってなんですか?
-
インスタの設定について。 イン...
-
#define F_CPU という設定
-
正規化(時間)
-
高速フーリエ変換でデータ数が...
-
Excelの“並び替え”で文字コード...
-
エクセルで縦に並んだデータを...
-
データ用HDDの別のPCへの乗せ替え
-
下記マクロでMsgBox "空白です...
-
携帯電話のデータを消去され、...
-
電子辞書の画面をPCに映すには
-
PCの内蔵メモリにデータは残る?
-
自然対数に変換する意味がわか...
-
匿名チャットアプリのトラッキ...
-
Excel Webクエリ
-
ネットカフェから、メールでき...
-
時代はSSDなのにネットの最近の...
-
英語で何と言うか教えてくださ...
-
周波数解析をエクセルツール『...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「未使用」と「不使用」ってど...
-
インスタの設定について。 イン...
-
XMLデータってなんですか?
-
高速フーリエ変換でデータ数が...
-
エクセルで縦に並んだデータを...
-
ネットカフェから、メールでき...
-
PCの内蔵メモリにデータは残る?
-
【MSOffice Publisher2010差し...
-
データ用HDDの別のPCへの乗せ替え
-
パレート図等で「N=100」とあ...
-
日本通信の当月利用データ量は...
-
エクセルのグラフのデータ系列...
-
共通テストボーダーについて、...
-
Excel Webクエリ
-
d’の求め方
-
Excelの“並び替え”で文字コード...
-
ワードの差し込み印刷のデータ...
-
表計算: 多次元の表を作りたい
-
CSVファイルを・…
-
相関行列作成時の数字以外のデ...
おすすめ情報