<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.element14.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>FRDM-KL25Z &amp; ARDUINO - Codewarrior Tutorial : Ultrasonic Ranging with the Freescale Freedom Board</title><link>https://community.element14.com/products/manufacturers/nxp/w/documents/11120/frdm-kl25z-arduino---codewarrior-tutorial-ultrasonic-ranging-with-the-freescale-freedom-board</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>FRDM-KL25Z &amp; ARDUINO - Codewarrior Tutorial : Ultrasonic Ranging with the Freescale Freedom Board</title><link>https://community.element14.com/products/manufacturers/nxp/w/documents/11120/frdm-kl25z-arduino---codewarrior-tutorial-ultrasonic-ranging-with-the-freescale-freedom-board</link><pubDate>Fri, 08 Oct 2021 05:30:40 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:fb3aaae6-98e7-460b-a5c4-c8af1e56195a</guid><dc:creator>MAb</dc:creator><comments>https://community.element14.com/products/manufacturers/nxp/w/documents/11120/frdm-kl25z-arduino---codewarrior-tutorial-ultrasonic-ranging-with-the-freescale-freedom-board#comments</comments><description>Current Revision posted to Documents by MAb on 10/8/2021 5:30:40 AM&lt;br /&gt;
&lt;p style="margin:0;font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:15px;color:#ff6600;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;em&gt;This tutorial was extracted from Erich Styger blog&lt;span&gt; &lt;/span&gt;&lt;a class="jive-link-external-small" href="http://mcuoneclipse.wordpress.com/" rel="nofollow" style="color:#355491;" target="_blank"&gt;http://mcuoneclipse.wordpress.com&lt;/a&gt;&lt;span&gt; &lt;/span&gt;with his agreement.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51144-4-105550/Freescale.bmp" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/175x85/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23492.bmp"&gt;&lt;img alt="image" src="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23492.bmp" style="max-height: 85px;max-width: 175px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt; &lt;a href="/servlet/JiveServlet/downloadImage/102-51144-4-105551/Kinetis-L.jpg" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/87x85/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23493.jpg"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23493.jpg-87x85.jpg?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=X5qsRxl5jT5d%2B4fBmu3JwGHp47Mz8m6bI5HVvNZUHW8%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=lw3vl9FqzfR9tHJgP7g6Lg==" style="max-height: 85px;max-width: 87px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;strong&gt;Question&lt;/strong&gt;: What makes 8 times ‘beep’, but I cannot hear it?&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;strong&gt;Answer&lt;/strong&gt;: My ultrasonic range finder &lt;a href="http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1129645325g" rel="nofollow ugc noopener" style="color:#355491;" target="_blank"&gt;&lt;img loading="lazy" alt=":-)" class="jiveImage wp-smiley" src="http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1129645325g" style="border:0px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115120/frdm-kl25z-with-hc-sr04.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/450x298/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23494.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23494.png-450x298.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=ctktkzK8cSvQlNiFSTJLwwKRfO5R12Zprk8nxte4mfc%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=jDqibIJycGN5S9+OeU4J0w==" style="max-height: 298px;max-width: 450px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="margin:0;font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;span style="font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;em&gt;FRDM-KL25Z with HC-SR04&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;What I have added to my &lt;span&gt;&lt;span style="background-position:-367px -46px;"&gt;&lt;/span&gt;FRDM-KL25Z &lt;/span&gt;&lt;/span&gt; board is an ultrasonic distance sensor, measuring distances up to 4 meters.&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;/span&gt; &amp;nbsp;&lt;/p&gt;&lt;h2 style="font-size:1.7778em;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;HC-SR04 Ultrasonic Sensor&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;The &lt;a class="jive-link-external-small" href="http://elecfreaks.com/store/download/HC-SR04.pdf" rel="nofollow" style="color:#355491;" target="_blank"&gt;HC-SR04&lt;/a&gt; sensor is a 4 pin sensor, at an incredible price point. I have mine from &lt;a class="jive-link-external-small" href="http://www.play-zone.ch/en/ultraschall-distanzmesser-hc-sr04.html" rel="nofollow" style="color:#355491;" target="_blank"&gt;Play-Zone&lt;/a&gt;, but I have seen offers in the internet for around $6 too.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;span style="font-size:10pt;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115124/hc-sr04-front-side.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/450x282/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23495.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23495.png-450x282.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=xPLf7W0eqsWXkN0paGTxlLvxMX%2FgoBqT5AY%2BESpga8c%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=eQEvgRlDda9WQ8knTPgYIA==" style="max-height: 282px;max-width: 450px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0;font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;span style="font-size:10pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;em&gt;HC-SR04 Front Side&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;The backside features all the electronics to which simply usage of the sensor:&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;span style="font-size:10pt;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115125/hc-sr04-back-side.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/450x274/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23496.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23496.png-450x274.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=PZqmbq5NFHxmtSUR6LsKu1MEArs90DfcbGwLvK5Cm9c%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=zVUTZcUkzzkmSqY97rv8Lg==" style="max-height: 274px;max-width: 450px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0;font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;span style="font-size:10pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;em&gt;HC-SR04 Back Side&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;With simple I mean, it only needs 4 pins:&lt;/span&gt;&lt;/p&gt;&lt;ol start="1" style="font-size:12px;list-style-position:initial;list-style-image:initial;padding:0 0 0 2.25em;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;li&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Vcc (+5V DC supply)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Trig (TTL input, to trigger a measurement)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Echo (TTL output, pulse proportional to distance)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;GND (ground)&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style="margin:0;"&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;em&gt;&lt;a href="http://s0.wp.com/wp-includes/images/smilies/icon_idea.gif?m=1129645325g" rel="nofollow ugc noopener" style="color:#355491;" target="_blank"&gt;&lt;img loading="lazy" alt=":idea:" class="jiveImage wp-smiley" src="http://s0.wp.com/wp-includes/images/smilies/icon_idea.gif?m=1129645325g" style="border:0px;" /&gt;&lt;/a&gt; There is a similar module on the market: the &lt;a class="jive-link-external-small" href="http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf" rel="nofollow" style="color:#355491;" target="_blank"&gt;Parallax Ping)))&lt;/a&gt; or &lt;a class="jive-link-external-small" href="http://www.seeedstudio.com/wiki/Ultra_Sonic_range_measurement_module" rel="nofollow" style="color:#355491;" target="_blank"&gt;Seedstudio&lt;/a&gt; one which only use 3 pins (Vcc, Trig+Echo, GND). While this saves a pin, it makes usage a big more complicated as I would have to switch between output and input on a single pin. So I prefer the 4 pin variant.&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Using the sensor is simple:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="text-align:center;font-size:10pt;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115127/hc-sr04-timing-diagram.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/450x143/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23497.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23497.png-450x143.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=fKcT%2Fg4%2BgJF7pCHIu2P%2FKnDp9jLmgYiDEFAfGjg8rXY%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=ChQQ8RlwrLFmJcR/QTI22A==" style="max-height: 143px;max-width: 450px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="text-align:center;font-size:10pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;em&gt;HC-SR04 Timing Diagram&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;ol start="1" style="font-size:12px;list-style-position:initial;list-style-image:initial;padding:0 0 0 2.25em;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;li&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Send a 10 us pulse on Trig &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;In reaction to this, the sensor will send 8 sonic bursts to measure the distance &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;After sending the burst, the sensor will raise the Echo signal until it receives the echo back. That means the length of the Echo signal corresponds to time the burst was travelling forward and echoed back. &lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style="margin:0;"&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Below is a snapshot with a logic analyzer:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115128/hc-sr04-timing.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/450x197/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23498.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23498.png-450x197.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=ODEaa92Hy3md6pkiexX7iDA9kEabr8gf7NXJleSXXSA%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=fhDCCuSpU/W3/oufK54/Rw==" style="max-height: 197px;max-width: 450px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="text-align:center;font-size:12px;font-family:tahoma, arial, helvetica, sans-serif;"&gt;HC-SR04 Timing&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;After the 10 us Trigger signal, the sensor sends the burst during ’1′ and ’2′ (around 456 us), followed by the Echo signal duration of 756 us. The 756 us corresponds to the time it took for the burst to come back.&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;The &lt;a class="jive-link-external-small" href="http://en.wikipedia.org/wiki/Speed_of_sound" rel="nofollow" style="color:#355491;" target="_blank"&gt;speed of sound&lt;/a&gt; is about 340 m per second (depends on temperature and air relative humidity). A good approximation is 29 us per cm (or 58 us per centimeter as it is for back and forward). With the above example, the 756 us would result in 756/29/2 = 13 cm distance.&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;a href="http://s0.wp.com/wp-includes/images/smilies/icon_idea.gif?m=1129645325g" rel="nofollow ugc noopener" style="color:#355491;" target="_blank"&gt;&lt;img loading="lazy" alt=":idea:" class="jiveImage wp-smiley" src="http://s0.wp.com/wp-includes/images/smilies/icon_idea.gif?m=1129645325g" style="border:0px;" /&gt;&lt;/a&gt; &lt;em&gt;For decimal system challenged engineers: instead of a divider of 58, use a divider of 148 to get the result in inch instead of centimeter.&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;h2 style="font-size:1.7778em;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Hardware Connection&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin:0;"&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;I’m using a breadboard for easy wiring and connection.&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="text-align:center;font-size:10pt;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115130/breadboard-wiring1.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/450x362/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23499.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23499.png-450x362.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=yjyLx3nvKYTV8nx6AnT%2BpAgZRDkUfMJzcZyRwEx9%2BYM%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=tuYOGBnYB63vLvpXLDNI0g==" style="max-height: 362px;max-width: 450px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="text-align:center;font-size:10pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;em&gt;Breadboard Wiring with Freedom Board, Sensor, LCD and Logic analyzer&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;To visualize the measurement, I’m using the &lt;a class="jive-link-external-small" href="http://mcuoneclipse.com/2012/12/22/hd44780-2x16-character-display-for-kinetis-and-freedom-board/" rel="nofollow" style="color:#355491;" target="_blank"&gt;2×16 Character display&lt;/a&gt; I have used in my earlier post. Of course a LCD is optional. I used the same wiring as before:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115131/signals-with-labels.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/449x405/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23500.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23500.png-449x405.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=Vr0GkJmW1Ji507RYLexT2GR9vTb9y3uoCf6yOBfjgZw%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=0Nc2RTS8lg0stw5KfmiIig==" style="max-height: 405px;max-width: 449px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;em&gt;Signals with Labels&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;=========================================================================&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;SIGNAL LIST&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;-------------------------------------------------------------------------&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;SIGNAL-NAME [DIR]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; PIN-NAME [PIN-NUMBER]&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;-------------------------------------------------------------------------&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;DB4_D4 [I/O]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; TSI0_CH5/PTA4/I2C1_SDA/TPM0_CH1/NMI_b [30]&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;DB5_D5 [I/O]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; PTA5/USB_CLKIN/TPM0_CH2 [31]&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;DB6_D6 [I/O]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; CMP0_IN2/PTC8/I2C0_SCL/TPM0_CH4 [65]&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;DB7_D7 [I/O]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; CMP0_IN3/PTC9/I2C0_SDA/TPM0_CH5 [66]&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;E_D10 [Output]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; PTD0/SPI0_PCS0/TPM0_CH0 [73]&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;LED_BLUE [Output]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; ADC0_SE5b/PTD1/SPI0_SCK/TPM0_CH1 [74]&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;LED_GREEN [Output]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; TSI0_CH12/PTB19/TPM2_CH1 [54]&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;LED_RED [Output]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; TSI0_CH11/PTB18/TPM2_CH0 [53]&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;RS_D8 [Output]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; PTA13/TPM1_CH1 [33]&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;RW_D9 [Output]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; ADC0_SE6b/PTD5/SPI1_SCK/UART2_TX/TPM0_CH5 [78]&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;US_Echo_D2 [Input]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; PTD4/LLWU_P14/SPI1_PCS0/UART2_RX/TPM0_CH4 [77]&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;US_Trig_D3 [Output]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; PTA12/TPM1_CH0 [32]&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;==========================================================================&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;What I need is the supply voltage, ground, an output pin (Trig) and an input pin to measure the signal (Echo).&lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;The HC-SR04 uses TTL (5V) supply voltage and logic levels. The FRDM-KL25Z processor is a 3.3V one, but the board provides 5V on the header. The HC-SR04 can use 3.3V levels on the Trig signal, but provides a 5V signal on the Echo pin. To get the signal to the 3.3V level, I use a simple voltage divider with a 27k Ohm and 15k Ohm resistor:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="text-align:center;font-size:10pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;em&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115179/voltage-divider.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/368x174/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23501.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23501.png-368x174.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=e4LdgiTu0uwB95ihLaa6Yb2hL%2FKjnmsXL%2FofQA92%2BZo%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=OkBigO9UIkkfG6Gr7MmHwg==" style="max-height: 174px;max-width: 368px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/em&gt;&lt;/span&gt;&lt;span style="text-align:center;font-size:10pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;em&gt;Voltage Divider with two resistors&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="text-align:center;font-size:10pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;em&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115180/voltage-divider-detail.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/286x334/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23502.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23502.png-286x334.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=oiQB3TwQBZGKNjpL%2Ff6DwY3yR%2Fk%2Fr5hFRPdTJ9S4pUk%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=prMrI6P4hjcR/AM92kNJgw==" style="max-height: 334px;max-width: 286px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/em&gt;&lt;/span&gt;&lt;span style="text-align:center;font-size:10pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;em&gt;Voltage Divider Detail&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;h2 style="font-size:1.7778em;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;/h2&gt;&lt;h2 style="font-size:1.7778em;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;/h2&gt;&lt;h2 style="font-size:1.7778em;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;"&gt;CodeWarrior Project&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin:0;"&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;With the wizard (File &amp;gt; New Bareboard Project) I create a new project for the KL25Z and Processor Expert. I need two things:&lt;/span&gt;&lt;/p&gt;&lt;ol start="1" style="font-size:12px;list-style-position:initial;list-style-image:initial;padding:0 0 0 2.25em;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;li&gt;&lt;span style="font-size:12pt;"&gt;Create a 10 us pulse on the Trig (Trigger) pin&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:12pt;"&gt;Measure the echo on the Echo pin&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style="margin:0;padding:0px;"&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 style="font-size:1.7778em;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;"&gt;Trigger&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin:0;"&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;For the Trigger pin I add a &lt;strong&gt;BitIO_LDD&lt;/strong&gt; component to my project:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="text-align:center;font-size:12px;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115181/bitio_ldd-component1.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/153x270/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23503.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23503.png-153x270.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=1sO%2BFuLoWclcrpwzXUBPxzD9O%2FyqkZ887hea8znBEfw%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=xDw8L49skGP9eTq0mIyh2w==" style="max-height: 270px;max-width: 153px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="text-align:center;font-size:10pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;em&gt;BitIO_LDD Component&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;I configure it as Output pin on PTA12:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="text-align:center;font-size:12px;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115182/trigger-properties.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/386x303/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23504.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23504.png-386x303.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=1F57Pefme9fg5SueAxb67Lfd5Cz6W%2BDB%2FfsVib9UQkY%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=lgvYFj5aBU+xamj8I0na5A==" style="max-height: 303px;max-width: 386px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="text-align:center;font-size:10pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;em&gt;Trigger Properties&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Additionally I add the &lt;a class="jive-link-external-small" href="http://steinerberg.com/EmbeddedComponents/Wait/home.htm" rel="nofollow" style="color:#355491;" target="_blank"&gt;Wait&lt;/a&gt; component to the project:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="text-align:center;font-size:12px;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115183/wait-component.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/161x179/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23505.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23505.png-161x179.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=F7UVBYoMQGqytEzcSArmw0Y10Q6XN9sJDMAmJJV1xSo%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=MGAh7VRu+WZNdH/9bLmmxw==" style="max-height: 179px;max-width: 161px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="text-align:center;font-size:10pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;em&gt;Wait Component&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Generating the 10 us pulse now is trivial:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;========================&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;TRIG_SetVal(trigDevice);&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;WAIT1_Waitus(10);&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;TRIG_ClrVal(trigDevice);&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;========================&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;Wait! There is some more infrastructure needed, such as this &lt;strong&gt;trigDevice&lt;/strong&gt; handle. More on this below.&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;h2 style="font-size:1.7778em;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;"&gt;Echo Pulse Measurement&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin:0;"&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;To measure the echo, I add a &lt;strong&gt;TimerUnit_LDD&lt;/strong&gt; component:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115190/timerunit_ldd-added.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/201x162/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23506.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23506.png-201x162.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=F1Vu38JMbAKMWCAkUBk5tjC0GMe5p59yTLz0sQEsHLI%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=Zls/np81YWDmIvrBi0Iofg==" style="max-height: 162px;max-width: 201px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;TimerUnit_LDD added&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;That component shows errors for now, because I need to configure it for my needs. What I want is a timer measuring the echo signal. For this I need to set up a timer which starts counting on the echo raising edge, and stops at the falling edge. For this I need a timer channel.&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;I add a new channel using the ‘+’ icon:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115191/adding-timer-unit-channel.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/450x316/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23507.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23507.png-450x316.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=6%2FrsQ0vdjHF0rRVFIJ%2B9bT6BGpy7BIcFNYmbYeJcdtc%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=9xf3sJD70XCi2F9XHmtN2g==" style="max-height: 316px;max-width: 450px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;Adding Timer Unit Channel&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;For this I’m selecting the &lt;strong&gt;TPM0_CNT&lt;/strong&gt; as counter and configure the channel for ‘capture’:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;em&gt;&lt;a href="http://s0.wp.com/wp-includes/images/smilies/icon_idea.gif?m=1129645325g" rel="nofollow ugc noopener" style="color:#355491;" target="_blank"&gt;&lt;img loading="lazy" alt=":idea:" class="jiveImage wp-smiley" src="http://s0.wp.com/wp-includes/images/smilies/icon_idea.gif?m=1129645325g" style="border:0px;" /&gt;&lt;/a&gt; You will understand later on why I have selected this particular counter.&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115192/using-tpm0_cnt-and-capture-mode1.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/450x411/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23508.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23508.png-450x411.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=nrIaLTjzLy88362a8X%2BwEKN2l0bodsdctw2KpV%2FjEO4%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=srMZrcxzhYnLuat4TKFHWA==" style="max-height: 411px;max-width: 450px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;em&gt;Using TPM0_CNT and Capture Mode&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;As I have connected the Echo signal on &lt;strong&gt;PTD4&lt;/strong&gt;, I need to use that pin as ‘Capture input pin’:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115193/ptd4-as-input-capture-pin.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/450x411/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23509.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23509.png-450x411.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=Eghkk%2FEd5fTcLGcPuSGo2XVont3MlBditjTSfW5Hkmw%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=Z2ER6JDCI/VwMPUhuK0eVA==" style="max-height: 411px;max-width: 450px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;em&gt;PTD4 as input capture pin&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;As hinted by the pin name (PTD4/LLWU_P14/SPI1_PCS0/UART2_RX/&lt;strong&gt;TPM0_CH4&lt;/strong&gt;), this pin is available on &lt;strong&gt;TPM0_CH4&lt;/strong&gt;, so I need to configure this as capture device:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115194/selected-capture-device.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/450x411/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23510.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23510.png-450x411.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=dpsmMIoUkfIGwg4enZk9XJLTOeHtXkPG%2B3yJwpA7J3M%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=nsjQXWUEVz8okOkxrtI5xA==" style="max-height: 411px;max-width: 450px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;em&gt;selected capture device&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;em&gt;&lt;a href="http://s0.wp.com/wp-includes/images/smilies/icon_idea.gif?m=1129645325g" rel="nofollow ugc noopener" style="color:#355491;" target="_blank"&gt;&lt;img loading="lazy" alt=":idea:" class="jiveImage wp-smiley" src="http://s0.wp.com/wp-includes/images/smilies/icon_idea.gif?m=1129645325g" style="border:0px;" /&gt;&lt;/a&gt;&amp;nbsp; Now you see why I have selected TPM0_CNT above as Counter device. I admit: that’s not something easy to know about, because this KL25Z has mirades of pin and mapping configuration (called Pin Muxing) &lt;a href="http://s0.wp.com/wp-includes/images/smilies/icon_sad.gif?m=1129645325g" rel="nofollow ugc noopener" style="color:#355491;" target="_blank"&gt;&lt;img loading="lazy" alt=":-(" class="jiveImage wp-smiley" src="http://s0.wp.com/wp-includes/images/smilies/icon_sad.gif?m=1129645325g" style="border:0px;" /&gt;&lt;/a&gt; . One way is to guess what is behind from the pin names (this is what I try first). Otherwise you need to read through the device reference manual (which is very time-consuming). I wish these devices would be much less complicated and easier to use….&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;I want to get an interrupt for both the raising edge and falling edge of the Echo signal: I enable interrupts and configure it for both edges. And &lt;a class="jive-link-external-small" href="http://mcuoneclipse.com/2012/12/29/pin-and-signal-list-with-processor-expert/" rel="nofollow" style="color:#355491;" target="_blank"&gt;I give the signal a nice name&lt;/a&gt;:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115195/interrupt-settings.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/450x560/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23511.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23511.png-450x560.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=I7Wr0wpwq6RhcGh%2FCv6MITd6keNSzRGCXa0APerlcPU%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=eui85BOtt3WPGO7Z19JvbA==" style="max-height: 560px;max-width: 450px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;em&gt;Interrupt Settings&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;That’s not enough: I need to enable interrupts for the counter too:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115196/enabled-interrupts-for-counter.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/450x560/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23512.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23512.png-450x560.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=ggpD490FzbzacXU2ZFan5BW5DctgC%2B8VDF%2FEbTZGUh8%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=axWbuL7IDz3he26Z5KJZ+g==" style="max-height: 560px;max-width: 450px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;em&gt;Enabled Interrupts for Counter&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;h2 style="font-size:1.7778em;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Counter Frequency&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin:0;"&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;I still have errors showing up for my Timer/Counter: I need to configure the counter frequency: This is the clock which is used for my counter. In principle: the higher the frequency, the more precise the measurement will be. As always: a good balance is required. First, I configure the counter frequency:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115197/configuring-the-counter-frequency1.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/450x314/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23513.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23513.png-450x314.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=VvRUZw47kmIIisiW7AvtzbUuCmVaY1%2BxCD03oikT3CQ%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=q43eH0Iz0OqjpsICUsGHdg==" style="max-height: 314px;max-width: 450px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;em&gt;Configuring the counter frequency&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;The first thing to do is to disable ‘Auto select timing’:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115198/disabling-auto-select-timing.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/450x292/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23514.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23514.png-450x292.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=52d8teiSzUTJ0r2O4%2BmNxwOtKTs2uPw54M2F7WS0TTA%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=52uU/zzrBI/zndP+36X05Q==" style="max-height: 292px;max-width: 450px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;Disabling Auto Select timing&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;em&gt;&lt;a href="http://s0.wp.com/wp-includes/images/smilies/icon_idea.gif?m=1129645325g" rel="nofollow ugc noopener" style="color:#355491;" target="_blank"&gt;&lt;img loading="lazy" alt=":idea:" class="jiveImage wp-smiley" src="http://s0.wp.com/wp-includes/images/smilies/icon_idea.gif?m=1129645325g" style="border:0px;" /&gt;&lt;/a&gt; Processor Expert usually chooses good default values, but fails (for whatever reason?) to do this properly for timers on the ARM platform. So as solution I always disable auto-select-timing and explicitly make my choice. Maybe better that way anyway &lt;a href="http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1129645325g" rel="nofollow ugc noopener" style="color:#355491;" target="_blank"&gt;&lt;img loading="lazy" alt=":-)" class="jiveImage wp-smiley" src="http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1129645325g" style="border:0px;" /&gt;&lt;/a&gt; &lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;I make a gut guess and select a 2.x MHz clock from the list (double-click to assign it):&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115199/selected-clock-frequency.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/450x367/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23515.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23515.png-450x367.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=KRLgwG9F39Lo1BIBEd%2FoIaRv7HlekEbm3%2F0CL94fEf8%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=1sqK9Qrh2enENZmZCCImcw==" style="max-height: 367px;max-width: 450px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;em&gt;Selected clock frequency&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;h2 style="font-size:1.7778em;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Counter Overrun&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin:0;"&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;There one thing to consider: when will the counter overflow? I keep in mind that with the speed of sound, around 4 meters distance means 400*58us makes 23.5ms Echo signal pulse. So I need to make sure that for this distance, my counter does *not* overflow. I can check this in the ‘Overrun period’ settings:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115202/overrun-period.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/450x317/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23516.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23516.png-450x317.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=ShCCSUQF%2BdQSiIjcVnZ2f6LMB2lyeZWlzR2ciDidcws%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=BWp+OzRIG4lntsr7dEP3LA==" style="max-height: 317px;max-width: 450px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="text-align:center;font-size:10pt;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;em&gt;Overrun period&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Deselecting ‘auto select timing’ again will show the overrun period time:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115201/overrun-period1.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/450x317/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23517.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23517.png-450x317.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=v47%2BWasa%2BD0tmg7z0SyQliB3lMqvHmRJwj8fqPd5zao%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=BWp+OzRIG4lntsr7dEP3LA==" style="max-height: 317px;max-width: 450px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="wp-caption-text" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;em&gt;Overrun period&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;So my timer will overrun after 25 ms, so I’m fine &lt;a href="http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1129645325g" rel="nofollow ugc noopener" style="color:#355491;" target="_blank"&gt;&lt;img loading="lazy" alt=":-)" class="jiveImage wp-smiley" src="http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1129645325g" style="border:0px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Next, I need to enable two methods I want to use. I need to read the counter value, and I need to reset it. As such, I enable the two methods (right-click on the method name and select ‘Toggle Enable/Disable’):&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115208/enabled-timerunit_ldd-methods.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/209x578/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23518.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23518.png-209x578.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=t6Iz18r4YzRrpcZuv9Lz%2B%2FUry4ahKVGacy1BWrD1kk0%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=3/5o87iH18eQ0xQqMGGF3A==" style="max-height: 578px;max-width: 209px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="wp-caption-text" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;em&gt;Enabled TimerUnit_LDD Methods&lt;/em&gt;&lt;/span&gt;&lt;span class="wp-caption-text" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span class="wp-caption-text" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span class="wp-caption-text" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;I notice the two events called:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;strong&gt;OnCounterRestart()&lt;/strong&gt; is called when there is a restart/overflow of the counter&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;strong&gt;OnChannel()&lt;/strong&gt; is called for every interrupt of my channel. Remember that I have it configured for creating an interrupt/event for both raising and falling edge.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="margin:0;padding:0px;"&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 style="font-size:1.7778em;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;State Machine&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin:0;"&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;I’m using a state machine to go through the different measurement phases:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115209/state-diagram.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/445x320/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23519.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23519.png-445x320.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=WsNjV%2FdSHDWkx%2FA3691yR4e6pVdarkRoFTUhk9EurBc%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=zxT6vF/4Zend0BJRr/ehDw==" style="max-height: 320px;max-width: 445px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="wp-caption-text" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;em&gt;State Diagram&lt;/em&gt;&lt;/span&gt;&lt;span class="wp-caption-text" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span class="wp-caption-text" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span class="wp-caption-text" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;strong&gt;Idle&lt;/strong&gt;: Sensor is idle&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;strong&gt;Triggered&lt;/strong&gt;: we sent the trigger signal to the sensor&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;strong&gt;Measure&lt;/strong&gt;: we received raising edge of echo signal and are measuring&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;strong&gt;Overflow&lt;/strong&gt;: Counter overflow happened (see above)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;strong&gt;Finished&lt;/strong&gt;: received falling echo signal edge and we have captured the echo signal time&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="margin:0;"&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Another way is to show the different states on the timing diagram (without the Overflow case):&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;a href="/servlet/JiveServlet/downloadImage/102-51641-3-115210/timing-and-state-diagram.png" style="color:#355491;"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/450x184/__key/communityserver-wikis-components-files/00-00-00-01-14/contentimage_5F00_23520.png"&gt;&lt;img loading="lazy" alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/14/contentimage_23520.png-450x184.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=ME%2B2TQyy2%2B1xi224fi4ep6YD3sNp8xkdQAMUph%2BCCHI%3D&amp;amp;se=2026-10-17T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=irxOqdWI30WvpWG75S3zMw==" style="max-height: 184px;max-width: 450px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="wp-caption-text" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;text-align:center;"&gt;&lt;em&gt;Timing and State Diagram&lt;/em&gt;&lt;/span&gt;&lt;span class="wp-caption-text" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span class="wp-caption-text" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span class="wp-caption-text" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span class="wp-caption-text" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;With this in mind, the implementation is pretty straight forward. First, an enumeration for the state machine states:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;1 typedef enum {&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;2 ECHO_IDLE, /* device not used */&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;3 ECHO_TRIGGERED, /* started trigger pulse */&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;4 ECHO_MEASURE, /* measuring echo pulse */&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;5 ECHO_OVERFLOW, /* measurement took too long */&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;6 ECHO_FINISHED /* measurement finished */&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;7 } US_EchoState;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Next the data structure to keep all my data:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;1 typedef struct {&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;2 LDD_TDeviceData *trigDevice; /* device handle for the Trigger pin */&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;3 LDD_TDeviceData *echoDevice; /* input capture device handle (echo pin) */&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;4 volatile US_EchoState state; /* state */&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;5 TU1_TValueType capture; /* input capture value */&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;6 } US_DeviceType;&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;7 &lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;8 static US_DeviceType usDevice; /* device handle for the ultrasonic device */&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;And here is how it gets initialized:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;1 void US_Init(void) {&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;2 usDevice.state = ECHO_IDLE;&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;3 usDevice.capture = 0;&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;4 usDevice.trigDevice = TRIG_Init(NULL);&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;5 usDevice.echoDevice = TU1_Init(&amp;amp;usDevice);&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;6 }&lt;/span&gt;&lt;span class="syntaxhighlighter cpp" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span class="syntaxhighlighter cpp" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;h2 style="font-size:1.7778em;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Event Handlers&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin:0;"&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Notice the call to &lt;code style="font-size:1.2em;"&gt;TU1_Init()&lt;/code&gt; where I pass a pointer to my data structure: That way I get a nice handle passed from the Processor Expert event routines (in events.c) I can use for my own routines.&lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Remember that I get interrupts for raising and falling edge, and for overflow.&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;I handle that in Events.c:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span class="bar" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;01 /*&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;02 ** ===================================================================&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;03 ** Event : TU1_OnChannel0 (module Events)&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;04 **&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;05 ** Component : TU1 [TimerUnit_LDD]&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;06 ** Description :&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;07 ** Called if compare register match the counter registers or&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;08 ** capture register has a new content. OnChannel0 event and&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;09 ** Timer unit must be enabled. See and&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;10 ** methods. This event is available only if a&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;11 ** is enabled.&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;12 ** Parameters :&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;13 ** NAME - DESCRIPTION&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;14 ** * UserDataPtr - Pointer to the user or&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;15 ** RTOS specific data. The pointer passed as&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;16 ** the parameter of Init method.&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;17 ** Returns : Nothing&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;18 ** ===================================================================&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;19 */&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;20 void TU1_OnChannel0(LDD_TUserData *UserDataPtr)&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;21 {&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;22 US_EventEchoCapture(UserDataPtr);&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;23 }&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;24 &lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;25 /*&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;26 ** ===================================================================&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;27 ** Event : TU1_OnCounterRestart (module Events)&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;28 **&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;29 ** Component : TU1 [TimerUnit_LDD]&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;30 ** Description :&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;31 ** Called if counter overflow/underflow or counter is&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;32 ** reinitialized by modulo or compare register matching.&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;33 ** OnCounterRestart event and Timer unit must be enabled. See&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;34 ** and methods. This event is&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;35 ** available only if a is enabled.&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;36 ** Parameters :&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;37 ** NAME - DESCRIPTION&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;38 ** * UserDataPtr - Pointer to the user or&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;39 ** RTOS specific data. The pointer passed as&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;40 ** the parameter of Init method.&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;41 ** Returns : Nothing&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;42 ** ===================================================================&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;43 */&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;44 void TU1_OnCounterRestart(LDD_TUserData *UserDataPtr)&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;45 {&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;46 US_EventEchoOverflow(UserDataPtr);&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;47 }&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;In case of Overflow I simply set the state machine to the overflow state:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p class="toolbar" style="margin:0;"&gt;&lt;span class="toolbar"&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;1 void US_EventEchoOverflow(LDD_TUserData *UserDataPtr) {&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;2 US_DeviceType *ptr = (US_DeviceType*)UserDataPtr;&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;3 &lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;4 ptr-&amp;gt;state = ECHO_OVERFLOW;&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;5 }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0;"&gt;&lt;span class="bar" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span class="syntaxhighlighter cpp" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span class="syntaxhighlighter cpp" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;While in the interrupt/event for raising or falling edge, I reset the counter value at raising edge, or read out the counter value at falling edge:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="toolbar" style="margin:0;"&gt;&lt;span class="toolbar"&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;1 US_DeviceType *ptr = (US_DeviceType*)UserDataPtr;&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;2 &lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;3 if (ptr-&amp;gt;state==ECHO_TRIGGERED) { /* 1st edge, this is the raising edge, start measurement */&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;4 TU1_ResetCounter(ptr-&amp;gt;echoDevice);&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;5 ptr-&amp;gt;state = ECHO_MEASURE;&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;6 } else if (ptr-&amp;gt;state==ECHO_MEASURE) { /* 2nd edge, this is the falling edge: use measurement */&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;7 (void)TU1_GetCaptureValue(ptr-&amp;gt;echoDevice, 0, &amp;amp;ptr-&amp;gt;capture);&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;8 ptr-&amp;gt;state = ECHO_FINISHED;&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;9 }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0;"&gt;&lt;span class="bar" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span class="bar" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span class="syntaxhighlighter cpp" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;With this I reset the counter on the raising edge, and get the counter value at the falling edge. Then I set the state to ‘finished’: this will be the state I wait for (polling) we will see later.&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 style="font-size:1.7778em;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Measure!&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin:0;"&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;I have implemented a function which sends the trigger, and then waits until the measurement has been finished:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span class="bar" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;01 uint16_t US_Measure_us(void) {&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;02 uint16_t us;&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;03 &lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;04 /* send 10us pulse on TRIG line. */&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;05 TRIG_SetVal(usDevice.trigDevice);&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;06 WAIT1_Waitus(10);&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;07 usDevice.state = ECHO_TRIGGERED;&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;08 TRIG_ClrVal(usDevice.trigDevice);&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;09 while(usDevice.state!=ECHO_FINISHED) {&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;10 /* measure echo pulse */&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;11 if (usDevice.state==ECHO_OVERFLOW) { /* measurement took too long? */&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;12 usDevice.state = ECHO_IDLE;&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;13 return 0; /* no echo, error case */&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;14 }&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;15 }&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;16 us = (usDevice.capture*1000UL)/(TU1_CNT_INP_FREQ_U_0/1000);&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;17 return us;&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;18 }&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;It sends the 10 us trigger and then waits for the finished state. In case of overflow (no echo received), I simply return a value of zero.&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;The function returns the measured echo time in microseconds. To deal with different timer frequencies, the macro&lt;code style="font-size:1.2em;"&gt;TU1_CNT_INP_FREQ_U_0&lt;/code&gt; is used which is generated by Processor Expert.&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;h2 style="font-size:1.7778em;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Calculating to Distance&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin:0;"&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Usually I’m not interested in the echo time, but rather in the distance itself. For this I have created a utility function to transform the echo time (microsecond) into centimeter distance:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="toolbar" style="margin:0;"&gt;&lt;span style="font-size:10pt;"&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;01 static uint16_t calcAirspeed_dms(uint8_t temperatureCelsius) {&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;02 /* Return the airspeed depending on the temperature, in deci-meter per second */&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;03 unsigned int airspeed; /* decimeters per second */&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;04 &lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;05 airspeed = 3313 + (6 * temperatureCelsius); /* dry air, 0% humidity, see&lt;a class="jive-link-external-small" href="http://en.wikipedia.org/wiki/Speed_of_sound" rel="nofollow" style="color:#355491;" target="_blank"&gt;http://en.wikipedia.org/wiki/Speed_of_sound&lt;/a&gt; */&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;06 airspeed -= (airspeed/100)*15; /* factor in ~15% for a relative humidity of ~40% */&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;07 return airspeed;&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;08 }&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;09 &lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;10 uint16_t US_usToCentimeters(uint16_t microseconds, uint8_t temperatureCelsius) {&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;11 return (microseconds*100UL)/calcAirspeed_dms(temperatureCelsius)/2; /* 2 because of two way */&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;color:#3366ff;"&gt;12 }&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0;"&gt;&lt;span class="bar" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span class="bar" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span class="bar" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span class="syntaxhighlighter cpp" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;em&gt;&lt;a href="http://s0.wp.com/wp-includes/images/smilies/icon_idea.gif?m=1129645325g" rel="nofollow ugc noopener" style="color:#355491;" target="_blank"&gt;&lt;img loading="lazy" alt=":idea:" class="jiveImage wp-smiley" src="http://s0.wp.com/wp-includes/images/smilies/icon_idea.gif?m=1129645325g" style="border:0px;" /&gt;&lt;/a&gt; Speed of sound depends on factors like temperature, relative humidity and above sea level (media density). The above function is not counting in everything, but is accurate enough for me.&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h1 style="font-size:2em;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Example Application&lt;/span&gt;&lt;/h1&gt;&lt;p style="margin:0;"&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;Now using it is pretty simple: from my main routine I intialize my drivers, and then periodically call the function to measure the distance. To make things visual, I show values on a LCD plus show with the RGB LED the distance:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;01 static void Measure(void) {&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;02 uint16_t us, cm;&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;03 uint8_t buf[8];&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;04 &lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;05 us = US_Measure_us();&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;06 UTIL1_Num16uToStrFormatted(buf, sizeof(buf), us, &amp;#39; &amp;#39;, 5);&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;07 LCD1_GotoXY(1,5);&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;08 LCD1_WriteString((char*)buf);&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;09 &lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;10 cm = US_usToCentimeters(us, 22);&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;11 UTIL1_Num16uToStrFormatted(buf, sizeof(buf), cm, &amp;#39; &amp;#39;, 5);&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;12 LCD1_GotoXY(2,5);&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;13 LCD1_WriteString((char*)buf);&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;14 &lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;15 LEDR_Put(cm&amp;lt;10); /* red LED if object closer than 10 cm */&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;16 LEDB_Put(cm&amp;gt;=10&amp;amp;&amp;amp;cm&amp;lt;=100); /* blue LED if object is in 10..100 cm range */&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;17 LEDG_Put(cm&amp;gt;100); /* blue LED if object is in 10..100 cm range */&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;18 }&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;19 &lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;20 /*lint -save -e970 Disable MISRA rule (6.3) checking. */&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;21 int main(void)&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;22 /*lint -restore Enable MISRA rule (6.3) checking. */&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;23 {&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;24 /* Write your local variable definition here */&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;25 &lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;26 /*** Processor Expert internal initialization. DON&amp;#39;T REMOVE THIS CODE!!! ***/&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;27 PE_low_level_init();&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;28 /*** End of Processor Expert internal initialization. ***/&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;29 &lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;30 /* Write your code here */&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;31 US_Init();&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;32 LCD1_Clear();&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;33 LCD1_WriteLineStr(1, &amp;quot;us: &amp;quot;);&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;34 LCD1_WriteLineStr(2, &amp;quot;cm: &amp;quot;);&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;35 for(;;) {&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;36 Measure();&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;37 WAIT1_Waitms(50); /* wait at least for 50 ms until the next measurement to avoid echos */&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;38 }&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;39 &lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;40 /*** Don&amp;#39;t write any code pass this line, or it will be deleted during code generation. ***/&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;41 /*** RTOS startup code. Macro PEX_RTOS_START is defined by the RTOS component. DON&amp;#39;T MODIFY THIS CODE!!! ***/&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;42 #ifdef PEX_RTOS_START&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;43 PEX_RTOS_START(); /* Startup of the selected RTOS. Macro is defined by the RTOS component. */&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;44 #endif&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;45 /*** End of RTOS startup code. ***/&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;46 /*** Processor Expert end of main routine. DON&amp;#39;T MODIFY THIS CODE!!! ***/&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;47 for(;;){}&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;48 /*** Processor Expert end of main routine. DON&amp;#39;T WRITE CODE BELOW!!! ***/&lt;/span&gt;&lt;span style="color:#3366ff;font-size:12px;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;49 } /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="syntaxhighlighter cpp" style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;&lt;em&gt;&lt;a href="http://s0.wp.com/wp-includes/images/smilies/icon_idea.gif?m=1129645325g" rel="nofollow ugc noopener" style="color:#355491;" target="_blank"&gt;&lt;img loading="lazy" alt=":idea:" class="jiveImage wp-smiley" src="http://s0.wp.com/wp-includes/images/smilies/icon_idea.gif?m=1129645325g" style="border:0px;" /&gt;&lt;/a&gt; If you do not have a LCD, simply strip off the LCD code &lt;a href="http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1129645325g" rel="nofollow ugc noopener" style="color:#355491;" target="_blank"&gt;&lt;img loading="lazy" alt=":-)" class="jiveImage wp-smiley" src="http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1129645325g" style="border:0px;" /&gt;&lt;/a&gt; .&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;The other thing to consider: inside the &lt;code style="font-size:1.2em;"&gt;main()&lt;/code&gt; loop I use a delay of 50 ms: In case of an echo it will take about 25 ms for the echo to arrive: with 50 ms I will be calm for some time until I send another ‘ping’.&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:tahoma, arial, helvetica, sans-serif;"&gt;And here is a short video to see everything in action:&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;h2 style="font-size:1.7778em;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;"&gt;Summary&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin:0;"&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;Once getting through the concept and principles, it is rather easy to use an ultrasonic range sensor like the HC-SR04. Setting up the input capture/counter is the most tricky part. But I think with the concepts and steps outlined above, this should work out pretty good for any other microcontroller, especially if used with CodeWarrior and Processor Expert.&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;The project shown above is available &lt;a class="jive-link-external-small" href="http://steinerberg.com/EmbeddedComponents/Examples/FreedomBoard/Freedom_HC-SR04.zip" rel="nofollow" style="color:#355491;" target="_blank"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;span style="font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;If you are looking for improvements, here are some ideas:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:12pt;"&gt;properly calculate in the humidity and air density.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:12pt;"&gt;Using a temperature sensor to factor in the current air temperature.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:12pt;"&gt;Averaging the samples.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:12pt;"&gt;Dynamic measurement time, adaptive to the distance found to save battery energy.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:12pt;"&gt;Using an RTOS like &lt;a class="jive-link-external-small" href="http://steinerberg.com/EmbeddedComponents/FreeRTOS/home.htm" rel="nofollow" style="color:#355491;" target="_blank"&gt;FreeRTOS&lt;/a&gt;. Especially to reduce the ‘busy waiting’ time and to do something useful during that time.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:12pt;"&gt;Shell support (e.g. &lt;a class="jive-link-external-small" href="http://steinerberg.com/EmbeddedComponents/FSShell/home.htm" rel="nofollow" style="color:#355491;" target="_blank"&gt;FSShell&lt;/a&gt;) to show values on a console, including setting of calibration values.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:12pt;"&gt;Create a Processor Expert Component for it.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:12pt;"&gt;As the ultrasonic beam is rather focused: add a pan a tilt servo to it to ‘explore’ more.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:12pt;"&gt;Adding more sensors and actuators to use it for a robot application &lt;a href="http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1129645325g" rel="nofollow ugc noopener" style="color:#355491;" target="_blank"&gt;&lt;img loading="lazy" alt=":-)" class="jiveImage wp-smiley" src="http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1129645325g" style="border:0px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;"&gt; &lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;font-size:12px;font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size:12pt;"&gt;Happy Ultrasonic-Sounding &lt;a href="http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1129645325g" rel="nofollow ugc noopener" style="color:#355491;" target="_blank"&gt;&lt;img loading="lazy" alt=":-)" class="jiveImage wp-smiley" src="http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1129645325g" style="border:0px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: freescaledocs, kinetis, frdm–kl25z, arduino, development-tools&lt;/div&gt;
</description></item></channel></rss>