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

📄 enc28j60_8c-source.html

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