チケット #28106

ワイヤレス中継機ユニットVer0x16にて、7回の再送ブロックの4ブロック目でウォッチドックがかかる。

登録: 2012-04-17 13:47 最終更新: 2012-04-17 14:39

報告者:
担当者:
(未割り当て)
チケットの種類:
状況:
オープン
コンポーネント:
(未割り当て)
マイルストーン:
(未割り当て)
優先度:
5 - 中
重要度:
5 - 中
解決法:
なし
ファイル:
なし

詳細

現在、ワイヤレス中継機ユニットVer0x16において、パケット7個を1ブロックとして、最大7ブロックの再送を行うプログラムで、最後の7ブロックの回数まで送信数までに必ずウォッチドックがかかってしまう現象が発生しています。

(症状一覧)

・3ブロックまでは再送信号を出力しているが、4ブロック目で必ずウォッチドックがかかり、main関数からスタートするのをICEデバッガで確認。

・ウォッチドック設定は8秒間に設定している。タイムアウトする際にデバッガがストップをかけると

u8 cc1101_tx(u8 * data , u8 length,u8 th,u8 freq_mode)
{
---(中略)-----------------------------------

while(!(PINC&0x04));	//data send start
while(PINC&0x04);		//data send end


----(中略)------------------------------------
}

この箇所でタイムアウトが起きていることを確認している。

このプログラムは現在、

https://svn.sourceforge.jp/svnroot/cc1101driver/trunk/CC1101_source_ATmega88_bridge/

ここに設置しております。

どなたか、解決方法などご存じの方いらっしゃいましたが、是非ご教授頂きますよう、お願い致します。

チケットの履歴 (5 件中 3 件表示)

2012-04-17 13:47 更新者: blackzoro
  • 新しいチケット "ワイヤレス中継機ユニットVer0x16にて、7回の再送ブロックの4ブロック目でウォッチドックがかかる。" が作成されました
2012-04-17 14:01 更新者: blackzoro
  • 詳細が更新されました
2012-04-17 14:01 更新者: blackzoro
  • 詳細が更新されました
2012-04-17 14:27 更新者: blackzoro
コメント

途中経過

現在、このウォッチドックが再送中にかかってしまう問題で、bridge_master_oper()関数内の永久ループ内のステートのやり方をswitch文からif文に書き換えて動作差してみたが、症状が全く変わらなかった。

現在こちらのURLでプログラムをデバッグ中

https://svn.sourceforge.jp/svnroot/cc1101driver/branches/C1101_source_ATmega88_bridge_ver0x16/

2012-04-17 14:39 更新者: blackzoro
コメント

途中経過



u8 cc1101_tx(u8 * data , u8 length,u8 th,u8 freq_mode)
{
---(中略)-----------------------------------

while(!(PINC&0x04));	//data send start
while(PINC&0x04);		//data send end


----(中略)------------------------------------
}

//この箇所でタイムアウトが起きていることを確認している。


この箇所でタイムアウトが起きているのですが、”while(!(PINC&0x04)); //data send start”このプログラムの意味はCC1101のGIOAピンからデータが電波で送信を開始するとHIGHになり、このループを抜けるという意味なのですが、ここで停止して8秒間のウォッチドックタイムアウトが 発生するとなると、その信号が常にLOWの状態になってしまっているような気がしています。

試しに、このプログラムをコメントアウトしてみたら、電波送信ができなくなったうえ、7ブロック以降もループが終わらなくなる症状が出ました。

 

添付ファイルリスト

添付ファイルはありません

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする