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

📄 prism2_8c-source.html

📁 国外牛人公开的AVR代码
💻 HTML
📖 第 1 页 / 共 3 页
字号:
00436 00437 u08 prism2WriteRID(u16 <span class="keywordtype">id</span>, u16 offset, u16* data, u16 len)00438 {00439     u08 result;00440     result = prism2WriteBAP0(<span class="keywordtype">id</span>, offset, data, len);00441     prism2Command(PRISM2_CMD_ACCESS_WR, <span class="keywordtype">id</span>);00442     <span class="keywordflow">return</span> result;00443 }00444 00445 u08 prism2ReadBAP0(u16 <span class="keywordtype">id</span>, u16 offset, u16* data, u16 len)00446 {00447     <span class="comment">// wait for BAP to be ready</span>00448     <span class="comment">//rprintf("PRISM_BAP: Wait1\r\n");</span>00449     <span class="keywordflow">while</span>( prism2Read16(PRISM2_REG_BAP0OFFSET) &amp; PRISM2_BAPOFFSET_BUSY);00450     <span class="comment">// set ID</span>00451     prism2Write16(PRISM2_REG_BAP0SEL, <span class="keywordtype">id</span>);00452     <span class="comment">// set offset</span>00453     prism2Write16(PRISM2_REG_BAP0OFFSET, offset);00454     <span class="comment">// wait for BAP to be ready</span>00455     <span class="comment">//rprintf("PRISM_BAP: Wait2\r\n");</span>00456     <span class="keywordflow">while</span>( prism2Read16(PRISM2_REG_BAP0OFFSET) &amp; PRISM2_BAPOFFSET_BUSY);00457     <span class="comment">// check for error</span>00458     <span class="keywordflow">if</span>(prism2Read16(PRISM2_REG_BAP0OFFSET) &amp; PRISM2_BAPOFFSET_ERROR)00459         <span class="keywordflow">return</span> -1;00460     <span class="comment">// read data</span>00461     <span class="comment">//rprintf("PRISM_BAP: Read\r\n");</span>00462     <span class="keywordflow">while</span>(len--)00463         *data++ = prism2Read16(PRISM2_REG_BAP0DATA);00464     <span class="comment">// return success</span>00465     <span class="keywordflow">return</span> 0;00466 }00467 00468 u08 prism2WriteBAP0(u16 <span class="keywordtype">id</span>, u16 offset, u16* data, u16 len)00469 {00470     <span class="comment">// wait for BAP to be ready</span>00471     <span class="comment">//rprintf("PRISM_BAP: Wait1\r\n");</span>00472     <span class="keywordflow">while</span>( prism2Read16(PRISM2_REG_BAP0OFFSET) &amp; PRISM2_BAPOFFSET_BUSY);00473     <span class="comment">// set ID</span>00474     prism2Write16(PRISM2_REG_BAP0SEL, <span class="keywordtype">id</span>);00475     <span class="comment">// set offset</span>00476     prism2Write16(PRISM2_REG_BAP0OFFSET, offset);00477     <span class="comment">// wait for BAP to be ready</span>00478     <span class="comment">//rprintf("PRISM_BAP: Wait2\r\n");</span>00479     <span class="keywordflow">while</span>( prism2Read16(PRISM2_REG_BAP0OFFSET) &amp; PRISM2_BAPOFFSET_BUSY);00480     <span class="comment">// check for error</span>00481     <span class="keywordflow">if</span>(prism2Read16(PRISM2_REG_BAP0OFFSET) &amp; PRISM2_BAPOFFSET_ERROR)00482         <span class="keywordflow">return</span> -1;00483     <span class="comment">// write data</span>00484     <span class="comment">//rprintf("PRISM_BAP: Write\r\n");</span>00485     <span class="keywordflow">while</span>(len--)00486         prism2Write16(PRISM2_REG_BAP0DATA, *data++);00487     <span class="comment">// return success</span>00488     <span class="keywordflow">return</span> 0;00489 }00490 00491 <span class="keywordtype">void</span> prism2Write(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> address, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> data)00492 {00493     cli();00494     <span class="comment">// assert the address</span>00495     outb(PRISM2_HADDRESS_PORT, (address&gt;&gt;8) | (inb(PRISM2_HADDRESS_PORT)&amp;~PRISM2_HADDRESS_MASK));00496     outb(PRISM2_ADDRESS_PORT, address | (inb(PRISM2_ADDRESS_PORT)&amp;~PRISM2_ADDRESS_MASK));00497     <span class="comment">// set data bus as output</span>00498     outb(PRISM2_DATA_DDR, 0xFF);00499     <span class="comment">// place data on bus</span>00500     outb(PRISM2_DATA_PORT, data);00501     <span class="comment">// assert write</span>00502     cbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_IOWR);00503     <span class="comment">// delay</span>00504     PRISM2_IO_ACCESS_DELAY;00505     <span class="comment">// negate write</span>00506     sbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_IOWR);00507     <span class="comment">// set data bus back to input with pullups enabled</span>00508     outb(PRISM2_DATA_DDR, 0x00);00509     outb(PRISM2_DATA_PORT, 0xFF);00510     sei();00511 }00512 00513 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> prism2Read(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> address)00514 {00515     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> data;00516     cli();00517     <span class="comment">// assert the address</span>00518     outb(PRISM2_HADDRESS_PORT, (address&gt;&gt;8) | (inb(PRISM2_HADDRESS_PORT)&amp;~PRISM2_HADDRESS_MASK));00519     outb(PRISM2_ADDRESS_PORT, address | (inb(PRISM2_ADDRESS_PORT)&amp;~PRISM2_ADDRESS_MASK));00520     <span class="comment">// set data bus to input with pullups enabled</span>00521     outb(PRISM2_DATA_DDR, 0x00);00522     outb(PRISM2_DATA_PORT, 0xFF);00523     <span class="comment">// assert read</span>00524     cbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_IORD);00525     <span class="comment">// delay</span>00526     PRISM2_IO_ACCESS_DELAY;00527     <span class="comment">// read in the data</span>00528     data = inb( PRISM2_DATA_PIN );00529     <span class="comment">// negate read</span>00530     sbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_IORD);00531     <span class="comment">// return data</span>00532     sei();00533     <span class="keywordflow">return</span> data;00534 }00535 00536 <span class="keywordtype">void</span> prism2Write16(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> address, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> data)00537 {00538     prism2Write(address, data);00539     prism2Write(address+1, data&gt;&gt;8);00540 }00541 00542 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> prism2Read16(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> address)00543 {00544     <span class="keywordflow">return</span> prism2Read(address) | (prism2Read(address+1)&lt;&lt;8);00545 }00546 00547 <span class="keywordtype">void</span> prism2WriteMem(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> address, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> data)00548 {00549     cli();00550     <span class="comment">// assert the address</span>00551     outb(PRISM2_HADDRESS_PORT, (address&gt;&gt;8) | (inb(PRISM2_HADDRESS_PORT)&amp;~PRISM2_HADDRESS_MASK));00552     outb(PRISM2_ADDRESS_PORT, address | (inb(PRISM2_ADDRESS_PORT)&amp;~PRISM2_ADDRESS_MASK));00553     <span class="comment">// set data bus as output</span>00554     outb(PRISM2_DATA_DDR, 0xFF);00555     <span class="comment">// place data on bus</span>00556     outb(PRISM2_DATA_PORT, data);00557     <span class="comment">// assert write</span>00558     cbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_MEMWR);00559     <span class="comment">// delay</span>00560     PRISM2_MEM_ACCESS_DELAY;00561     <span class="comment">// negate write</span>00562     sbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_MEMWR);00563     <span class="comment">// set data bus back to input with pullups enabled</span>00564     outb(PRISM2_DATA_DDR, 0x00);00565     outb(PRISM2_DATA_PORT, 0xFF);00566     sei();00567 }00568 00569 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> prism2ReadMem(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> address)00570 {00571     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> data;00572     cli();00573     <span class="comment">// assert the address</span>00574     outb(PRISM2_HADDRESS_PORT, (address&gt;&gt;8) | (inb(PRISM2_HADDRESS_PORT)&amp;~PRISM2_HADDRESS_MASK));00575     outb(PRISM2_ADDRESS_PORT, address | (inb(PRISM2_ADDRESS_PORT)&amp;~PRISM2_ADDRESS_MASK));00576     <span class="comment">// set data bus to input with pullups enabled</span>00577     outb(PRISM2_DATA_DDR, 0x00);00578     outb(PRISM2_DATA_PORT, 0xFF);00579     <span class="comment">// assert read</span>00580     cbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_MEMRD);00581     <span class="comment">// delay</span>00582     PRISM2_MEM_ACCESS_DELAY;00583     <span class="comment">// read in the data</span>00584     data = inb( PRISM2_DATA_PIN );00585     <span class="comment">// negate read</span>00586     sbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_MEMRD);00587     sei();00588     <span class="comment">// return data</span>00589     <span class="keywordflow">return</span> data;00590 }00591 00592 <span class="keywordtype">void</span> prism2CardRegDump(<span class="keywordtype">void</span>)00593 {00594     u16 i;00595     u08 buffer[0x100];00596 00597     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"Card Config Registers\r\n"</span>);00598     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"-------------------------------\r\n"</span>);00599     <span class="comment">// read card CIS (16 bytes)</span>00600     rprintf(<span class="stringliteral">"CIS : \r\n"</span>);00601     <span class="keywordflow">for</span>(i=0; i&lt;0x100; i++)00602         buffer[i] = prism2ReadMem(i&lt;&lt;1);00603     <a class="code" href="debug_8c.html#a0">debugPrintHexTable</a>(0x100, buffer);00604 00605     <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00606 00607     rprintf(<span class="stringliteral">"COR : "</span>); <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(prism2ReadMem(0x3E0+PCMCIA_ATTR_COR)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00608     rprintf(<span class="stringliteral">"CSR : "</span>); <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(prism2ReadMem(0x3E0+PCMCIA_ATTR_CSR)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00609     rprintf(<span class="stringliteral">"PRR : "</span>); <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(prism2ReadMem(0x3E0+PCMCIA_ATTR_PRR)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00610     rprintf(<span class="stringliteral">"SCR : "</span>); <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(prism2ReadMem(0x3E0+PCMCIA_ATTR_SCR)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00611 }00612 00613 <span class="keywordtype">void</span> prism2RegDump(<span class="keywordtype">void</span>)00614 {00615     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"Prism2 Registers\r\n"</span>);00616     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"CMD     : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_CMD));        <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00617     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"PARAM0  : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_PARAM0));     <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00618     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"PARAM1  : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_PARAM1));     <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00619     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"PARAM2  : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_PARAM2));     <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00620     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"STATUS  : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_STATUS));     <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00621     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"RESP0   : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_RESP0));      <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00622     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"RESP1   : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_RESP1));      <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00623     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"RESP2   : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_RESP2));      <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00624 00625     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"INFOFID : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_INFOFID));    <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00626     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"RXFID   : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_RXFID));      <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00627     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"ALLOCFID: "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_ALLOCFID));   <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00628     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"TXFID   : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_TXFID));      <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00629 00630     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"BAP0SEL : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_BAP0SEL));    <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00631     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"BAP0OFFS: "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_BAP0OFFSET)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00632     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"BAP0DATA: "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_BAP0DATA));   <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00633 00634     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"BAP1SEL : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_BAP1SEL));    <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00635     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"BAP1OFFS: "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_BAP1OFFSET)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00636     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"BAP1DATA: "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_BAP1DATA));   <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00637 00638     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"EVSTAT  : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_EVSTAT));     <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00639     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"INTEN   : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_INTEN));      <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00640     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"EVACK   : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_EVACK));      <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00641 00642     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"SWSUP0  : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_SWSUP0));     <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00643     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"SWSUP0  : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_SWSUP1));     <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00644     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"SWSUP0  : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_SWSUP2));     <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00645 00646     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"AUXPAGE : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_AUXPAGE));    <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00647     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"AUXOFFS : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_AUXOFFSET));  <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00648     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"AUXDATA : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_AUXDATA));    <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00649 00650     delay_ms(25);00651 }</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 + -