<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.mcselec.com/bavr/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.mcselec.com/bavr/index.php?action=history&amp;feed=atom&amp;title=Using_the_I2C_protocol%2Fde</id>
		<title>Using the I2C protocol/de - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.mcselec.com/bavr/index.php?action=history&amp;feed=atom&amp;title=Using_the_I2C_protocol%2Fde"/>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=Using_the_I2C_protocol/de&amp;action=history"/>
		<updated>2026-04-26T04:01:04Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.18.6</generator>

	<entry>
		<id>http://wiki.mcselec.com/bavr/index.php?title=Using_the_I2C_protocol/de&amp;diff=1714&amp;oldid=prev</id>
		<title>Admin: 1 revision</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=Using_the_I2C_protocol/de&amp;diff=1714&amp;oldid=prev"/>
				<updated>2013-02-15T19:05:59Z</updated>
		
		<summary type="html">&lt;p&gt;1 revision&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:05, 15 February 2013&lt;/td&gt;
		&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/index.php?title=Using_the_I2C_protocol/de&amp;diff=1713&amp;oldid=prev</id>
		<title>Admin at 16:43, 13 February 2013</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=Using_the_I2C_protocol/de&amp;diff=1713&amp;oldid=prev"/>
				<updated>2013-02-13T16:43:44Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== (**COPIED FROM ENGLISH PAGE**) === &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;I²C bus&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
