<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[德国人做的Tsic506时序图和程序]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Sat, 20 Mar 2010 05:27:15 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	<a href="attachment.php?fid=86">点击这里下载文件</a><br/><br/>ZMD推出温度传感器 快速响应时间达到0.8s：<br/>TSic具有快速响应时间(63%温度范围内为0.8s,采用SOP-8或e-line封装),3s之内可精确测出水温。用户定制的TSic COF器件测试周期仅为4ms。 <br/><br/><br/><br/>http://www.mikrocontroller.net/attachment/27605/tsic.c<br/><br/>德国资料：<br/>TSic 506 FeatureSheet <br/>TSic 506 DataSheet<br/>http://www.zmdi.com/index.php?id=127&amp;L=4<br/><br/><br/><br/><br/><div class="code"><br/><br/>/*!<br/> * &#92;file&nbsp;&nbsp;&nbsp;&nbsp;tsic.c<br/> * &#92;brief&nbsp;&nbsp; ZMD TSic Temperatursensor lesen<br/> * &#92;author&nbsp;&nbsp;Joerg S<br/> * &#92;date&nbsp;&nbsp;&nbsp;&nbsp;7.2007<br/> */<br/><br/>#include &quot;treiber_import.h&quot;<br/><br/><br/>///////////////////////////////////////////////////////////////////////////////////////////////////<br/>/*!<br/> * &#92;brief Temperatur von TSic Sensor empfangen<br/> * &#92;param temp&nbsp;&nbsp;R�ckgabepointer f�r Temperatur (Vorkommastellen). MSB ist negativ Bit. Wenn MSB 1,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dann ist Tempertaur negativ.<br/> * &#92;param nachkomma R�ckgabepointer f�r Temperatur (Nachkommastellen)<br/> * &#92;return temp_float Temperatur in float-Variable<br/> */<br/>float Read_Temp_TSic ( unsigned char *temp, unsigned int *nachkomma)<br/>&#123;<br/>&nbsp;&nbsp;unsigned int temp_value;<br/>&nbsp;&nbsp;float Temp_float;<br/><br/>&nbsp;&nbsp;INIT_TA_SMCLK_500KHZ;<br/><br/><br/>&nbsp;&nbsp;// VCC fuer Sensor einschalten<br/>&nbsp;&nbsp;TSIC_ON;<br/><br/>&nbsp;&nbsp;// Warten bis Spannung satbil<br/>&nbsp;&nbsp;delay_100us(1);<br/><br/><br/>&nbsp;&nbsp;if (getTSicTemp(&amp;temp_value))<br/>&nbsp;&nbsp;&#123;<br/>//&nbsp;&nbsp;&nbsp;&nbsp;Temp_float = (((float)temp_value / 2047) * 200) - 50; // conversion equation from TSic&#039;s data sheet<br/>&nbsp;&nbsp;&nbsp;&nbsp;Temp_float = (temp_value * 0.097704) -50;<br/>&nbsp;&nbsp;&#125;<br/><br/><br/>&nbsp;&nbsp;// VCC fuer Sensor ausschalten<br/>&nbsp;&nbsp;TSIC_OFF;<br/><br/>&nbsp;&nbsp;*temp = (unsigned int) Temp_float;<br/><br/>&nbsp;&nbsp;return Temp_float;<br/>&#125;<br/>///////////////////////////////////////////////////////////////////////////////////////////////////<br/><br/>///////////////////////////////////////////////////////////////////////////////////////////////////<br/>unsigned char getTSicTemp (unsigned int *temp_value16)<br/>&#123;<br/>&nbsp;&nbsp;unsigned int&nbsp;&nbsp;temp_value1 = 0;<br/>&nbsp;&nbsp;unsigned int&nbsp;&nbsp;temp_value2 = 0;<br/>&nbsp;&nbsp;unsigned char i;<br/>&nbsp;&nbsp;unsigned int&nbsp;&nbsp;Temperature;<br/>&nbsp;&nbsp;unsigned char parity;<br/><br/><br/>&nbsp;&nbsp;// Sensor benoetigt 65-85ms nach Power-Up bis zum senden<br/>&nbsp;&nbsp;TAR = 0;<br/>&nbsp;&nbsp;while (ZWIRE_IN_H &amp;&amp; (TAR &lt; ZWIRE_TIMEOUT_START)); // Warten auf Start-Bit<br/>&nbsp;&nbsp;if (TAR &gt;= ZWIRE_TIMEOUT_START) return FALSE;<br/><br/><br/>&nbsp;&nbsp;// Start-Bit (TStrobe) abwarten<br/>&nbsp;&nbsp;TAR = 0;<br/>&nbsp;&nbsp;while (ZWIRE_IN_L &amp;&amp; (TAR &lt; ZWIRE_TIMEOUT_BIT));<br/>&nbsp;&nbsp;if (TAR &gt;= ZWIRE_TIMEOUT_BIT) return FALSE;<br/><br/><br/>&nbsp;&nbsp;// Start-Bit = 62,5�s low und 62,5�s high<br/>&nbsp;&nbsp;// Logisch 1 = 31,25�s low und 93,75�s high<br/>&nbsp;&nbsp;// Logisch 0 = 93,75�s low und 31,25�s high<br/><br/>&nbsp;&nbsp;// Erstes Byte lesen (8Bit + 1Bit Parity)<br/>&nbsp;&nbsp;for (i = 0; i &lt; 9; i++)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;TAR = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;while (ZWIRE_IN_H &amp;&amp; (TAR &lt; ZWIRE_TIMEOUT_BIT)); // Auf fallende Flanke warten<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (TAR &gt;= ZWIRE_TIMEOUT_BIT) return FALSE;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;TAR = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;while (TAR &lt; ZWIRE_HALFBIT_TIMER);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;if (ZWIRE_IN_H)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp_value1 &#124;= 1 &lt;&lt; (8-i); // Wenn high, dann logisch 1<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;TAR = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;while (ZWIRE_IN_L &amp;&amp; (TAR &lt; ZWIRE_TIMEOUT_BIT)); // Auf steigende Flanke warten<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (TAR &gt;= ZWIRE_TIMEOUT_BIT) return FALSE;<br/>&nbsp;&nbsp;&#125;<br/><br/><br/>&nbsp;&nbsp;// Auf naechtes Start-Bit warten<br/>&nbsp;&nbsp;TAR = 0;<br/>&nbsp;&nbsp;while (ZWIRE_IN_H &amp;&amp; (TAR &lt; ZWIRE_TIMEOUT_START)); // Warten auf Start-Bit<br/><br/>&nbsp;&nbsp;if (TAR &gt;= ZWIRE_TIMEOUT_START) return FALSE;<br/><br/><br/>&nbsp;&nbsp;// Start-Bit (TStrobe) abwarten<br/>&nbsp;&nbsp;TAR = 0;<br/>&nbsp;&nbsp;while (ZWIRE_IN_L &amp;&amp; (TAR &lt; ZWIRE_TIMEOUT_BIT));<br/>&nbsp;&nbsp;if (TAR &gt;= ZWIRE_TIMEOUT_BIT) return FALSE;<br/><br/><br/>&nbsp;&nbsp;// Zweites Byte lesen (8Bit + 1Bit Parity)<br/>&nbsp;&nbsp;for (i = 0; i &lt; 9; i++)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;TAR = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;while (ZWIRE_IN_H &amp;&amp; (TAR &lt; ZWIRE_TIMEOUT_BIT)); // Auf fallende Flanke warten<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (TAR &gt;= ZWIRE_TIMEOUT_BIT) return FALSE;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;TAR = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;while (TAR &lt; ZWIRE_HALFBIT_TIMER);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;if (ZWIRE_IN_H)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp_value2 &#124;= 1 &lt;&lt; (8-i); // Wenn high, dann logisch 1<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;TAR = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;while (ZWIRE_IN_L &amp;&amp; (TAR &lt; ZWIRE_TIMEOUT_BIT)); // Auf steigende Flanke warten<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (TAR &gt;= ZWIRE_TIMEOUT_BIT) return FALSE;<br/>&nbsp;&nbsp;&#125;<br/><br/><br/><br/>&nbsp;&nbsp;// Parity Byte 1<br/>&nbsp;&nbsp;parity = 0;<br/>&nbsp;&nbsp;for (i = 0; i &lt; 9; i++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (temp_value1 &amp; (1 &lt;&lt; i))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parity++;<br/><br/>&nbsp;&nbsp;if (parity % 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<br/><br/>&nbsp;&nbsp;// Parity Byte 2<br/>&nbsp;&nbsp;parity = 0;<br/>&nbsp;&nbsp;for (i = 0; i &lt; 9; i++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (temp_value2 &amp; (1 &lt;&lt; i))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parity++;<br/><br/>&nbsp;&nbsp;if (parity % 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<br/><br/><br/>&nbsp;&nbsp;temp_value1 &gt;&gt;= 1; // delete parity bit<br/>&nbsp;&nbsp;temp_value2 &gt;&gt;= 1; // delete parity bit<br/>&nbsp;&nbsp;Temperature = (temp_value1 &lt;&lt; 8) &#124; temp_value2;<br/>&nbsp;&nbsp;*temp_value16 = Temperature;<br/><br/><br/>&nbsp;&nbsp;return TRUE; // parity is OK<br/>&#125;<br/>///////////////////////////////////////////////////////////////////////////////////////////////////<br/><br/><br/><br/><br/></div>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 德国人做的Tsic506时序图和程序]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>