Project

General

Profile

Statistics
| Revision:

root / trunk / docs / libdragonfly / group__i2c.html @ 1626

History | View | Annotate | Download (11.2 KB)

1 87 bcoltin
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 241 bcoltin
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3 87 bcoltin
<title>libdragonfly: I2C</title>
4 1398 cmar
<link href="tabs.css" rel="stylesheet" type="text/css">
5 87 bcoltin
<link href="doxygen.css" rel="stylesheet" type="text/css">
6
</head><body>
7 1398 cmar
<!-- Generated by Doxygen 1.5.9 -->
8 1145 deffi
<div class="navigation" id="top">
9
  <div class="tabs">
10
    <ul>
11
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
12
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
13
      <li><a href="modules.html"><span>Modules</span></a></li>
14
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
15
      <li><a href="files.html"><span>Files</span></a></li>
16
    </ul>
17
  </div>
18 241 bcoltin
</div>
19 1145 deffi
<div class="contents">
20 87 bcoltin
<h1>I2C</h1>Provides Inter-Interconnected-Communications (I2C).
21 1398 cmar
<a href="#_details">More...</a>
22
<p>
23
<table border="0" cellpadding="0" cellspacing="0">
24 87 bcoltin
<tr><td></td></tr>
25
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
26
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gaf685692265ff486494774a12f58cb12"></a><!-- doxytag: member="i2c::I2C_BIT_RATE_DIVIDER" ref="gaf685692265ff486494774a12f58cb12" args="" -->
27
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__i2c.html#gaf685692265ff486494774a12f58cb12">I2C_BIT_RATE_DIVIDER</a>&nbsp;&nbsp;&nbsp;0x0C</td></tr>
28
29
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set bit rate 12 = 100kbit/s (max speed setting is 10 for an 8 MHz clock). It is a divider, so the lower the number the faster the speed. <br></td></tr>
30
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
31
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gbf590d5cb743d0202ca44be4b3e4865d"></a><!-- doxytag: member="i2c::RING_BUFFER_NEW" ref="gbf590d5cb743d0202ca44be4b3e4865d" args="(i2c_buffer, 128, char, i2c_write_buff, i2c_addr_buff)" -->
32
&nbsp;</td><td class="memItemRight" valign="bottom"><b>RING_BUFFER_NEW</b> (i2c_buffer, 128, char, i2c_write_buff, i2c_addr_buff)</td></tr>
33
34
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__i2c.html#g28bd4994859c49763a282579c4c772a1">i2c_init</a> (char addr, <a class="el" href="i2c_8h.html#3e550321eadebd4a697a3016e6ee918b">fun_mrecv_t</a> master_recv, <a class="el" href="i2c_8h.html#e1453fbad57354c82d465c704edeead5">fun_srecv_t</a> slave_recv, <a class="el" href="i2c_8h.html#4b946a38c2f1c58d838f59c6099feba1">fun_send_t</a> slave_send)</td></tr>
35
36
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initializes the i2c module.  <a href="#g28bd4994859c49763a282579c4c772a1"></a><br></td></tr>
37
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__i2c.html#g15f534819e0f3405c4e05769af1f1e19">i2c_send</a> (char dest, char *data, size_t bytes)</td></tr>
38
39
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sends a byte array over I2C as a master.  <a href="#g15f534819e0f3405c4e05769af1f1e19"></a><br></td></tr>
40
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__i2c.html#gf5d4ed96f03670ca300298019b7f2f72">i2c_request</a> (char dest)</td></tr>
41
42
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send a master request to the destination.  <a href="#gf5d4ed96f03670ca300298019b7f2f72"></a><br></td></tr>
43
</table>
44
<hr><a name="_details"></a><h2>Detailed Description</h2>
45
Provides Inter-Interconnected-Communications (I2C).
46
<p>
47
Initiates I2C functions on an ATMega128 which has a fully hardware Two Wire Interface (TWI) module. Any Atmel chip with this hardware should be able to use the software.<p>
48
This code will operate in a multi-master enviornment and can be either a slave or a master at any time (as long as they are not one or the other at the moment. You can queue up multiple transmission modes in the buffer up to the buffer size. The buffer is implemented as a ring buffer.<p>
49
It is implemented using callback functions. Whenever you want to send a packet you can call the built in send function (as a master) and it will send an array of bytes. Master recieve and slave send/receive are all handled by the call back functions. It is up to the end user to create functions that will handle the receiving of packets. Their functions will be called with every byte recieved so you must either buffer the inputs or handle each one separately.<p>
50
On errors we will simply flush the entire buffer.<p>
51
For information on how I2C operates, read the wikipedia article <a href="http://en.wikipedia.org/wiki/I2c">http://en.wikipedia.org/wiki/I2c</a> for a good explanation of how it works. <hr><h2>Function Documentation</h2>
52 241 bcoltin
<a class="anchor" name="g28bd4994859c49763a282579c4c772a1"></a><!-- doxytag: member="i2c.c::i2c_init" ref="g28bd4994859c49763a282579c4c772a1" args="(char addr, fun_mrecv_t master_recv, fun_srecv_t slave_recv, fun_send_t slave_send)" -->
53
<div class="memitem">
54
<div class="memproto">
55
      <table class="memname">
56 87 bcoltin
        <tr>
57 241 bcoltin
          <td class="memname">int i2c_init           </td>
58
          <td>(</td>
59
          <td class="paramtype">char&nbsp;</td>
60
          <td class="paramname"> <em>addr</em>, </td>
61 87 bcoltin
        </tr>
62
        <tr>
63 241 bcoltin
          <td class="paramkey"></td>
64
          <td></td>
65
          <td class="paramtype"><a class="el" href="i2c_8h.html#3e550321eadebd4a697a3016e6ee918b">fun_mrecv_t</a>&nbsp;</td>
66
          <td class="paramname"> <em>master_recv</em>, </td>
67 87 bcoltin
        </tr>
68
        <tr>
69 241 bcoltin
          <td class="paramkey"></td>
70
          <td></td>
71
          <td class="paramtype"><a class="el" href="i2c_8h.html#e1453fbad57354c82d465c704edeead5">fun_srecv_t</a>&nbsp;</td>
72
          <td class="paramname"> <em>slave_recv</em>, </td>
73 87 bcoltin
        </tr>
74
        <tr>
75 241 bcoltin
          <td class="paramkey"></td>
76
          <td></td>
77
          <td class="paramtype"><a class="el" href="i2c_8h.html#4b946a38c2f1c58d838f59c6099feba1">fun_send_t</a>&nbsp;</td>
78
          <td class="paramname"> <em>slave_send</em></td><td>&nbsp;</td>
79 87 bcoltin
        </tr>
80
        <tr>
81 241 bcoltin
          <td></td>
82
          <td>)</td>
83 1398 cmar
          <td></td><td></td><td></td>
84 87 bcoltin
        </tr>
85
      </table>
86 241 bcoltin
</div>
87
<div class="memdoc">
88 87 bcoltin
89
<p>
90
Initializes the i2c module.
91
<p>
92
Initializes the I2C module to start listening on the i2c lines. If the callback functions are not set to null they will be called when that transmission mode is called. The address is your address that you will listen to when you are not the master.<p>
93
<dl compact><dt><b>Parameters:</b></dt><dd>
94
  <table border="0" cellspacing="2" cellpadding="0">
95
    <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>Your address on the I2C bus. </td></tr>
96
    <tr><td valign="top"></td><td valign="top"><em>master_recv</em>&nbsp;</td><td>The address of the function to call when you receive a byte when you are a master. </td></tr>
97
    <tr><td valign="top"></td><td valign="top"><em>slave_recv</em>&nbsp;</td><td>The address of the function to call when you are a slave you receive data from the master </td></tr>
98 241 bcoltin
    <tr><td valign="top"></td><td valign="top"><em>slave_send</em>&nbsp;</td><td>The address of the function to call when you are a slave and the master requests data from you.</td></tr>
99 87 bcoltin
  </table>
100
</dl>
101 241 bcoltin
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, nonzero for failure </dd></dl>
102
103 1398 cmar
<p>References <a class="el" href="i2c_8c_source.html#l00079">I2C_BIT_RATE_DIVIDER</a>, and <a class="el" href="ring__buffer_8h_source.html#l00078">RING_BUFFER_CLEAR</a>.</p>
104 1145 deffi
105 241 bcoltin
</div>
106
</div><p>
107
<a class="anchor" name="gf5d4ed96f03670ca300298019b7f2f72"></a><!-- doxytag: member="i2c.c::i2c_request" ref="gf5d4ed96f03670ca300298019b7f2f72" args="(char dest)" -->
108
<div class="memitem">
109
<div class="memproto">
110
      <table class="memname">
111 87 bcoltin
        <tr>
112 241 bcoltin
          <td class="memname">int i2c_request           </td>
113
          <td>(</td>
114
          <td class="paramtype">char&nbsp;</td>
115
          <td class="paramname"> <em>dest</em>          </td>
116
          <td>&nbsp;)&nbsp;</td>
117 1398 cmar
          <td></td>
118 87 bcoltin
        </tr>
119
      </table>
120 241 bcoltin
</div>
121
<div class="memdoc">
122 87 bcoltin
123
<p>
124
Send a master request to the destination.
125
<p>
126
Sends a request of data from the target address and calls the callback function to handle data as it comes in. This function will not work if the slave has not informationt to send or has nothing implemented to send it.<p>
127
<dl compact><dt><b>Parameters:</b></dt><dd>
128
  <table border="0" cellspacing="2" cellpadding="0">
129 241 bcoltin
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>The destination that we want to receive information from.</td></tr>
130 87 bcoltin
  </table>
131
</dl>
132 241 bcoltin
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, nonzero for failure </dd></dl>
133
134 1398 cmar
<p>References <a class="el" href="ring__buffer_8h_source.html#l00106">RING_BUFFER_ADD</a>, and <a class="el" href="ring__buffer_8h_source.html#l00095">RING_BUFFER_FULL</a>.</p>
135 1145 deffi
136 241 bcoltin
</div>
137
</div><p>
138
<a class="anchor" name="g15f534819e0f3405c4e05769af1f1e19"></a><!-- doxytag: member="i2c.c::i2c_send" ref="g15f534819e0f3405c4e05769af1f1e19" args="(char dest, char *data, size_t bytes)" -->
139
<div class="memitem">
140
<div class="memproto">
141
      <table class="memname">
142 87 bcoltin
        <tr>
143 241 bcoltin
          <td class="memname">int i2c_send           </td>
144
          <td>(</td>
145
          <td class="paramtype">char&nbsp;</td>
146
          <td class="paramname"> <em>dest</em>, </td>
147 87 bcoltin
        </tr>
148
        <tr>
149 241 bcoltin
          <td class="paramkey"></td>
150
          <td></td>
151
          <td class="paramtype">char *&nbsp;</td>
152
          <td class="paramname"> <em>data</em>, </td>
153 87 bcoltin
        </tr>
154
        <tr>
155 241 bcoltin
          <td class="paramkey"></td>
156
          <td></td>
157
          <td class="paramtype">size_t&nbsp;</td>
158
          <td class="paramname"> <em>bytes</em></td><td>&nbsp;</td>
159 87 bcoltin
        </tr>
160
        <tr>
161 241 bcoltin
          <td></td>
162
          <td>)</td>
163 1398 cmar
          <td></td><td></td><td></td>
164 87 bcoltin
        </tr>
165
      </table>
166 241 bcoltin
</div>
167
<div class="memdoc">
168 87 bcoltin
169
<p>
170
Sends a byte array over I2C as a master.
171
<p>
172
Will perform a send over I2C to the destination from data for the ammount of bytes that bytes is.<p>
173
<dl compact><dt><b>Parameters:</b></dt><dd>
174
  <table border="0" cellspacing="2" cellpadding="0">
175
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>Destination address of the data on the I2C bus. </td></tr>
176
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>The pointer to the byte array of data </td></tr>
177 241 bcoltin
    <tr><td valign="top"></td><td valign="top"><em>bytes</em>&nbsp;</td><td>The amount of bytes long that the byte array is. This is how many bytes from the array that the function will send.</td></tr>
178 87 bcoltin
  </table>
179
</dl>
180 241 bcoltin
<dl class="return" compact><dt><b>Returns:</b></dt><dd>zero for success, nonzero for failure </dd></dl>
181
182 1398 cmar
<p>References <a class="el" href="ring__buffer_8h_source.html#l00106">RING_BUFFER_ADD</a>, and <a class="el" href="ring__buffer_8h_source.html#l00095">RING_BUFFER_FULL</a>.</p>
183 1145 deffi
184 241 bcoltin
</div>
185
</div><p>
186 1145 deffi
</div>
187 1398 cmar
<hr size="1"><address style="text-align: right;"><small>Generated on Mon Sep 7 19:07:28 2009 for libdragonfly by&nbsp;
188 87 bcoltin
<a href="http://www.doxygen.org/index.html">
189 1398 cmar
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
190 87 bcoltin
</body>
191
</html>