目前共有5篇帖子。
發現了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處於關閉狀態,就會發生死鎖。

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
 
 
©2010-2024 Arslanbar [手機版] [桌面版]
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。