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