📄 ax88796_8c-source.html
字号:
00468 <span class="keywordflow">if</span>(cmdReg & TXP)00469 {00470 <span class="comment">// check if the transmit completed</span>00471 cmdReg = ax88796Read(ISR);00472 <span class="keywordflow">if</span>((cmdReg & PTX) || (cmdReg & TXE))00473 resend = 0; <span class="comment">// transmit completed</span>00474 <span class="keywordflow">else</span>00475 resend = 1; <span class="comment">// transmit was interrupted, must resend</span>00476 }00477 <span class="comment">// switch to loopback mode</span>00478 ax88796Write(TCR, LB0);00479 <span class="comment">// start the interface</span>00480 ax88796Write(CR, (RD2|START));00481 <span class="comment">// set boundary</span>00482 ax88796Write(BNRY, RXSTART_INIT);00483 <span class="comment">// go to page 1</span>00484 ax88796Write(CR, (PS0|RD2|START));00485 <span class="comment">// set current page register</span>00486 ax88796Write(CPR, RXSTART_INIT+1);00487 <span class="comment">// go to page 0</span>00488 ax88796Write(CR, (RD2|START));00489 <span class="comment">// clear the overflow int</span>00490 ax88796Write(ISR, OVW);00491 <span class="comment">// switch to normal (non-loopback mode)</span>00492 ax88796Write(TCR, TCR_INIT);00493 00494 <span class="comment">// if previous transmit was interrupted, then resend</span>00495 <span class="keywordflow">if</span>(resend)00496 ax88796Write(CR, (RD2|TXP|START));00497 00498 <span class="comment">// recovery completed</span>00499 }00500 00501 00502 <span class="preprocessor">#define set_mdc ax88796Write(MEMR,ax88796Read(MEMR)|0x01);</span>00503 <span class="preprocessor"></span><span class="preprocessor">#define clr_mdc ax88796Write(MEMR,ax88796Read(MEMR)&0xFE);</span>00504 <span class="preprocessor"></span>00505 <span class="preprocessor">#define mii_clk set_mdc; clr_mdc; </span>00506 <span class="preprocessor"></span> 00507 <span class="preprocessor">#define set_mdir ax88796Write(MEMR,ax88796Read(MEMR)|0x02);</span>00508 <span class="preprocessor"></span><span class="preprocessor">#define clr_mdir ax88796Write(MEMR,ax88796Read(MEMR)&0xFD);</span>00509 <span class="preprocessor"></span> 00510 <span class="preprocessor">#define set_mdo ax88796Write(MEMR,ax88796Read(MEMR)|0x08)</span>00511 <span class="preprocessor"></span><span class="preprocessor">#define clr_mdo ax88796Write(MEMR,ax88796Read(MEMR)&0xF7)</span>00512 <span class="preprocessor"></span>00513 <span class="preprocessor">#define mii_write clr_mdo; mii_clk; \</span>00514 <span class="preprocessor"> set_mdo; mii_clk; \</span>00515 <span class="preprocessor"> clr_mdo; mii_clk; \</span>00516 <span class="preprocessor"> set_mdo; mii_clk;</span>00517 <span class="preprocessor"></span>00518 <span class="preprocessor">#define mii_read clr_mdo; mii_clk; \</span>00519 <span class="preprocessor"> set_mdo; mii_clk; \</span>00520 <span class="preprocessor"> set_mdo; mii_clk; \</span>00521 <span class="preprocessor"> clr_mdo; mii_clk;</span>00522 <span class="preprocessor"></span>00523 <span class="preprocessor">#define mii_r_ta mii_clk; \</span>00524 <span class="preprocessor"></span>00525 <span class="preprocessor"></span><span class="preprocessor">#define mii_w_ta set_mdo; mii_clk; \</span>00526 <span class="preprocessor"> clr_mdo; mii_clk;</span>00527 <span class="preprocessor"></span> 00528 <span class="keywordtype">void</span> ax88796WriteMii(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> phyad,<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> regad,<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mii_data)00529 {00530 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> mask8;00531 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i,mask16;00532 00533 mii_write;00534 00535 mask8 = 0x10;00536 <span class="keywordflow">for</span>(i=0;i<5;++i)00537 {00538 <span class="keywordflow">if</span>(mask8 & phyad)00539 set_mdo;00540 <span class="keywordflow">else</span>00541 clr_mdo;00542 mii_clk;00543 mask8 >>= 1; 00544 } 00545 mask8 = 0x10;00546 <span class="keywordflow">for</span>(i=0;i<5;++i)00547 {00548 <span class="keywordflow">if</span>(mask8 & regad)00549 set_mdo;00550 <span class="keywordflow">else</span>00551 clr_mdo;00552 mii_clk;00553 mask8 >>= 1; 00554 } 00555 mii_w_ta;00556 00557 mask16 = 0x8000;00558 <span class="keywordflow">for</span>(i=0;i<16;++i)00559 {00560 <span class="keywordflow">if</span>(mask16 & mii_data)00561 set_mdo;00562 <span class="keywordflow">else</span>00563 clr_mdo;00564 mii_clk; 00565 mask16 >>= 1; 00566 } 00567 }00568 00569 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ax88796ReadMii(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> phyad,<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> regad)00570 {00571 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> mask8,i;00572 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mask16,result16;00573 00574 mii_read;00575 00576 mask8 = 0x10;00577 <span class="keywordflow">for</span>(i=0;i<5;++i)00578 {00579 <span class="keywordflow">if</span>(mask8 & phyad)00580 set_mdo;00581 <span class="keywordflow">else</span>00582 clr_mdo;00583 mii_clk; 00584 mask8 >>= 1;00585 }00586 mask8 = 0x10;00587 <span class="keywordflow">for</span>(i=0;i<5;++i)00588 {00589 <span class="keywordflow">if</span>(mask8 & regad)00590 set_mdo;00591 <span class="keywordflow">else</span>00592 clr_mdo;00593 mii_clk;00594 mask8 >>= 1;00595 }00596 00597 mii_r_ta;00598 00599 mask16 = 0x8000;00600 result16 = 0x0000;00601 <span class="keywordflow">for</span>(i=0;i<16;++i)00602 {00603 mii_clk;00604 <span class="keywordflow">if</span>(ax88796Read(MEMR) & 0x04)00605 {00606 result16 |= mask16;00607 }00608 <span class="keywordflow">else</span>00609 {00610 <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>);00611 <span class="keywordflow">break</span>;00612 }00613 mask16 >>= 1;00614 }00615 <span class="keywordflow">return</span> result16;00616 }00617 00618 00619 <span class="keywordtype">void</span> ax88796RegDump(<span class="keywordtype">void</span>)00620 {00621 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> result;00622 result = ax88796Read(TR);00623 00624 rprintf(<span class="stringliteral">"Media State: "</span>);00625 <span class="keywordflow">if</span>(!(result & AUTOD))00626 rprintf(<span class="stringliteral">"Autonegotiation\r\n"</span>);00627 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(result & RST_B)00628 rprintf(<span class="stringliteral">"PHY in Reset \r\n"</span>);00629 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!(result & RST_10B))00630 rprintf(<span class="stringliteral">"10BASE-T \r\n"</span>);00631 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!(result & RST_TXB))00632 rprintf(<span class="stringliteral">"100BASE-T \r\n"</span>);00633 00634 <span class="comment">//rprintf("TR regsiter : %x\r\n",result);</span>00635 <span class="comment">//result = read_mii(0x10,0);</span>00636 <span class="comment">//rprintf("MII regsiter 0x10: %x\r\n",result);</span>00637 00638 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"Page0: CR BNRY PSR PST ISR TSR RSR MMR TR GPI\r\n"</span>);00639 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">" "</span>);00640 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(CR));00641 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">" "</span>);00642 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(BNRY));00643 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">" "</span>);00644 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(PSTART));00645 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">" "</span>);00646 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(PSTOP));00647 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">" "</span>);00648 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(ISR));00649 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">" "</span>);00650 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(TSR));00651 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">" "</span>);00652 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(RSR));00653 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">" "</span>);00654 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(MEMR));00655 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">" "</span>);00656 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(TR));00657 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">" "</span>);00658 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(GPI));00659 <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00660 00661 ax88796Write(CR,ax88796Read(CR)|PS0);00662 00663 rprintf(<span class="stringliteral">"Page1: CR PAR CPR\r\n"</span>);00664 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">" "</span>);00665 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(CR));00666 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">" "</span>);00667 <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(ax88796Read(PAR0));00668 <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(ax88796Read(PAR1));00669 <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(ax88796Read(PAR2));00670 <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(ax88796Read(PAR3));00671 <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(ax88796Read(PAR4));00672 <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(ax88796Read(PAR5));00673 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">" "</span>);00674 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(CPR));00675 00676 ax88796Write(CR,ax88796Read(CR)&~PS0);00677 00678 delay_ms(25);00679 }00680 00681 <span class="comment">/*</span>00682 <span class="comment">unsigned char ax88796ReceiveEmpty(void)</span>00683 <span class="comment">{</span>00684 <span class="comment"> unsigned char temp;</span>00685 <span class="comment"></span>00686 <span class="comment"> // read CPR from page 1</span>00687 <span class="comment"> ax88796Write(CR,0x62);</span>00688 <span class="comment"> temp = ax88796Read(CPR);</span>00689 <span class="comment"> </span>00690 <span class="comment"> // return to page 0</span>00691 <span class="comment"> ax88796Write(CR,0x22);</span>00692 <span class="comment"> </span>00693 <span class="comment"> return ( ax88796Read(BNRY) == temp );</span>00694 <span class="comment"> </span>00695 <span class="comment">}*/</span>00696 00697 00698 00699 </pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Aug 22 04:29:27 2005 for Procyon AVRlib by <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 + -