#define F_CPU という設定
現在Atmel Studio6.1 + JTAGICE3でATmega88Pのプログラミングを行っています。
https://sourceforge.jp/projects/cc1101driver/scm/svn/tree/head/branches/test002_AVRS6_20140819/test02/
このプロジェクト内で、リアルタイムデバッグを行っているソースコードで、無線モジュール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としてみたのですが、この考えでよろしいのでしょうか?
どうぞ、ご教示頂き増増すよう、よろしくお願い致します。
お礼
お早い回答ありがとうございました。