目前共有5篇帖子。 字體大小:較小 - 100% (默認)▼  內容轉換:港澳繁體▼
 
點擊 回復
815 4
發現了AVR uip網卡程序的一個bug
一派掌門 二十級
1樓 發表于:2017-5-11 23:02
當筆記本沒有插電源的時候插上USB線供電,儘管LED燈已亮,但連接狀態一直為未連接。
一派掌門 二十級
2樓 發表于:2017-5-11 23:06

【故障2】

ping 192.168.1.50

不通,數碼管一直為1, 70

 
一派掌門 二十級
3樓 發表于:2017-5-11 23:07
故障2的現象是沒有輸出網卡中斷。
 
一派掌門 二十級
4樓 發表于:2017-5-11 23:21

這些故障應該都是INT2上的低電平干擾造成的。為了增強抗干擾能力,可以在主循環中每5秒就自動檢查一次pkt_cnt=0時中斷EIE是否處於關閉狀態(也就是判斷是否產生了死鎖),若判斷出產生了死鎖,則應及時打開EIE使系統恢復正常。

同時也要檢查連接狀態改變中斷是否是開啟的狀態,並定時自動更新連接狀態,而不是完全依靠中斷來通知。

 
一派掌門 二十級
5樓 發表于:2017-5-11 23:43

if (pkt_in)
{
    asm("wdr");
    GICR &= ~_BV(INT2); // 進入臨界區之前必須關網卡中斷!
    read_packet();
    ENC28J60_SelectBank(1);
    if (!ENC28J60_Read(EPKTCNT)) // 若已接收完全部數據包
    {
        pkt_in = 0;
        ENC28J60_SetBits(EIE, EIE_PKTIE, ENCSET); // 則重開數據包接收中斷
    }
    GICR |= _BV(INT2); // 重開網卡中斷
}


在上面的代碼中,當pkt_in等於0時若中斷PKTIE處於關閉狀態,就會發生死鎖。

 

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:815 回複數:4
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2017-5-11 23:43
 
©2010-2025 Purasbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。