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

📄 prism2_8c-source.html

📁 单片机的软件
💻 HTML
📖 第 1 页 / 共 3 页
字号:
00434     u08 result;00435     result = prism2WriteBAP0(<span class="keywordtype">id</span>, offset, data, len);00436     prism2Command(PRISM2_CMD_ACCESS_WR, <span class="keywordtype">id</span>);00437     <span class="keywordflow">return</span> result;00438 }00439 00440 u08 prism2ReadBAP0(u16 <span class="keywordtype">id</span>, u16 offset, u16* data, u16 len)00441 {00442     <span class="comment">// wait for BAP to be ready</span>00443     <span class="comment">//rprintf("PRISM_BAP: Wait1\r\n");</span>00444     <span class="keywordflow">while</span>( prism2Read16(PRISM2_REG_BAP0OFFSET) &amp; PRISM2_BAPOFFSET_BUSY);00445     <span class="comment">// set ID</span>00446     prism2Write16(PRISM2_REG_BAP0SEL, <span class="keywordtype">id</span>);00447     <span class="comment">// set offset</span>00448     prism2Write16(PRISM2_REG_BAP0OFFSET, offset);00449     <span class="comment">// wait for BAP to be ready</span>00450     <span class="comment">//rprintf("PRISM_BAP: Wait2\r\n");</span>00451     <span class="keywordflow">while</span>( prism2Read16(PRISM2_REG_BAP0OFFSET) &amp; PRISM2_BAPOFFSET_BUSY);00452     <span class="comment">// check for error</span>00453     <span class="keywordflow">if</span>(prism2Read16(PRISM2_REG_BAP0OFFSET) &amp; PRISM2_BAPOFFSET_ERROR)00454         <span class="keywordflow">return</span> -1;00455     <span class="comment">// read data</span>00456     <span class="comment">//rprintf("PRISM_BAP: Read\r\n");</span>00457     <span class="keywordflow">while</span>(len--)00458         *data++ = prism2Read16(PRISM2_REG_BAP0DATA);00459     <span class="comment">// return success</span>00460     <span class="keywordflow">return</span> 0;00461 }00462 00463 u08 prism2WriteBAP0(u16 <span class="keywordtype">id</span>, u16 offset, u16* data, u16 len)00464 {00465     <span class="comment">// wait for BAP to be ready</span>00466     <span class="comment">//rprintf("PRISM_BAP: Wait1\r\n");</span>00467     <span class="keywordflow">while</span>( prism2Read16(PRISM2_REG_BAP0OFFSET) &amp; PRISM2_BAPOFFSET_BUSY);00468     <span class="comment">// set ID</span>00469     prism2Write16(PRISM2_REG_BAP0SEL, <span class="keywordtype">id</span>);00470     <span class="comment">// set offset</span>00471     prism2Write16(PRISM2_REG_BAP0OFFSET, offset);00472     <span class="comment">// wait for BAP to be ready</span>00473     <span class="comment">//rprintf("PRISM_BAP: Wait2\r\n");</span>00474     <span class="keywordflow">while</span>( prism2Read16(PRISM2_REG_BAP0OFFSET) &amp; PRISM2_BAPOFFSET_BUSY);00475     <span class="comment">// check for error</span>00476     <span class="keywordflow">if</span>(prism2Read16(PRISM2_REG_BAP0OFFSET) &amp; PRISM2_BAPOFFSET_ERROR)00477         <span class="keywordflow">return</span> -1;00478     <span class="comment">// write data</span>00479     <span class="comment">//rprintf("PRISM_BAP: Write\r\n");</span>00480     <span class="keywordflow">while</span>(len--)00481         prism2Write16(PRISM2_REG_BAP0DATA, *data++);00482     <span class="comment">// return success</span>00483     <span class="keywordflow">return</span> 0;00484 }00485 00486 <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)00487 {00488     cli();00489     <span class="comment">// assert the address</span>00490     outb(PRISM2_HADDRESS_PORT, (address&gt;&gt;8) | (inb(PRISM2_HADDRESS_PORT)&amp;~PRISM2_HADDRESS_MASK));00491     outb(PRISM2_ADDRESS_PORT, address | (inb(PRISM2_ADDRESS_PORT)&amp;~PRISM2_ADDRESS_MASK));00492     <span class="comment">// set data bus as output</span>00493     outb(PRISM2_DATA_DDR, 0xFF);00494     <span class="comment">// place data on bus</span>00495     outb(PRISM2_DATA_PORT, data);00496     <span class="comment">// assert write</span>00497     cbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_IOWR);00498     <span class="comment">// delay</span>00499     PRISM2_IO_ACCESS_DELAY;00500     <span class="comment">// negate write</span>00501     sbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_IOWR);00502     <span class="comment">// set data bus back to input with pullups enabled</span>00503     outb(PRISM2_DATA_DDR, 0x00);00504     outb(PRISM2_DATA_PORT, 0xFF);00505     sei();00506 }00507 00508 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> prism2Read(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> address)00509 {00510     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> data;00511     cli();00512     <span class="comment">// assert the address</span>00513     outb(PRISM2_HADDRESS_PORT, (address&gt;&gt;8) | (inb(PRISM2_HADDRESS_PORT)&amp;~PRISM2_HADDRESS_MASK));00514     outb(PRISM2_ADDRESS_PORT, address | (inb(PRISM2_ADDRESS_PORT)&amp;~PRISM2_ADDRESS_MASK));00515     <span class="comment">// set data bus to input with pullups enabled</span>00516     outb(PRISM2_DATA_DDR, 0x00);00517     outb(PRISM2_DATA_PORT, 0xFF);00518     <span class="comment">// assert read</span>00519     cbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_IORD);00520     <span class="comment">// delay</span>00521     PRISM2_IO_ACCESS_DELAY;00522     <span class="comment">// read in the data</span>00523     data = inb( PRISM2_DATA_PIN );00524     <span class="comment">// negate read</span>00525     sbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_IORD);00526     <span class="comment">// return data</span>00527     sei();00528     <span class="keywordflow">return</span> data;00529 }00530 00531 <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)00532 {00533     prism2Write(address, data);00534     prism2Write(address+1, data&gt;&gt;8);00535 }00536 00537 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> prism2Read16(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> address)00538 {00539     <span class="keywordflow">return</span> prism2Read(address) | (prism2Read(address+1)&lt;&lt;8);00540 }00541 00542 <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)00543 {00544     cli();00545     <span class="comment">// assert the address</span>00546     outb(PRISM2_HADDRESS_PORT, (address&gt;&gt;8) | (inb(PRISM2_HADDRESS_PORT)&amp;~PRISM2_HADDRESS_MASK));00547     outb(PRISM2_ADDRESS_PORT, address | (inb(PRISM2_ADDRESS_PORT)&amp;~PRISM2_ADDRESS_MASK));00548     <span class="comment">// set data bus as output</span>00549     outb(PRISM2_DATA_DDR, 0xFF);00550     <span class="comment">// place data on bus</span>00551     outb(PRISM2_DATA_PORT, data);00552     <span class="comment">// assert write</span>00553     cbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_MEMWR);00554     <span class="comment">// delay</span>00555     PRISM2_MEM_ACCESS_DELAY;00556     <span class="comment">// negate write</span>00557     sbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_MEMWR);00558     <span class="comment">// set data bus back to input with pullups enabled</span>00559     outb(PRISM2_DATA_DDR, 0x00);00560     outb(PRISM2_DATA_PORT, 0xFF);00561     sei();00562 }00563 00564 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> prism2ReadMem(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> address)00565 {00566     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> data;00567     cli();00568     <span class="comment">// assert the address</span>00569     outb(PRISM2_HADDRESS_PORT, (address&gt;&gt;8) | (inb(PRISM2_HADDRESS_PORT)&amp;~PRISM2_HADDRESS_MASK));00570     outb(PRISM2_ADDRESS_PORT, address | (inb(PRISM2_ADDRESS_PORT)&amp;~PRISM2_ADDRESS_MASK));00571     <span class="comment">// set data bus to input with pullups enabled</span>00572     outb(PRISM2_DATA_DDR, 0x00);00573     outb(PRISM2_DATA_PORT, 0xFF);00574     <span class="comment">// assert read</span>00575     cbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_MEMRD);00576     <span class="comment">// delay</span>00577     PRISM2_MEM_ACCESS_DELAY;00578     <span class="comment">// read in the data</span>00579     data = inb( PRISM2_DATA_PIN );00580     <span class="comment">// negate read</span>00581     sbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_MEMRD);00582     sei();00583     <span class="comment">// return data</span>00584     <span class="keywordflow">return</span> data;00585 }00586 00587 <span class="keywordtype">void</span> prism2CardRegDump(<span class="keywordtype">void</span>)00588 {00589     u16 i;00590     u08 buffer[0x100];00591 00592     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"Card Config Registers\r\n"</span>);00593     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"-------------------------------\r\n"</span>);00594     <span class="comment">// read card CIS (16 bytes)</span>00595     rprintf(<span class="stringliteral">"CIS : \r\n"</span>);00596     <span class="keywordflow">for</span>(i=0; i&lt;0x100; i++)00597         buffer[i] = prism2ReadMem(i&lt;&lt;1);00598     <a class="code" href="debug_8c.html#a0">debugPrintHexTable</a>(0x100, buffer);00599 00600     <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00601 00602     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>();00603     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>();00604     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>();00605     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>();00606 }00607 00608 <span class="keywordtype">void</span> prism2RegDump(<span class="keywordtype">void</span>)00609 {00610     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"Prism2 Registers\r\n"</span>);00611     <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>();00612     <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>();00613     <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>();00614     <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>();00615     <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>();00616     <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>();00617     <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>();00618     <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>();00619 00620     <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>();00621     <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>();00622     <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>();00623     <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>();00624 00625     <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>();00626     <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>();00627     <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>();00628 00629     <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>();00630     <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>();00631     <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>();00632 00633     <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>();00634     <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>();00635     <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>();00636 00637     <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>();00638     <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>();00639     <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>();00640 00641     <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>();00642     <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>();00643     <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>();00644 00645     delay_ms(25);00646 }</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Aug 22 04:29:27 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 + -