⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 enc28j60_8c-source.html

📁 avr应用测试程序
💻 HTML
📖 第 1 页 / 共 3 页
字号:
00366 <span class="comment">        // Set the MAC to the proper duplex mode</span>00367 <span class="comment">        temp = enc28j60Read(MACON3);</span>00368 <span class="comment">        temp &amp;= ~MACON3_FULDPX;</span>00369 <span class="comment">        enc28j60Write(MACON3, temp);</span>00370 <span class="comment">    }</span>00371 <span class="comment"></span>00372 <span class="comment">    // Set the back-to-back inter-packet gap time to IEEE specified </span>00373 <span class="comment">    // requirements.  The meaning of the MABBIPG value changes with the duplex</span>00374 <span class="comment">    // state, so it must be updated in this function.</span>00375 <span class="comment">    // In full duplex, 0x15 represents 9.6us; 0x12 is 9.6us in half duplex</span>00376 <span class="comment">    //enc28j60Write(MABBIPG, DuplexState ? 0x15 : 0x12);    </span>00377 <span class="comment">    </span>00378 <span class="comment">    // Reenable receive logic</span>00379 <span class="comment">    enc28j60WriteOp(ENC28J60_BIT_FIELD_SET, ECON1, ECON1_RXEN);</span>00380 <span class="comment"></span>00381 <span class="comment">    // setup duplex ----------------------</span>00382 <span class="comment">*/</span>00383 }00384 <a name="l00385"></a><a class="code" href="group__enc28j60.html#ga10">00385</a> <span class="keywordtype">void</span> <a class="code" href="group__enc28j60.html#ga10">enc28j60PacketSend</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* packet)00386 {00387     <span class="comment">// Set the write pointer to start of transmit buffer area</span>00388     <a class="code" href="group__enc28j60.html#ga6">enc28j60Write</a>(EWRPTL, TXSTART_INIT);00389     <a class="code" href="group__enc28j60.html#ga6">enc28j60Write</a>(EWRPTH, TXSTART_INIT&gt;&gt;8);00390     <span class="comment">// Set the TXND pointer to correspond to the packet size given</span>00391     <a class="code" href="group__enc28j60.html#ga6">enc28j60Write</a>(ETXNDL, (TXSTART_INIT+len));00392     <a class="code" href="group__enc28j60.html#ga6">enc28j60Write</a>(ETXNDH, (TXSTART_INIT+len)&gt;&gt;8);00393 00394     <span class="comment">// write per-packet control byte</span>00395     <a class="code" href="group__enc28j60.html#ga1">enc28j60WriteOp</a>(ENC28J60_WRITE_BUF_MEM, 0, 0x00);00396 00397     <span class="comment">// copy the packet into the transmit buffer</span>00398     <a class="code" href="group__enc28j60.html#ga3">enc28j60WriteBuffer</a>(len, packet);00399     00400     <span class="comment">// send the contents of the transmit buffer onto the network</span>00401     <a class="code" href="group__enc28j60.html#ga1">enc28j60WriteOp</a>(ENC28J60_BIT_FIELD_SET, ECON1, ECON1_TXRTS);00402 }00403 <a name="l00404"></a><a class="code" href="group__enc28j60.html#ga11">00404</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="group__enc28j60.html#ga11">enc28j60PacketReceive</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxlen, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* packet)00405 {00406     u16 rxstat;00407     u16 len;00408 00409     <span class="comment">// check if a packet has been received and buffered</span>00410 <span class="comment">//  if( !(enc28j60Read(EIR) &amp; EIR_PKTIF) )</span>00411     <span class="keywordflow">if</span>( !<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(EPKTCNT) )00412         <span class="keywordflow">return</span> 0;00413     00414     <span class="comment">// Make absolutely certain that any previous packet was discarded   </span>00415     <span class="comment">//if( WasDiscarded == FALSE)</span>00416     <span class="comment">//  MACDiscardRx();</span>00417 00418     <span class="comment">// Set the read pointer to the start of the received packet</span>00419     <a class="code" href="group__enc28j60.html#ga6">enc28j60Write</a>(ERDPTL, (NextPacketPtr));00420     <a class="code" href="group__enc28j60.html#ga6">enc28j60Write</a>(ERDPTH, (NextPacketPtr)&gt;&gt;8);00421     <span class="comment">// read the next packet pointer</span>00422     NextPacketPtr  = <a class="code" href="group__enc28j60.html#ga0">enc28j60ReadOp</a>(ENC28J60_READ_BUF_MEM, 0);00423     NextPacketPtr |= <a class="code" href="group__enc28j60.html#ga0">enc28j60ReadOp</a>(ENC28J60_READ_BUF_MEM, 0)&lt;&lt;8;00424     <span class="comment">// read the packet length</span>00425     len  = <a class="code" href="group__enc28j60.html#ga0">enc28j60ReadOp</a>(ENC28J60_READ_BUF_MEM, 0);00426     len |= <a class="code" href="group__enc28j60.html#ga0">enc28j60ReadOp</a>(ENC28J60_READ_BUF_MEM, 0)&lt;&lt;8;00427     <span class="comment">// read the receive status</span>00428     rxstat  = <a class="code" href="group__enc28j60.html#ga0">enc28j60ReadOp</a>(ENC28J60_READ_BUF_MEM, 0);00429     rxstat |= <a class="code" href="group__enc28j60.html#ga0">enc28j60ReadOp</a>(ENC28J60_READ_BUF_MEM, 0)&lt;&lt;8;00430 00431     <span class="comment">// limit retrieve length</span>00432     <span class="comment">// (we reduce the MAC-reported length by 4 to remove the CRC)</span>00433     len = MIN(len, maxlen);00434 00435     <span class="comment">// copy the packet from the receive buffer</span>00436     <a class="code" href="group__enc28j60.html#ga2">enc28j60ReadBuffer</a>(len, packet);00437 00438     <span class="comment">// Move the RX read pointer to the start of the next received packet</span>00439     <span class="comment">// This frees the memory we just read out</span>00440     <a class="code" href="group__enc28j60.html#ga6">enc28j60Write</a>(ERXRDPTL, (NextPacketPtr));00441     <a class="code" href="group__enc28j60.html#ga6">enc28j60Write</a>(ERXRDPTH, (NextPacketPtr)&gt;&gt;8);00442 00443     <span class="comment">// decrement the packet counter indicate we are done with this packet</span>00444     <a class="code" href="group__enc28j60.html#ga1">enc28j60WriteOp</a>(ENC28J60_BIT_FIELD_SET, ECON2, ECON2_PKTDEC);00445 00446     <span class="keywordflow">return</span> len;00447 }00448 <a name="l00449"></a><a class="code" href="group__enc28j60.html#ga12">00449</a> <span class="keywordtype">void</span> <a class="code" href="group__enc28j60.html#ga12">enc28j60ReceiveOverflowRecover</a>(<span class="keywordtype">void</span>)00450 {00451     <span class="comment">// receive buffer overflow handling procedure</span>00452 00453     <span class="comment">// recovery completed</span>00454 }00455 <a name="l00456"></a><a class="code" href="group__enc28j60.html#ga13">00456</a> <span class="keywordtype">void</span> <a class="code" href="group__enc28j60.html#ga13">enc28j60RegDump</a>(<span class="keywordtype">void</span>)00457 {00458 <span class="comment">//  unsigned char macaddr[6];</span>00459 <span class="comment">//  result = ax88796Read(TR);</span>00460     00461 <span class="comment">//  rprintf("Media State: ");</span>00462 <span class="comment">//  if(!(result &amp; AUTOD))</span>00463 <span class="comment">//      rprintf("Autonegotiation\r\n");</span>00464 <span class="comment">//  else if(result &amp; RST_B)</span>00465 <span class="comment">//      rprintf("PHY in Reset   \r\n");</span>00466 <span class="comment">//  else if(!(result &amp; RST_10B))</span>00467 <span class="comment">//      rprintf("10BASE-T       \r\n");</span>00468 <span class="comment">//  else if(!(result &amp; RST_TXB))</span>00469 <span class="comment">//      rprintf("100BASE-T      \r\n");</span>00470                 00471     rprintf(<span class="stringliteral">"RevID: 0x%x\r\n"</span>, <a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(EREVID));00472 00473     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"Cntrl: ECON1 ECON2 ESTAT  EIR  EIE\r\n"</span>);00474     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"         "</span>);00475     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(ECON1));00476     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"    "</span>);00477     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(ECON2));00478     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"    "</span>);00479     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(ESTAT));00480     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"    "</span>);00481     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(EIR));00482     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"   "</span>);00483     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(EIE));00484     <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00485 00486     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"MAC  : MACON1  MACON2  MACON3  MACON4  MAC-Address\r\n"</span>);00487     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"        0x"</span>);00488     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(MACON1));00489     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"    0x"</span>);00490     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(MACON2));00491     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"    0x"</span>);00492     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(MACON3));00493     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"    0x"</span>);00494     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(MACON4));00495     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"   "</span>);00496     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(MAADR5));00497     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(MAADR4));00498     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(MAADR3));00499     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(MAADR2));00500     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(MAADR1));00501     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(MAADR0));00502     <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00503 00504     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"Rx   : ERXST  ERXND  ERXWRPT ERXRDPT ERXFCON EPKTCNT MAMXFL\r\n"</span>);00505     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"       0x"</span>);00506     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(ERXSTH));00507     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(ERXSTL));00508     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">" 0x"</span>);00509     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(ERXNDH));00510     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(ERXNDL));00511     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"  0x"</span>);00512     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(ERXWRPTH));00513     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(ERXWRPTL));00514     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"  0x"</span>);00515     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(ERXRDPTH));00516     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(ERXRDPTL));00517     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"   0x"</span>);00518     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(ERXFCON));00519     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"    0x"</span>);00520     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(EPKTCNT));00521     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"  0x"</span>);00522     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(MAMXFLH));00523     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(MAMXFLL));00524     <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00525 00526     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"Tx   : ETXST  ETXND  MACLCON1 MACLCON2 MAPHSUP\r\n"</span>);00527     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"       0x"</span>);00528     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(ETXSTH));00529     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(ETXSTL));00530     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">" 0x"</span>);00531     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(ETXNDH));00532     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(ETXNDL));00533     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"   0x"</span>);00534     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(MACLCON1));00535     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"     0x"</span>);00536     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(MACLCON2));00537     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"     0x"</span>);00538     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(<a class="code" href="group__enc28j60.html#ga5">enc28j60Read</a>(MAPHSUP));00539     <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00540 00541     delay_ms(25);00542 }00543 00544 00545 </pre></div><hr size="1"><address style="align: right;"><small>Generated on Sun Oct 29 03:41:07 2006 for Procyon AVRlib by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.2 </small></address></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -