?lang_form? ?lang_select? ?lang_submit? ?lang_endform?
{HEADER END}
{BLAME START}

library

?curdirlinks? -

Blame information for rev 6

Line No. Rev Author Line
1 6 kaklik <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3 <title>Procyon AVRlib: MultiMedia and SD Flash Card Interface (mmc.c)</title>
4 <link href="dox.css" rel="stylesheet" type="text/css">
5 </head><body>
6 <!-- Generated by Doxygen 1.4.2 -->
7 <div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
8 <h1>MultiMedia and SD Flash Card Interface (mmc.c)<br>
9 <small>
10 [<a class="el" href="group__driver__hw.html">Drivers (for external hardware)</a>]</small>
11 </h1><hr><a name="_details"></a><h2>Detailed Description</h2>
12 <div class="fragment"><pre class="fragment"><span class="preprocessor"> #include "<a class="code" href="mmc_8h.html">mmc.h</a>"</span>
13 </pre></div> <dl compact><dt><b>Description</b></dt><dd>This library offers some simple functions which can be used to read and write data on a MultiMedia or SecureDigital (SD) Flash Card. Although MM and SD Cards are designed to operate with their own special bus wiring and protocols, both types of cards also provide a simple SPI-like interface mode which is exceptionally useful when attempting to use the cards in embedded systems.</dd></dl>
14 <dl compact><dt><b>Wiring</b></dt><dd>To work with this library, the card must be wired to the SPI port of the Atmel microcontroller as described below. Typical cards can operate at up to 25MHz maximum SPI clock rate (thus faster than most AVR's maximum SPI clock rate). <pre>
15 _________________
16 / 1 2 3 4 5 6 78 | &lt;- view of MMC/SD card looking at contacts
17 / 9 | Pins 8 and 9 are present only on SD cards
18 | MMC/SD Card |
19 | |
20 /\/\/\/\/\/\/\/\/\/\
21 1 - CS (chip select) - wire to any available I/O pin(*)
22 2 - DIN (data in, card&lt;-host) - wire to SPI MOSI pin
23 3 - VSS (ground) - wire to ground
24 4 - VDD (power, 3.3V only?) - wire to power (MIGHT BE 3.3V ONLY!)
25 5 - SCLK (data clock) - wire to SPI SCK pin
26 6 - VSS (ground) - wire to ground
27 7 - DOUT (data out, card-&gt;host) - wire to SPI MISO pin</pre></dd></dl>
28 (*) you must define this chip select I/O pin in <a class="el" href="mmcconf_8h.html">mmcconf.h</a> <dl compact><dt><b>Note:</b></dt><dd><pre> This code is currently below version 1.0, and therefore is considered
29 to be lacking in some functionality or documentation, or may not be fully
30 tested. Nonetheless, you can expect most functions to work.
31 </pre></dd></dl>
32  
33 <p>
34 <table border="0" cellpadding="0" cellspacing="0">
35 <tr><td></td></tr>
36 <tr><td colspan="2"><br><h2>Defines</h2></td></tr>
37 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga6" doxytag="mmc::MMC_GO_IDLE_STATE"></a>
38 #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga6">MMC_GO_IDLE_STATE</a>&nbsp;&nbsp;&nbsp;0</td></tr>
39  
40 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">initialize card to SPI-type access <br></td></tr>
41 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga7" doxytag="mmc::MMC_SEND_OP_COND"></a>
42 #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga7">MMC_SEND_OP_COND</a>&nbsp;&nbsp;&nbsp;1</td></tr>
43  
44 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set card operational mode <br></td></tr>
45 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga8" doxytag="mmc::MMC_SEND_CSD"></a>
46 #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga8">MMC_SEND_CSD</a>&nbsp;&nbsp;&nbsp;9</td></tr>
47  
48 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get card's CSD <br></td></tr>
49 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga9" doxytag="mmc::MMC_SEND_CID"></a>
50 #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga9">MMC_SEND_CID</a>&nbsp;&nbsp;&nbsp;10</td></tr>
51  
52 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get card's CID <br></td></tr>
53 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga10" doxytag="mmc::MMC_SEND_STATUS"></a>
54 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_SEND_STATUS</b>&nbsp;&nbsp;&nbsp;13</td></tr>
55  
56 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga11" doxytag="mmc::MMC_SET_BLOCKLEN"></a>
57 #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga11">MMC_SET_BLOCKLEN</a>&nbsp;&nbsp;&nbsp;16</td></tr>
58  
59 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set number of bytes to transfer per block. <br></td></tr>
60 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga12" doxytag="mmc::MMC_READ_SINGLE_BLOCK"></a>
61 #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga12">MMC_READ_SINGLE_BLOCK</a>&nbsp;&nbsp;&nbsp;17</td></tr>
62  
63 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">read a block <br></td></tr>
64 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga13" doxytag="mmc::MMC_WRITE_BLOCK"></a>
65 #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga13">MMC_WRITE_BLOCK</a>&nbsp;&nbsp;&nbsp;24</td></tr>
66  
67 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">write a block <br></td></tr>
68 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga14" doxytag="mmc::MMC_PROGRAM_CSD"></a>
69 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_PROGRAM_CSD</b>&nbsp;&nbsp;&nbsp;27</td></tr>
70  
71 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga15" doxytag="mmc::MMC_SET_WRITE_PROT"></a>
72 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_SET_WRITE_PROT</b>&nbsp;&nbsp;&nbsp;28</td></tr>
73  
74 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga16" doxytag="mmc::MMC_CLR_WRITE_PROT"></a>
75 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_CLR_WRITE_PROT</b>&nbsp;&nbsp;&nbsp;29</td></tr>
76  
77 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga17" doxytag="mmc::MMC_SEND_WRITE_PROT"></a>
78 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_SEND_WRITE_PROT</b>&nbsp;&nbsp;&nbsp;30</td></tr>
79  
80 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga18" doxytag="mmc::MMC_TAG_SECTOR_START"></a>
81 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_TAG_SECTOR_START</b>&nbsp;&nbsp;&nbsp;32</td></tr>
82  
83 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga19" doxytag="mmc::MMC_TAG_SECTOR_END"></a>
84 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_TAG_SECTOR_END</b>&nbsp;&nbsp;&nbsp;33</td></tr>
85  
86 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga20" doxytag="mmc::MMC_UNTAG_SECTOR"></a>
87 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_UNTAG_SECTOR</b>&nbsp;&nbsp;&nbsp;34</td></tr>
88  
89 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga21" doxytag="mmc::MMC_TAG_ERASE_GROUP_START"></a>
90 #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga21">MMC_TAG_ERASE_GROUP_START</a>&nbsp;&nbsp;&nbsp;35</td></tr>
91  
92 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets beginning of erase group (mass erase). <br></td></tr>
93 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga22" doxytag="mmc::MMC_TAG_ERARE_GROUP_END"></a>
94 #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga22">MMC_TAG_ERARE_GROUP_END</a>&nbsp;&nbsp;&nbsp;36</td></tr>
95  
96 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets end of erase group (mass erase). <br></td></tr>
97 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga23" doxytag="mmc::MMC_UNTAG_ERASE_GROUP"></a>
98 #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga23">MMC_UNTAG_ERASE_GROUP</a>&nbsp;&nbsp;&nbsp;37</td></tr>
99  
100 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Untag (unset) erase group (mass erase). <br></td></tr>
101 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga24" doxytag="mmc::MMC_ERASE"></a>
102 #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga24">MMC_ERASE</a>&nbsp;&nbsp;&nbsp;38</td></tr>
103  
104 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Perform block/mass erase. <br></td></tr>
105 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga25" doxytag="mmc::MMC_CRC_ON_OFF"></a>
106 #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga25">MMC_CRC_ON_OFF</a>&nbsp;&nbsp;&nbsp;59</td></tr>
107  
108 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Turns CRC check on/off. <br></td></tr>
109 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga26" doxytag="mmc::MMC_R1_BUSY"></a>
110 #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga26">MMC_R1_BUSY</a>&nbsp;&nbsp;&nbsp;0x80</td></tr>
111  
112 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">R1 response: bit indicates card is busy. <br></td></tr>
113 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga27" doxytag="mmc::MMC_R1_PARAMETER"></a>
114 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_R1_PARAMETER</b>&nbsp;&nbsp;&nbsp;0x40</td></tr>
115  
116 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga28" doxytag="mmc::MMC_R1_ADDRESS"></a>
117 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_R1_ADDRESS</b>&nbsp;&nbsp;&nbsp;0x20</td></tr>
118  
119 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga29" doxytag="mmc::MMC_R1_ERASE_SEQ"></a>
120 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_R1_ERASE_SEQ</b>&nbsp;&nbsp;&nbsp;0x10</td></tr>
121  
122 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga30" doxytag="mmc::MMC_R1_COM_CRC"></a>
123 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_R1_COM_CRC</b>&nbsp;&nbsp;&nbsp;0x08</td></tr>
124  
125 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga31" doxytag="mmc::MMC_R1_ILLEGAL_COM"></a>
126 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_R1_ILLEGAL_COM</b>&nbsp;&nbsp;&nbsp;0x04</td></tr>
127  
128 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga32" doxytag="mmc::MMC_R1_ERASE_RESET"></a>
129 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_R1_ERASE_RESET</b>&nbsp;&nbsp;&nbsp;0x02</td></tr>
130  
131 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga33" doxytag="mmc::MMC_R1_IDLE_STATE"></a>
132 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_R1_IDLE_STATE</b>&nbsp;&nbsp;&nbsp;0x01</td></tr>
133  
134 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga34" doxytag="mmc::MMC_STARTBLOCK_READ"></a>
135 #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga34">MMC_STARTBLOCK_READ</a>&nbsp;&nbsp;&nbsp;0xFE</td></tr>
136  
137 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">when received from card, indicates that a block of data will follow <br></td></tr>
138 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga35" doxytag="mmc::MMC_STARTBLOCK_WRITE"></a>
139 #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga35">MMC_STARTBLOCK_WRITE</a>&nbsp;&nbsp;&nbsp;0xFE</td></tr>
140  
141 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">when sent to card, indicates that a block of data will follow <br></td></tr>
142 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga36" doxytag="mmc::MMC_STARTBLOCK_MWRITE"></a>
143 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_STARTBLOCK_MWRITE</b>&nbsp;&nbsp;&nbsp;0xFC</td></tr>
144  
145 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga37" doxytag="mmc::MMC_STOPTRAN_WRITE"></a>
146 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_STOPTRAN_WRITE</b>&nbsp;&nbsp;&nbsp;0xFD</td></tr>
147  
148 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga38" doxytag="mmc::MMC_DE_MASK"></a>
149 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_DE_MASK</b>&nbsp;&nbsp;&nbsp;0x1F</td></tr>
150  
151 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga39" doxytag="mmc::MMC_DE_ERROR"></a>
152 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_DE_ERROR</b>&nbsp;&nbsp;&nbsp;0x01</td></tr>
153  
154 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga40" doxytag="mmc::MMC_DE_CC_ERROR"></a>
155 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_DE_CC_ERROR</b>&nbsp;&nbsp;&nbsp;0x02</td></tr>
156  
157 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga41" doxytag="mmc::MMC_DE_ECC_FAIL"></a>
158 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_DE_ECC_FAIL</b>&nbsp;&nbsp;&nbsp;0x04</td></tr>
159  
160 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga42" doxytag="mmc::MMC_DE_OUT_OF_RANGE"></a>
161 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_DE_OUT_OF_RANGE</b>&nbsp;&nbsp;&nbsp;0x04</td></tr>
162  
163 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga43" doxytag="mmc::MMC_DE_CARD_LOCKED"></a>
164 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_DE_CARD_LOCKED</b>&nbsp;&nbsp;&nbsp;0x04</td></tr>
165  
166 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga44" doxytag="mmc::MMC_DR_MASK"></a>
167 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_DR_MASK</b>&nbsp;&nbsp;&nbsp;0x1F</td></tr>
168  
169 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga45" doxytag="mmc::MMC_DR_ACCEPT"></a>
170 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_DR_ACCEPT</b>&nbsp;&nbsp;&nbsp;0x05</td></tr>
171  
172 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga46" doxytag="mmc::MMC_DR_REJECT_CRC"></a>
173 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_DR_REJECT_CRC</b>&nbsp;&nbsp;&nbsp;0x0B</td></tr>
174  
175 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga47" doxytag="mmc::MMC_DR_REJECT_WRITE_ERROR"></a>
176 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>MMC_DR_REJECT_WRITE_ERROR</b>&nbsp;&nbsp;&nbsp;0x0D</td></tr>
177  
178 <tr><td colspan="2"><br><h2>Functions</h2></td></tr>
179 <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga0">mmcInit</a> (void)</td></tr>
180  
181 <tr><td class="memItemLeft" nowrap align="right" valign="top">u08&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga1">mmcReset</a> (void)</td></tr>
182  
183 <tr><td class="memItemLeft" nowrap align="right" valign="top">u08&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga2">mmcSendCommand</a> (u08 cmd, u32 arg)</td></tr>
184  
185 <tr><td class="memItemLeft" nowrap align="right" valign="top">u08&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga3">mmcRead</a> (u32 sector, u08 *buffer)</td></tr>
186  
187 <tr><td class="memItemLeft" nowrap align="right" valign="top">u08&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga4">mmcWrite</a> (u32 sector, u08 *buffer)</td></tr>
188  
189 <tr><td class="memItemLeft" nowrap align="right" valign="top">u08&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mmc.html#ga5">mmcCommand</a> (u08 cmd, u32 arg)</td></tr>
190  
191 </table>
192 <hr><h2>Function Documentation</h2>
193 <a class="anchor" name="ga5" doxytag="mmc.h::mmcCommand"></a><p>
194 <table class="mdTable" cellpadding="2" cellspacing="0">
195 <tr>
196 <td class="mdRow">
197 <table cellpadding="0" cellspacing="0" border="0">
198 <tr>
199 <td class="md" nowrap valign="top">u08 mmcCommand </td>
200 <td class="md" valign="top">(&nbsp;</td>
201 <td class="md" nowrap valign="top">u08&nbsp;</td>
202 <td class="mdname" nowrap> <em>cmd</em>, </td>
203 </tr>
204 <tr>
205 <td class="md" nowrap align="right"></td>
206 <td class="md"></td>
207 <td class="md" nowrap>u32&nbsp;</td>
208 <td class="mdname" nowrap> <em>arg</em></td>
209 </tr>
210 <tr>
211 <td class="md"></td>
212 <td class="md">)&nbsp;</td>
213 <td class="md" colspan="2"></td>
214 </tr>
215 </table>
216 </td>
217 </tr>
218 </table>
219 <table cellspacing="5" cellpadding="0" border="0">
220 <tr>
221 <td>
222 &nbsp;
223 </td>
224 <td>
225  
226 <p>
227 Internal command function. Issues a generic MMC command as specified by cmd and arg.
228 <p>
229 Definition at line <a class="el" href="mmc_8c-source.html#l00189">189</a> of file <a class="el" href="mmc_8c-source.html">mmc.c</a>. </td>
230 </tr>
231 </table>
232 <a class="anchor" name="ga0" doxytag="mmc.h::mmcInit"></a><p>
233 <table class="mdTable" cellpadding="2" cellspacing="0">
234 <tr>
235 <td class="mdRow">
236 <table cellpadding="0" cellspacing="0" border="0">
237 <tr>
238 <td class="md" nowrap valign="top">void mmcInit </td>
239 <td class="md" valign="top">(&nbsp;</td>
240 <td class="md" nowrap valign="top">void&nbsp;</td>
241 <td class="mdname1" valign="top" nowrap> </td>
242 <td class="md" valign="top">&nbsp;)&nbsp;</td>
243 <td class="md" nowrap></td>
244 </tr>
245 </table>
246 </td>
247 </tr>
248 </table>
249 <table cellspacing="5" cellpadding="0" border="0">
250 <tr>
251 <td>
252 &nbsp;
253 </td>
254 <td>
255  
256 <p>
257 Initialize AVR&lt;-&gt;MMC hardware interface. Prepares hardware for MMC access.
258 <p>
259 Definition at line <a class="el" href="mmc_8c-source.html#l00040">40</a> of file <a class="el" href="mmc_8c-source.html">mmc.c</a>. </td>
260 </tr>
261 </table>
262 <a class="anchor" name="ga3" doxytag="mmc.h::mmcRead"></a><p>
263 <table class="mdTable" cellpadding="2" cellspacing="0">
264 <tr>
265 <td class="mdRow">
266 <table cellpadding="0" cellspacing="0" border="0">
267 <tr>
268 <td class="md" nowrap valign="top">u08 mmcRead </td>
269 <td class="md" valign="top">(&nbsp;</td>
270 <td class="md" nowrap valign="top">u32&nbsp;</td>
271 <td class="mdname" nowrap> <em>sector</em>, </td>
272 </tr>
273 <tr>
274 <td class="md" nowrap align="right"></td>
275 <td class="md"></td>
276 <td class="md" nowrap>u08 *&nbsp;</td>
277 <td class="mdname" nowrap> <em>buffer</em></td>
278 </tr>
279 <tr>
280 <td class="md"></td>
281 <td class="md">)&nbsp;</td>
282 <td class="md" colspan="2"></td>
283 </tr>
284 </table>
285 </td>
286 </tr>
287 </table>
288 <table cellspacing="5" cellpadding="0" border="0">
289 <tr>
290 <td>
291 &nbsp;
292 </td>
293 <td>
294  
295 <p>
296 Read 512-byte sector from card to buffer Returns zero if successful.
297 <p>
298 Definition at line <a class="el" href="mmc_8c-source.html#l00116">116</a> of file <a class="el" href="mmc_8c-source.html">mmc.c</a>. </td>
299 </tr>
300 </table>
301 <a class="anchor" name="ga1" doxytag="mmc.h::mmcReset"></a><p>
302 <table class="mdTable" cellpadding="2" cellspacing="0">
303 <tr>
304 <td class="mdRow">
305 <table cellpadding="0" cellspacing="0" border="0">
306 <tr>
307 <td class="md" nowrap valign="top">u08 mmcReset </td>
308 <td class="md" valign="top">(&nbsp;</td>
309 <td class="md" nowrap valign="top">void&nbsp;</td>
310 <td class="mdname1" valign="top" nowrap> </td>
311 <td class="md" valign="top">&nbsp;)&nbsp;</td>
312 <td class="md" nowrap></td>
313 </tr>
314 </table>
315 </td>
316 </tr>
317 </table>
318 <table cellspacing="5" cellpadding="0" border="0">
319 <tr>
320 <td>
321 &nbsp;
322 </td>
323 <td>
324  
325 <p>
326 Initialize the card and prepare it for use. Returns zero if successful.
327 <p>
328 Definition at line <a class="el" href="mmc_8c-source.html#l00049">49</a> of file <a class="el" href="mmc_8c-source.html">mmc.c</a>. </td>
329 </tr>
330 </table>
331 <a class="anchor" name="ga2" doxytag="mmc.h::mmcSendCommand"></a><p>
332 <table class="mdTable" cellpadding="2" cellspacing="0">
333 <tr>
334 <td class="mdRow">
335 <table cellpadding="0" cellspacing="0" border="0">
336 <tr>
337 <td class="md" nowrap valign="top">u08 mmcSendCommand </td>
338 <td class="md" valign="top">(&nbsp;</td>
339 <td class="md" nowrap valign="top">u08&nbsp;</td>
340 <td class="mdname" nowrap> <em>cmd</em>, </td>
341 </tr>
342 <tr>
343 <td class="md" nowrap align="right"></td>
344 <td class="md"></td>
345 <td class="md" nowrap>u32&nbsp;</td>
346 <td class="mdname" nowrap> <em>arg</em></td>
347 </tr>
348 <tr>
349 <td class="md"></td>
350 <td class="md">)&nbsp;</td>
351 <td class="md" colspan="2"></td>
352 </tr>
353 </table>
354 </td>
355 </tr>
356 </table>
357 <table cellspacing="5" cellpadding="0" border="0">
358 <tr>
359 <td>
360 &nbsp;
361 </td>
362 <td>
363  
364 <p>
365 Send card an MMC command. Returns R1 result code.
366 <p>
367 Definition at line <a class="el" href="mmc_8c-source.html#l00102">102</a> of file <a class="el" href="mmc_8c-source.html">mmc.c</a>. </td>
368 </tr>
369 </table>
370 <a class="anchor" name="ga4" doxytag="mmc.h::mmcWrite"></a><p>
371 <table class="mdTable" cellpadding="2" cellspacing="0">
372 <tr>
373 <td class="mdRow">
374 <table cellpadding="0" cellspacing="0" border="0">
375 <tr>
376 <td class="md" nowrap valign="top">u08 mmcWrite </td>
377 <td class="md" valign="top">(&nbsp;</td>
378 <td class="md" nowrap valign="top">u32&nbsp;</td>
379 <td class="mdname" nowrap> <em>sector</em>, </td>
380 </tr>
381 <tr>
382 <td class="md" nowrap align="right"></td>
383 <td class="md"></td>
384 <td class="md" nowrap>u08 *&nbsp;</td>
385 <td class="mdname" nowrap> <em>buffer</em></td>
386 </tr>
387 <tr>
388 <td class="md"></td>
389 <td class="md">)&nbsp;</td>
390 <td class="md" colspan="2"></td>
391 </tr>
392 </table>
393 </td>
394 </tr>
395 </table>
396 <table cellspacing="5" cellpadding="0" border="0">
397 <tr>
398 <td>
399 &nbsp;
400 </td>
401 <td>
402  
403 <p>
404 Write 512-byte sector from buffer to card Returns zero if successful.
405 <p>
406 Definition at line <a class="el" href="mmc_8c-source.html#l00147">147</a> of file <a class="el" href="mmc_8c-source.html">mmc.c</a>. </td>
407 </tr>
408 </table>
409 <hr size="1"><address style="align: right;"><small>Generated on Sun Oct 29 03:41:09 2006 for Procyon AVRlib by&nbsp;
410 <a href="http://www.doxygen.org/index.html">
411 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.2 </small></address>
412 </body>
413 </html>
{BLAME END}
{FOOTER START}

Powered by WebSVN v2.8.3