本帖最后由 co5jco5j 于 2013-8-1 15:59 编辑
最近開發cc2500模組做傳輸 遇到一個不知是否是機構上問題 發送封包的動作 會到一半就死掉 程式持續run但是進不到發送中斷內
小弟能力不足實在是抓不出什麼原因 希望各位高手大大幫忙 點出可能會導致這些問題的因素
問題說明:這是我用uart在程式碼中間鑲一些打印訊息 做debug用
程式大概行為是 [ timerA0記數時間到 丟S類封包3包 丟F類封包1包 ...等下次的Timer時間到 ]
a:表示timer時間到有進到timerA0區間 打印一個a確定有進去
S:是表示有成功進到丟S類封包的程式區間
M:是發送封包的中斷 表示有觸發該中斷(封包有丟出去)
+:在丟封包的function每丟一次完 表示該function有執行到最後 沒有斷掉
藍色綠色high light部份 "M"就不見了 表示我前面不分都正常 也有進到送封包區段 但是發送封包的中斷並沒有觸發
以下是我執行3次的結果 發生狀況的時間/次數每次都不同 當狀況發生 就重load重跑 有時可以執行數十次 但有時就馬上出狀況
每次狀況都不太一樣 實在是讓我摸不著頭緒 該怎麼去de這個bug
做這次開發用的開發版 msp430f5438/cc2500 (CC2500直接接在PORT1 的PIN腳上 所以收/發中斷用PORT1的中斷)
以下附上我的程式碼部份 請各位大大幫忙看是否哪邊有錯誤(圖片照程式執行順序)
1.TimerA0 計數到 觸發Timer中斷
(打印a)
2.進S區間與F區間 做發送動作的Function
資料放到txBuffer後 用RFSendPacket();會觸發下面3.中斷送出封包
(打印S/F/+的部份)
3.cc2500收/發中斷副程式
(打印M的部份)
下面為TI所提供之CC2500.c/TI_CC_spi.c 使用RFSendPacket(); 程式碼
一開始有懷疑過是否發送封包的間隔太短 有加長每次送封包的間隔時間(OSTimeDly) 但是狀況還是會發生
另外想是否可能是TXFIFO_OVERFLOW 但是overflow應該是除了幾次後才會出現 我的情況甚至於在第一次都還沒傳過就出現 所以也很疑惑
實在是想不出來 還有可能是什麼原因導致這種狀況發生 希望有經驗的高手大大幫忙
|