I²C bus is an abbreviation for Inter Integrated Circuit bus. It is also known as IIC and I2C.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I²C is a serial and synchronous bus protocol. In standard applications hardware and timing are often the same. The way data is treated on the I²C bus is to be defined by the manufacturer of the I²C master and slave chips.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a simple I²C system there can only be one master, but multiple slaves. The difference between master and slave is that the master generates the clock pulse. The master also defines when communication should occur. For bus timing it is important that the slowest slave should still be able to follow the master’s clock. In other words the bus is as fast as the slowest slave.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A typical hardware configuration is shown in the figure below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:I2cbus.jpg|center|i2cbus]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that more slave chips can be connected to the SDA and SCL lines, normally Rp has a value of 1kOHM. The clock generated by the master is called Serial Clock (SCL) and the data is called Serial Data (SDA).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In most applications the micro controller is the I²C Master. Slave chips can be Real Time Clocks and Temperature sensors. For example the DS1307 and the DS1624 from&amp;amp;nbsp;[http://www.maxim-ic.com/ www.maxim-ic.com]. Of coarse you can also create your own slaves. In that case there is micro controller to micro controller communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;LOGIC BUS LEVELS AND CONDITIONS&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[File:I2c level.jpg|center|i2c_level]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Data can only occur after the master generates a&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;start condition.&amp;lt;/span&amp;gt;&amp;amp;nbsp;A start condition is a high-to-low transition of&lt;br /&gt;
&lt;br /&gt;
the SDA line while SCL remains high. After each data transfer a&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;stop condition&amp;lt;/span&amp;gt;&amp;amp;nbsp;is generated. A stop condition is a low-to-high transition of the SDA line while SCL remains high.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:I2c transfer.jpg|center|i2c_transfer]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As said a data transfer can occur after a&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;start condition&amp;lt;/span&amp;gt;&amp;amp;nbsp;of the master. The length of data sent over I²C is always 8 bit this includes a read/write direction bit, so you can effectively send 7 bits every time.&lt;br /&gt;
&lt;br /&gt;
The most significant bit MSB is always passed first on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the master writes to the bus the R/W bit = 0 and if the master reads the R/W bit = 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After the R/W bit the master should generate one clock period for an acknowledgement ACK.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each receiving chip that is addressed is obliged to generate an acknowledge after the reception of each byte. A chip that acknowledges must pull down the SDA line during the acknowledge clock pulse in such a way that the SDA line is stable LOW during the HIGH period of the acknowledge related clock pulse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After an acknowledge there can be a stop condition, if the master wishes to leave the bus idle. Or a repeated start condition. A repeated start is the same as a start condition.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the master reads from a slave it should acknowledge after each byte received. There are two reasons for the master not to acknowledge. The master sends a not acknowledge if data was not received correctly or if the master wishes the stop receiving.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;In other words if the master wishes to stop receiving, it sends a not acknowledge after the last received byte.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The master can stop any communication on the bus&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;at any time&amp;lt;/span&amp;gt;&amp;amp;nbsp;by sending a stop condition.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;BUS ADRESSING&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let’s say we have a slave chip with the address “1101000” and that the master wishes to write to that slave, the slave would then be in receiver mode, like this:&lt;br /&gt;
&lt;br /&gt;
[[File:I2c write.jpg|center|i2c_write]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can see here that the master always generates the start condition, then the master sends the address of the slave and a “0” for R/W. After that the master sends a command or word address. The function of that command or word address can be found in the data sheet of the slave addressed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that the master can send the data desired and stop the transfer with a stop condition.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:I2c read.jpg|center|i2c_read]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again the start condition and the slave address, only this time the master sends “1” for the R/W bit. The slave can then begin to send after the acknowledge. If the master wishes to stop receiving it should send a not acknowledge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;EXAMPLE&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
This example shows you how to setup and read the temperature from a DS1624 temperature sensor.&lt;br /&gt;
&lt;br /&gt;
Connect the DS1624 like this:&lt;br /&gt;
&lt;br /&gt;
[[File:I2c proto sample.jpg|center|i2c_proto_sample]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then program this sample into your micro controller and connect your micro controller to the serial port of your PC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;$regfile&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;=&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 128);&amp;quot;&amp;gt;&amp;quot;m88def.dat&amp;quot;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Define the chip you use&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;$crystal&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;=&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;8000000 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Define speed&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;$baud&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;=&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;19200 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Define UART BAUD rate&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Declare RAM for temperature storage&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Dim&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;I2ctemp&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;As&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Byte&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Storage for the temperature&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Configure pins we want to use for the I²C bus&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Config&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;Scl&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;=&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;Portd&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;1 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Is serial clock SCL&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Config&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;Sda&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;=&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;Portd&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;3 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Is serial data SDA&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Declare constants - I2C chip addresses&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Const&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;Ds1624wr&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;=&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;B10010000 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'DS1624 Sensor write&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Const&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;Ds1624rd&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;=&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;B10010001 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'DS1624 Sensor read&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'This section initializes the DS1624&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2cstart&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Sends start condition&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2cwbyte&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;Ds1624wr &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Sends the address&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'byte with r/w 0&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Access the CONFIG register (&amp;amp;HAC address byte)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2cwbyte&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;HAC&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Set continuous conversion &amp;amp;nbsp;(&amp;amp;H00 command byte)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2cwbyte&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;H00 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2cstop&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Sends stop condition&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Waitms&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;25 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'We have to wait some time after a stop&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2cstart&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2cwbyte&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;Ds1624wr&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Start conversion (&amp;amp;HEE command byte)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2cwbyte&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;HEE &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2cstop&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Waitms&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;25&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'End of initialization&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Print&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Print empty line&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Do&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Get the current temperature&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2cstart&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2cwbyte&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;Ds1624wr&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2cwbyte&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;HAA &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Read temperature (&amp;amp;HAA command byte)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2cstart&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2cwbyte&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;Ds1624rd&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'The chip will give register contents&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Temperature is stored as 12,5 but the ,5 first&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2crbyte&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;I2ctemp &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'So you'll have to read twice... first the ,5&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2crbyte&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;I2ctemp&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;,&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Nack&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'And then the 12... we don't store the ,5&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2cstop&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'That's why we read twice.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'We give NACK if the last byte is read&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'Finally we print&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Print&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 128);&amp;quot;&amp;gt;&amp;quot;Temperature: &amp;quot;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Str&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;i2ctemp&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(0, 128, 128);&amp;quot;&amp;gt;&amp;quot; degrees&amp;quot;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Chr&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;13&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New'; color: rgb(255, 0, 0);&amp;quot;&amp;gt;);&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Waitms&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Courier New';&amp;quot;&amp;gt;&amp;amp;nbsp;25&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Loop&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Courier New'; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;End&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should be able to read the temperature in your terminal emulator.&lt;br /&gt;
&lt;br /&gt;
Note that the used command bytes in this example can be found in DS1624 temperature sensor data sheet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;OVERVIEW&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Config&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;Sda&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: Courier; color: rgb(255, 0, 0);&amp;quot;&amp;gt;=&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: Courier; color: rgb(128, 0, 0);&amp;quot;&amp;gt;Portx.x&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configures a port pin for use as serial data SDA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Config&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;Scl&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: Courier; color: rgb(255, 0, 0);&amp;quot;&amp;gt;=&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-family: Courier; color: rgb(128, 0, 0);&amp;quot;&amp;gt;Portx.x&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configures a port pin for use as serial clock SCL.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2cstart&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sends the start condition.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2cstop&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sends the stop condition.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2cwbyte&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Writes one byte to an I²Cslave.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I2crbyte&lt;br /&gt;
&lt;br /&gt;
Reads one byte from an I²Cslave.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2csend&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Writes a number of bytes to an I²Cslave.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;I2creceive&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reads a number of bytes from an I²Cslave.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Practice&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The design below shows how to implement an I2C-bus. The circuit is using a Mega88 as a master.&lt;br /&gt;
&lt;br /&gt;
The TWI bus is used. While you can use any pin for software mode I2C, when a micro has TWI hardware build in, it is advised to use the TWI hardware.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
R1 and R2 are 4K7 pull up resistors.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
There are many I2C slave chips available. The example shows the PCF8574. With the additional TWI slave library you can make your own slave chips.&lt;br /&gt;
&lt;br /&gt;
[[File:I2 hw.zoom76.png|thumb|center|600px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_ImageCaption&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following information was submitted by Detlef Queck.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Many people have problems over and over with I2C(TWI) Termination. Use 4,7k or 10 k pull up? How long can the SCL, SDA line be when used with pull ups etc, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can simplify this confusing problem. Here is a Schematic for an active Termination of I2C and TWI. We have used this Schematic for over 10 years, and have had no problems with it. The I2C (TWI) lines can be up to 80cm (400KHz) without any problem when the Terminator is at the end of the lines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:I2c detlef.gif|center|i2c_detlef]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_ImageCaption&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_ImageCaption&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_ImageCaption&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See also:&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[http://avrhelp.mcselec.com/using_usi_universal_serial_int.htm Using USI (Universal Serial Interface)],&amp;amp;nbsp;[[CONFIG TWI|Config TWI]],&amp;amp;nbsp;[[CONFIG TWISLAVE|CONFIG TWISLAVE]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>