<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Eugene Hutorny &#187; SISAM</title>
	<atom:link href="http://hutorny.in.ua/category/projects/pic/sisam/feed" rel="self" type="application/rss+xml" />
	<link>http://hutorny.in.ua</link>
	<description>Programming in a small</description>
	<lastBuildDate>Tue, 16 Mar 2010 07:25:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Simple sampler as a &#8220;COM2&#8243; plugin</title>
		<link>http://hutorny.in.ua/projects/pic/sisam/simple-sampler-com2-plugin</link>
		<comments>http://hutorny.in.ua/projects/pic/sisam/simple-sampler-com2-plugin#comments</comments>
		<pubDate>Thu, 10 Aug 2006 17:38:18 +0000</pubDate>
		<dc:creator>Eugene</dc:creator>
				<category><![CDATA[SISAM]]></category>

		<guid isPermaLink="false">http://hutorny.in.ua/projects/pic/sisam/simple-sampler-com2-plugin</guid>
		<description><![CDATA[This post presents an alternate implementation of SISAM hardware &#8211; a &#8220;COM2&#8243; plug-in. It is designed for plugging in ahead of a bracket DB9 cable, usually used for accommodating a second serial port. This implementation uses a different MCU &#8211; PIC16F88, which allows the application to utilize 30% more RAM for the sampling buffer.

Capabilities
SISAM 88 [...]]]></description>
			<content:encoded><![CDATA[<p>This post presents an alternate implementation of SISAM hardware &#8211; a &#8220;COM2&#8243; plug-in. It is designed for plugging in ahead of a bracket DB9 cable, usually used for accommodating a second serial port. This implementation uses a different MCU &#8211; PIC16F88, which allows the application to utilize 30% more RAM for the sampling buffer.</p>
<p><span id="more-56"></span></p>
<h2>Capabilities</h2>
<p>SISAM 88 &#8211; provides the same set of <a href="http://hutorny.in.ua/projects/pic/sisam/sisam-overview#Capabilities">capabilities as SISAM 690</a> (differences are <u>underlined</u>/<del>strikethrough</del>):</p>
<ul>
<li><strong>S</strong>  &#8211; Sampling single logical channel &#8211; <u>RB2</u> <del>RB5</del> up to 500 ksps (kilo sample per sec)</li>
<li><strong>X</strong>   &#8211; Sampling dual logical channels <u>RB2, RB1</u> <del>RB5, RB4</del> up to 200 ksps per each channel</li>
<li><strong>J</strong>   &#8211; Limited buffered sampling sole channel @ 5 Msps (<u>2560</u> <del>1920</del> samples via internal buffer)</li>
<li><strong>M</strong>   &#8211; Measuring pulse timing on <u>RB3</u> <del>RC5</del> up to 12 kHz average,</li>
<li><strong>o</strong>   &#8211; drive (trigger) <u>four</u>&nbsp;<del>five</del> output pins right before (0.8us) sampling starts</li>
<li><strong>O</strong>   &#8211; drive (trigger) <u>four</u>&nbsp;<del>five</del> output pins immediately and/or in a sequence (20 us per data byte)</li>
</ul>
<p>In addition to mentioned above, SISAM can be used as a variable frequency generator (VFG). With the current firmware &#8211; as a side effect of <strong>S</strong> command (a separate command is planned for upcoming firmware updates)</p>
<h2>System requirements</h2>
<ul>
<li>High-speed serial port (such as <a href="http://leo.yuriev.ru/serialxp.exe">SerialXP</a>)</li>
<li>Triple power supply (+5VDC, +12VDC, -12VDC)</li>
</ul>
<h2>Schematics</h2>
<p>SISAM88 hardware schematic is given on Figure 1. It includes</p>
<ul>
<li>MCU PIC16F88 (U1)</li>
<li>20MHz crystal (X1)</li>
<li>RS232 level converter, build up on SN75150 line driver (U2), current-limiting resistors R1-R3, R6, a Zener diode D1 that prevents RA5/VPP from being pulled up to +12V.</li>
<li>Current-limiting resistors R4, R5 on input </li>
<li>Four connectors J1-J4.</li>
</ul>
<p>J2 is an angled 10 pin male IDC header identical to a COM2 connector on the motherboard.  J1 is an angled female IDC header mating with the COM2 connector. J3 is an angled 4 pins header mating with Mini-Molex power connector (FDD power). J4 is a 6 pins header compatible with your ICSP programmer (for example PICkit2).</p>
<p>
<div align="center"><a href="http://hutorny.in.ua/wp-content/uploads/2006/08/SISAM88v1.1.png" target=_blank rel="thumbnail"><img id="image57" height=66 alt="SISAM v1.1/88" src="http://hutorny.in.ua/wp-content/uploads/2006/08/SISAM88v1.1.thumbnail.png" /></a></div>
</p>
<p>
<div align="center">Figure 1. SISAM 88 Hardware Schematics</div>
</p>
<p>Actuator outputs are connected to RA0-RA3.<br />
Wire RB4-RB5 delivers clock from EUSART to SSP. RB4 also serves as VFG output.</p>
<h2>External connectors</h2>
<p>Power &#8211; it is an altered FDD power connector. 12V ground header is pulled out of it and another header inserted instead. This header is wired to -12VDC.</p>
<table width="120" border="1" cellpadding="0" cellspacing="0" class="StdTable" style="border-collapse:collapse;border:none;">
<tr>
<th>Pin #</th>
<th>Description</th>
</tr>
<tr>
<td align ="center">1</td>
<td align ="center">+5V</td>
</tr>
<tr>
<td align ="center">2</td>
<td align ="center">-12V</td>
</tr>
<tr>
<td align ="center">3</td>
<td align ="center">GND</td>
</tr>
<tr>
<td align ="center">4</td>
<td align ="center">+12V</td>
</tr>
</table>
<p>Bracket DB9 &#8211; it is a standard COM2 bracket cable. In this design it is used as an input/output connector for connecting probes. Pin 5 on this connector is still used for ground to make it compatible with RS232 cables that may have it connected to the chassis. It make safe connecting a regular RS232 cable.</p>
<table width="480" border="1" cellpadding="0" cellspacing="0" class="StdTable" style="border-collapse:collapse;border:none;">
<tr>
<th>Pin #</th>
<th>Name</th>
<th>Direction</th>
<th>Description</th>
</tr>
<tr>
<td>1</td>
<td>CH1</td>
<td align ="center">In</td>
<td>CH1 sampler input</td>
</tr>
<tr>
<td>2</td>
<td>CH0</td>
<td align ="center">In</td>
<td>CH0 sampler input</td>
</tr>
<tr>
<td>3</td>
<td>GND</td>
<td align ="center">-</td>
<td>Signal ground</td>
</tr>
<tr>
<td>4</td>
<td>VFG</td>
<td align ="center">Out</td>
<td>VFG output</td>
</tr>
<tr>
<td>5</td>
<td>GND</td>
<td align ="center">-</td>
<td>Actuator ground</td>
</tr>
<tr>
<td>6</td>
<td>A3</td>
<td align ="center">Out</td>
<td>Actuator line 3</td>
</tr>
<tr>
<td>7</td>
<td>A2</td>
<td align ="center">Out</td>
<td>Actuator line 2</td>
</tr>
<tr>
<td>8</td>
<td>A1</td>
<td align ="center">Out</td>
<td>Actuator line 1</td>
</tr>
<tr>
<td>9</td>
<td>A0</td>
<td align ="center">Out</td>
<td>Actuator line 0</td>
</tr>
</table>
<p></p>
<h2>Firmware</h2>
<p><a id=p63 href="http://hutorny.in.ua/wp-content/uploads/2006/08/SISAM88v1.1.zip">SISAM v1.1/88 Firmware</a> is available for download.</p>
<p>Revision 1.1 includes the following changes<br />
1. Fixed defect with improper speed estimation for command r02;X0;</p>
<h2>Board</h2>
<p>Figure 2 shows the board layout (Scale 1:2). Discrete parts, which are not shown on this layout, are surface mount on the soldering side. PCB layout is not yet ready.</p>
<p>The board has some space reserved for the future upgrades.</p>
<p>
<div align="center"><img id="image58" height=277 width=372 alt="SISAM Board Layout" src="http://hutorny.in.ua/wp-content/uploads/2006/08/SISAM88v1.1board.png" /></div>
</p>
<p>
<div align="center">Figure 2. SISAM COM2 plug-in board</div>
</p>
<h2>ICSP</h2>
<p>PIC can be programmed in circuit; however, the device should be disconnected from power supply.</p>
<h2>Pictures</h2>
<p>
<table width="100%">
<tr>
<td width="25%"><a href="http://hutorny.in.ua/wp-content/uploads/2006/08/DB9bracket.jpg" target=_blank rel="thumbnail"><img id="image59" height=96 alt="DB9 bracket" src="http://hutorny.in.ua/wp-content/uploads/2006/08/DB9bracket.thumbnail.jpg" /></a></td>
<td width="25%"><a href="http://hutorny.in.ua/wp-content/uploads/2006/08/SISAM88-1m.jpg" target=_blank rel="thumbnail"><img id="image60" height=96 alt="SISAM board" src="http://hutorny.in.ua/wp-content/uploads/2006/08/SISAM88-1m.thumbnail.jpg" /></a></td>
<td width="25%"><a href="http://hutorny.in.ua/wp-content/uploads/2006/08/SISAM88-2m.jpg" target=_blank rel="thumbnail"><img id="image61" height=96 alt="SISAM connected" src="http://hutorny.in.ua/wp-content/uploads/2006/08/SISAM88-2m.thumbnail.jpg" /></a></td>
<td width="25%"><a href="http://hutorny.in.ua/wp-content/uploads/2006/08/COM2-plugin.jpg" target=_blank rel="thumbnail"><img id="image62" height=96 alt="SISAM in place" src="http://hutorny.in.ua/wp-content/uploads/2006/08/COM2-plugin.thumbnail.jpg" /></a></td>
</tr>
<tr>
<td>DB9 bracket</td>
<td>SISAM 88 board</td>
<td>Cables connected</td>
<td>SISAM in place</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>Notice altered FDD power connector</td>
<td>&nbsp;</td>
</tr>
</table>
<p>See also: More about <a href="http://hutorny.in.ua/SISAM">SISAM</a>; <a href="http://hutorny.in.ua/projects/simplescope">Simplescope</a>; <a href="http://hutorny.in.ua/projects/w32/overclocking-com-port">Overclocking COM port</a>; <a href="http://hutorny.in.ua/downloads">Downloads</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hutorny.in.ua/projects/pic/sisam/simple-sampler-com2-plugin/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Speed tickets on RS232 Level Converters</title>
		<link>http://hutorny.in.ua/projects/tested-high-speed-rs232-level-converter</link>
		<comments>http://hutorny.in.ua/projects/tested-high-speed-rs232-level-converter#comments</comments>
		<pubDate>Wed, 02 Aug 2006 02:41:39 +0000</pubDate>
		<dc:creator>Eugene</dc:creator>
				<category><![CDATA[PIC]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[SISAM]]></category>

		<guid isPermaLink="false">http://hutorny.in.ua/projects/tested-high-speed-rs232-level-converter</guid>
		<description><![CDATA[As practice has shown, simple level converter with -12V supply derived from DTR/RTS is not capable to work on high speed. Therefore I have made several tests on speed with the original PNP-based design and a RS232 line driver SN75150 and publish test results in this post. Test summary is given in Table 1.





Overview

Experiments were [...]]]></description>
			<content:encoded><![CDATA[<p>As practice has shown, simple level converter with -12V supply derived from DTR/RTS is not capable to work on high speed. Therefore I have made several tests on speed with the original PNP-based design and a RS232 line driver SN75150 and publish test results in this post. Test summary is given in <a href="#Table1">Table 1</a>.</p>
<p><span id="more-49"></span></p>
<style type="text/css">
<!--
.style1 {color: #666666}
.subs {
	font-size: smaller;
}
-->
</style>
<h2>
<p>Overview</p>
</h2>
<h3>Experiments were made with four RS232 Level Converter designs:</h3>
<ol>
<li>PNP Transistor, parasitic -12V</li>
<li>PNP Transistor + JFET current source, parasitic -12V</li>
<li>PNP Transistor, external -5V supply</li>
<li>SN75150 &#8211; Dual RS232 Line Driver</li>
</ol>
<h3>Test environment:</h3>
<ul>
<li>TTL output generated by SISAM in diagnostic mode </li>
<li>Converter loaded with 1.5m shielded cable (C?‰?100-300pF) + PC USART (Winbond)</li>
</ul>
<h3>Data verification methods:</h3>
<ul>
<li>watching and reporting framing error condition and</li>
<li>comparing received data to expected</li>
</ul>
<h3>Test tools:</h3>
<ul>
<li><a id=p51 href="http://hutorny.in.ua/wp-content/uploads/2006/08/SITEST.zip">SITEST</a> ??“ sends commands to SISAM and forwards data to stdout</li>
<li><a id=p50 href="http://hutorny.in.ua/wp-content/uploads/2006/08/LOOFI.zip">LOOFI</a> ??“ reads data from stdin and verifies the stream against the master pattern, made of the first <em>count</em> characters.</li>
</ul>
<p>Command lines for tests are the following</p>
<p><code><strong>SITEST</strong> /port=COM1 /count=640000 U03; > c:\temp\U03.txt<br />
<strong>LOOFI </strong>/count=224 /file=c:\temp\U03.txt</code></p>
<p>SITEST sends U03 command to SISAM. This command turns SISAM in diagnostic mode and SISAM sends sequences of characters 0&#215;20 to 0xFF using baudrate, specified in the command (U00 ??“ 115.2K, U03 ??“ 921.6K). SITEST saves data to file and aborts execution if a framing error is detected. Then LOOFI is used to verify data. </p>
<table>
<tr>
<td colspan="2">
<h2>1. Hardware loop test</h2>
<p>In this test RX and TX wires were connected on the free cable end and test data were send with a terminal application. Test has passed 460.8K and has failed on 921.6K ??“ wrong data received. </p>
</td>
</tr>
<tr>
<td>
<h2>2. PNP parasitic -12V</h2>
<p>Test has passed 230.4K and has failed on 460.8K with farming error. Oscilloscope has shown that falling edge is too sloping. I have tried to lower R1 and R2 and test has failed. I also tried to shorten the cable from 1.5 m to 0.3m and it did not make results any better. </p>
</td>
<td><a href="http://hutorny.in.ua/wp-content/uploads/2006/08/RS232T2.png" target="_blank" rel="thumbnail"><img src="http://hutorny.in.ua/wp-content/uploads/2006/08/RS232T2.thumbnail.png" alt="RS232 Test 2" name="image52" height=84 border="0" id="image52" /></a></td>
</tr>
<tr>
<td>
<h2>3. PNP+JFET parasitic -12V</h2>
<p>As a variation of previous design, I have replaced R2 with a 10mA current source made on BF245A. This did not make results any better. My explanation to this ??“ parasitic power is not a good power supply to drive even small capacitive load at that high speed.</p>
</td>
<td><a href="http://hutorny.in.ua/wp-content/uploads/2006/08/RS232T3.png" target="_blank" rel="thumbnail"><img src="http://hutorny.in.ua/wp-content/uploads/2006/08/RS232T3.thumbnail.png" alt="RS232 Test 3" height=85 border="0" id="image53" /></a></td>
</tr>
<tr>
<td>
<h2>4. PNP external -5V</h2>
<p>In this test the circuit was powered with??“5V external power supply. R1 and R2 were varied from 1K to 100 Ohm. The best results were achieved with speed R2=360 and R1=10K &#8211; Test has passed 460.8K and has failed on 921.6K with framing error.<br />
These resistor values cannot be used with parasitic power, because transistor&#8217;s collector current (Ic?‰?30 mA) is higher than can be derived from a single COM port line. </p>
</td>
<td><a href="http://hutorny.in.ua/wp-content/uploads/2006/08/RS232T4.png" target="_blank" rel="thumbnail"><img src="http://hutorny.in.ua/wp-content/uploads/2006/08/RS232T4.thumbnail.png" alt="RS232 Test 4" height=59 border="0" id="image54" /></a></td>
</tr>
<tr>
<td colspan="2">
<h2>5. PNP+JFET external -5V</h2>
<p>This design I did not try because it needs another type of JFET with I<span class="subs">DSS</span> current 30mA and I did not have it handy. </p>
</td>
</tr>
<tr>
<td>
<h2>6. SN75150</h2>
<p>SN75150 is a dual supply dual RS232 line driver. Despite SN75150 datasheet states maximal baud rate 120K, it works on 921.6K and the test has passed 921.6K.</p>
<p>I tried to power it with +5V and -12V parasitic power and it did not work at all.</p>
</td>
<td><a href="http://hutorny.in.ua/wp-content/uploads/2006/08/RS232T5.png" target="_blank" rel="thumbnail"><img src="http://hutorny.in.ua/wp-content/uploads/2006/08/RS232T5.thumbnail.png" alt="RS232 Test 5" height=44 border="0" id="image55" /></a></td>
</tr>
</table>
<table>
<h2>7. Summary on tests</h2>
<p>Table 1<a name="Table1" id="Table1"></a></p>
</table>
<table width="500" border="1" cellpadding="0" cellspacing="0" class="StdTable" style="border-collapse:collapse;border:none;">
<tr>
<th>Test</th>
<th>Max baud rate</th>
</tr>
<tr>
<td>Hardware loop</td>
<td align="right">460.8K</td>
</tr>
<tr>
<td>PNP parasitic -12V</td>
<td align="right">230.4K</td>
</tr>
<tr>
<td>PNP parasitic -12V, 0.3m cable</td>
<td align="right">230.4K</td>
</tr>
<tr>
<td>PNP+JFET parasitic -12V</td>
<td align="right">230.4K</td>
</tr>
<tr>
<td>PNP external -5V</td>
<td align="right">460.8K</td>
</tr>
<tr>
<td>PNP+JFET external -5V</td>
<td><span class="style1">N/T</span></td>
</tr>
<tr>
<td>SN75150</td>
<td align="right">921.6K</td>
</tr>
<tr>
<td>SN75C3232</td>
<td class="style1">N/T</td>
</tr>
<tr>
<td>MAX3232</td>
<td class="style1">N/T</td>
</tr>
<tr>
<td>MAX232</td>
<td><span class="style1">N/T</span></td>
</tr>
</table>
<p><span class="style1">N/T</span> &#8211; Not tested</p>
<h2>6. Notes on driver selection</h2>
<p>In this chapter I provide my motivation for driver selection. </p>
<p>I have looked for drivers in <a href="http://focus.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=sszt009b&amp;fileType=pdf">TI Interface Selection Guide</a>. None of 1000 kbps drivers were available from local dealers (besides those drivers are not cheap). Therefore I decided to take a 120K driver and &#8216;overclock&#8217; it. Considering that the current level is important for driving capacitive load, I limited my selection to dual supply chips. With these constraints I picked the smallest PDIP chip available locally and it happens to be SN75150. Its advantages: small footprint, very little overhead, level compatibility with PNP-based design, low price. Disadvantages ??“ necessity of dual power supply.</p>
<p>If dual power supply is not acceptable, you may try other drivers (such as <a href="http://focus.ti.com/docs/prod/folders/print/sn75c3232.html">SN75C3232</a>, MAX3232, MAX232). I would appreciate if you share your results with me.</p>
]]></content:encoded>
			<wfw:commentRss>http://hutorny.in.ua/projects/tested-high-speed-rs232-level-converter/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Simple Environment for Automated Testing</title>
		<link>http://hutorny.in.ua/projects/pic/simple-environment-automated-testing-embedded-applications</link>
		<comments>http://hutorny.in.ua/projects/pic/simple-environment-automated-testing-embedded-applications#comments</comments>
		<pubDate>Mon, 17 Jul 2006 00:19:28 +0000</pubDate>
		<dc:creator>Eugene</dc:creator>
				<category><![CDATA[PIC]]></category>
		<category><![CDATA[SISAM]]></category>

		<guid isPermaLink="false">http://hutorny.in.ua/projects/pic/simple-environment-automated-testing-embedded-applications</guid>
		<description><![CDATA[This post describes how SISAM can be used to  build a simple environment for automated testing of embedded applications.

Overview
For developing applications with a long life  cycle it is very important to ensure that a new release contributes no regression  comparing to the previous release. This may become a challenge when an  [...]]]></description>
			<content:encoded><![CDATA[<p>This post describes how SISAM can be used to  build a simple environment for automated testing of embedded applications.</p>
<p><span id="more-46"></span></p>
<h2>Overview</h2>
<p>For developing applications with a long life  cycle it is very important to ensure that a new release contributes no regression  comparing to the previous release. This may become a challenge when an  application provides number of capabilities, operates in number of modes or  implements number of states. A common approach for addressing this challenge is  to establish an automated test environment.</p>
<p>Figure 1 shows a typical automated test  environment. It consists of</p>
<table>
<tr>
<td>
<ul>
<li>Batch Controller &ndash; a (software) component for running tests in a batch and aggregating overall batch  result</li>
<li>Test Tool &ndash; a component  that executes single tests and produce test outputs </li>
<li>Comparator &ndash; a component  that compares test outputs against masters and reports discrepancies</li>
<li>Test Cases Repository &ndash; a  storage of test batches, test cases, test input data and masters </li>
<li>Test Log Repository &ndash; a  storage of test output data and test discrepancies </li>
</ul>
</td>
<td>&nbsp;</td>
<td valign="top"><a href="http://hutorny.in.ua/wp-content/uploads/2006/07/TypicalTestEnvironment.png" target="_blank" rel="thumbnail"><img id="image47" height=85 alt="Typical Test Evironment" src="http://hutorny.in.ua/wp-content/uploads/2006/07/TypicalTestEnvironment.thumbnail.png" /></a><br />Figure 1</td>
</tr>
</table>
<p>Typical sequence of events for automated  testing:</p>
<ul>
<li>Actor uses Batch  Controller to start a specific test batch</li>
<li>Batch Controller reads  test cases that constitutes the batch </li>
<li>Batch Controller calls  Test Tool for executing a test case from the batch</li>
<li>Test Tool reads input  test data for the specified test case, applies stimuli to the Testable  Application, captures, preprocesses and records application responses</li>
<li>Batch Controller, upon  completion of a test case (all test cases), calls Comparator to compare a test  output to a corresponding test master.</li>
<li>Comparator compares test  output and master, writes discrepancies (if any) and signals success/failure</li>
<li>Batch Controller, upon  completion of all test cases, aggregates test results and signals a batch  result (success/failure) to the Actor.</li>
</ul>
<h2>A simple test environment</h2>
<p>A simple environment for automated testing  can be implemented as the following</p>
<table width="500" border="1" cellpadding="0" cellspacing="0" class="StdTable" style="border-collapse:collapse;border:none;">
<tr>
<th scope="col">Component</th>
<th scope="col">Implemented as</th>
</tr>
<tr>
<td>Batch Controller</td>
<td>A script for shell/command interpreter</td>
</tr>
<tr>
<td>Test Case</td>
<td>A script for shell/command interpreter</td>
</tr>
<tr>
<td>Test Batch</td>
<td>A group of scripts/a folder</td>
</tr>
<tr>
<td>Test Data</td>
<td>A data files or command line parameters</td>
</tr>
<tr>
<td>Test Output</td>
<td>A data file</td>
</tr>
<tr>
<td>Master</td>
<td>A data file</td>
</tr>
<tr>
<td>Comparator</td>
<td>File content comparator</td>
</tr>
<tr>
<td>Discrepancies</td>
<td>File content differences</td>
</tr>
<tr>
<td>Test Tool</td>
<td>Simple Sampler based tool</td>
</tr>
</table>
<p></p>
<h2>Test Tool</h2>
<p>To use this simplest automated test  environment for testing embedded applications, the Test Tool should be a  command-line utility, capable to apply stimuli to the testable application and  capture the application response to a file.</p>
<h3>SISAM &amp; SITEST</h3>
<table>
<tr>
<td>
<p>SISAM is PIC-based application capable to  accept commands via RS232, actuate pins according to the command, acquire data  from one or two channels and send acquired data via RS232.</p>
<p>SITEST is a command line interface to SISAM.  It accepts a sequence of characters from the command line, sends these commands  to SISAM and writes data to standard output. These features make SISAM a good  candidate for simple testing environment.</p>
<p>Figure 2 shows architecture diagram for a test tool build on SISAM and SITEST.</p>
</td>
<td>&nbsp;</td>
<td valign="middle"><a href="http://hutorny.in.ua/wp-content/uploads/2006/07/SISAM&amp;SITEST.png" target="_blank" rel="thumbnail"><img id="image48" height=96 alt="SISAM &amp; SITEST in a test tool" src="http://hutorny.in.ua/wp-content/uploads/2006/07/SISAM&amp;SITEST.thumbnail.png" /></a><br />Figure 2</td>
</tr>
</table>
<h3>Filters</h3>
<p>Due to nature of embedded applications  acquired data may vary from run to run even for valid runs. This variability is  very application specific; it may make impossible output-to-master comparison,  and thus may easily bury the idea of automated testing. To address this issue,  acquired data should be filtered and coarsened to the level at which all valid  runs would produce identical outputs while invalid runs would still have some  difference in the output data. Such a filter should be a command line utility  that reads from standard input and writes to standard output. Of course,  writing a filter requires additional efforts, however, from authors&#8217;  experience, implementing a simple filter does not require any significant  efforts.</p>
<h3>Function Generators</h3>
<p>SISAM is only capable to provide static  stimuli for a period of data acquisition. Therefore, if the test conditions  require some alternating stimuli applied in parallel with data acquisition, a  &quot;function generator&quot; can be used in conjunction with SISAM. A  &quot;function generator&quot; is an embedded application that accepts a static  input (function ID) and generates a variable function on output.</p>
]]></content:encoded>
			<wfw:commentRss>http://hutorny.in.ua/projects/pic/simple-environment-automated-testing-embedded-applications/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SISAM Protocol</title>
		<link>http://hutorny.in.ua/projects/pic/sisam/sisam-protocol</link>
		<comments>http://hutorny.in.ua/projects/pic/sisam/sisam-protocol#comments</comments>
		<pubDate>Fri, 14 Jul 2006 23:50:13 +0000</pubDate>
		<dc:creator>Eugene</dc:creator>
				<category><![CDATA[SISAM]]></category>

		<guid isPermaLink="false">http://hutorny.in.ua/projects/pic/sisam/sisam-protocol</guid>
		<description><![CDATA[
SISAM uses RTS/CTS flow control for reading  command and DTR flow control for sending acquired data. This means that PC  should set RTS before sending commands and watch for CTS (e.g. use CTS sensitivity option). When PIC goes into data acquisition mode, it sends an ASCII string starting  with Y4-MODE:  followed [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css"><!-- .style2 {color: #800080; font-weight: bold; } --></style>
<p>SISAM uses RTS/CTS flow control for reading  command and DTR flow control for sending acquired data. This means that PC  should set RTS before sending commands and watch for CTS (e.g. use CTS sensitivity option). When PIC goes into data acquisition mode, it sends an ASCII string starting  with <strong><code>Y4-MODE:</code></strong>  followed with new  mode description. This description can be directly used with <strong><code>mode</code></strong> command or with <strong><code>BuildCommDCB</code></strong> function.</p>
<p><span id="more-44"></span></p>
<p>PC should change the COM port mode as directed.  Since the mode description contains rts=off dtr=on, DTR will be set SPACE signaling  that PC is ready to receive acquired data.</p>
<p>PC stops Data acquisition by setting DTR to  MARK and restoring 115200 baud rate.</p>
<p>If during data acquisition PIC encounters an  error, it signals a BREAK, e.g. holds RX in SPACE until PC sets DTR to MARK. PIC  does not leave error state until PC holds RTS MARK, therefore, to recover from  error state, PC should restore baud rate 115200, set RTS to SPACE and read  error message.</p>
<p>When data acquisition is performed with  sync flag and PC needs to break waiting, it should alter TX line. If CTS  sensitivity option is applied to COM port, <strong><code>WriteFile</code></strong> to the port will not succeed, <strong><code>SetCommBreak</code></strong> should be used instead. After this PIC will enter a error sate which should be  cleared as stated above.</p>
<h2>Initial state</h2>
<ul>
<p>PC opens port for normal operation: <code>baud=115200 parity=N data=8 stop=1 octs=on dtr=off rts=of</code></p>
</ul>
<h2>Sending a command to SISAM</h2>
<table>
<tr>
<td>
<p class="style2">PIC is in IDLE state</p>
<ul>
<p>1. PC sets RTS=SPACE<br />
    2. PIC confirms by setting CTS=SPACE<br />
    3. PC sends commnd(s)<br />
    4. PIC sets CTS=MARK<br />
    5. PC continues transmission<br />
    6. PC completes transmission<br />
    7. PC sets RTS=MARK<br />
    8. 2 ms timeout<br />
    9. On either of (7) or (8) PIC accepts command<br />
    10. PIC sends new COM port mode<br />
    11. PC changes COM port mode<br />
    12. PC signals START by setting DTR=SPACE</p>
</ul>
<p class="style2">PIC is in WAIT state</p>
<ul>
<p>13. PIC sends data</p>
</ul>
<p class="style2">PIC is in ACQUIRE state</p>
<ul>
<p>14. PC signals STOP by setting DTR=MARK<br />
    15. PIC stops transmission<br />
    16. PC restores COM port mode </p>
</ul>
<p class="style2">PIC is in IDLE state</p>
</td>
<td width="100">&nbsp;</td>
<td valign="top"><a href="http://hutorny.in.ua/wp-content/uploads/2006/07/SISAM%20protocol%20I.png" target="_blank"><br />
<img id="image45" height=96 alt="SISAM Send Command Diagram" src="http://hutorny.in.ua/wp-content/uploads/2006/07/SISAM%20protocol%20I.thumbnail.png" /></a></td>
</tr>
</table>
<h2>Output stream format</h2>
<p>PIC sends acquired data as described below</p>
<table>
<tr>
<td valign="top">S,J:</td>
<td>Sampled bits are packed into octets (bytes) in LSB order (less significant bit first) and sent to the output stream</td>
</tr>
<tr>
<td valign="top">X:</td>
<td>Sampled bits are packed into LSB bytes and sent to the stream by turns, channel 0 comes first</td>
</tr>
<tr>
<td valign="top">M:</td>
<td>Time between signal alternations is measured in ticks and sent as <code>WORD </code>(16 bit unsigned integer with LSB bit ordering). Zero has special meaning ??“ no alternation occurred in <code>0xFFFF</code> ticks.</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://hutorny.in.ua/projects/pic/sisam/sisam-protocol/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SISAM Overview</title>
		<link>http://hutorny.in.ua/projects/pic/sisam/sisam-overview</link>
		<comments>http://hutorny.in.ua/projects/pic/sisam/sisam-overview#comments</comments>
		<pubDate>Sat, 08 Jul 2006 01:12:02 +0000</pubDate>
		<dc:creator>Eugene</dc:creator>
				<category><![CDATA[SISAM]]></category>

		<guid isPermaLink="false">http://hutorny.in.ua/projects/pic/sisam/sisam-overview</guid>
		<description><![CDATA[SISAM &#8211; SImple SAMpler &#8211; is a simple PIC-based hardware for precision dual channel data acquiring with moderate resolution (up to 500 ksps in continous mode and up to 5 Msps for very short sequence). It uses USART and SSP for sampling signals and software routines for RS232 communication. USART is configured for synchronous master [...]]]></description>
			<content:encoded><![CDATA[<p>SISAM &#8211; SImple SAMpler &#8211; is a simple PIC-based hardware for precision dual channel data acquiring with moderate resolution (up to 500 ksps in continous mode and up to 5 Msps for very short sequence). It uses USART and SSP for sampling signals and software routines for RS232 communication. USART is configured for synchronous master reception, while SSP is set for synchronous slave reception and is driven by USART clock via external circuit (wire). </p>
<p>In sampling mode signals are sampled on USART.RX and SSP.SDI pins. It timing mode it measures time between signal alternations on CC1 pin using CCP module. Acuired data is sent using RS232 protocol.<br />
<br />
<span id="more-16"></span></p>
<h2>Schematic</h2>
<p>Current version is build for PIC16F690. Hardware schematic is given <a href="http://hutorny.in.ua/projects/pic/sisam/sisam-hardware">in this post</a>.</p>
<h2><a name="Capabilities" id="Capabilities"></a>Capabilities</h2>
<p>SISAM has a terminal-like console interface with a small set of ASCII-based <a href="http://hutorny.in.ua/projects/sisam/sisam-command-language">commands</a> and produces human readable and computer friendly responses.<br />
<br />
SISAM &#8211; provides the following capabilities</p>
<ul>
<li><strong>S</strong>  &#8211; Sampling single channel &#8211; RB5 up to 500 ksps (kilo sample per sec)</li>
<li><strong>X</strong>   &#8211; Sampling dual channel RB5, RB4 up to 200 ksps per each channel</li>
<li><strong>J</strong>   &#8211; Limited buffered sampling sole channel @ 5 Msps (1920 samples via internal buffer)</li>
<li><strong>M</strong>   &#8211; Measuring pulse timing on RC5 up to 12 kHz average,</li>
<li><strong>o</strong>   &#8211; drive (trigger) output pins right before (0.8us) sampling started</li>
<li><strong>O</strong>   &#8211; drive (trigger) output pins immediately and/or in a sequence (20 us per data byte)<br />
          (two sequential commands Oxx;Oxx have interval approx 440 us &#8211; 436.6 + delay on PC USART)</li>
</ul>
<p>Command language capabilities:</p>
<ul>
<li>executing all commands via ASCII/RS232 console</li>
<li>command data is passed as hexadecimal digits</li>
</ul>
<p>Communication capabilities</p>
<ul>
<li>RTS/CTS driven RS232 communication @ 115.2 kbps</li>
<li>Parasitic -12V power RS232 matching circuit</li>
<li>32 bytes long RS232 reception buffer</li>
<li>Data transfer mode operates on 115.2, 230.4, 460.8 and 921.6 kbps</li>
<li>Best data transfer speed is selected by SISAM and reported via console</li>
<li>Data transfer is driven by PC via DTR signal</li>
</ul>
<h2>System requirements:</h2>
<p>To achieve high speed sampling rate, your COM port must be overclocked to the highest possible speed. Please follow this <a href="http://hutorny.in.ua/projects/w32/overclocking-com-port">link</a> to details on port overclocking. Table 1 lists maximal sampler resolution for possible baud rates. </p>
<p>Table 1. Maximal resolution versus baud rate</p>
<table width="632" border="1" cellpadding="0" cellspacing="0" class="StdTable" style="width:473.8pt;border-collapse:collapse;border:none;">
<tr>
<td>
<div align="right">Baud rate</div>
<p>Operating mode</td>
<td>
<div align="center">115200</div>
</td>
<td>
<div align="center">230400</div>
</td>
<td>
<div align="center">460800</div>
</td>
<td>
<div align="center">921600</div>
</td>
</tr>
<tr>
<td><code>S &ndash; </code>Sole channel sampling rate (ksps)</td>
<td>
<div align="center">91</div>
</td>
<td>
<div align="center">172</div>
</td>
<td>
<div align="center">313</div>
</td>
<td>
<div align="center">500</div>
</td>
</tr>
<tr>
<td><code>X &ndash; </code>Dual channel sampling rate (ksps)</td>
<td>
<div align="center">44</div>
</td>
<td>
<div align="center">85</div>
</td>
<td>
<div align="center">152</div>
</td>
<td>
<div align="center">227</div>
</td>
</tr>
<tr>
<td><code>M &ndash; </code>Timing pulses 10% duty (us)</td>
<td>
<div align="center">40/360</div>
</td>
<td>
<div align="center">20/180</div>
</td>
<td>
<div align="center">14/135</div>
</td>
<td>
<div align="center">10/90</div>
</td>
</tr>
<tr>
<td><code>M &ndash; </code>Timing pulses 50% duty (us)</td>
<td>
<div align="center">160</div>
</td>
<td>
<div align="center">80</div>
</td>
<td>
<div align="center">60</div>
</td>
<td>
<div align="center">40</div>
</td>
</tr>
</table>
<p></p>
<h2>Applications</h2>
<p>Sisam is designed for use in <a href="http://hutorny.in.ua/projects/simplescope">Simplescope</a> and <a href="http://hutorny.in.ua/projects/pic/simple-environment-automated-testing-embedded-applications">A Simple Environment for Automated Testing </a>.</p>
<p>See details on <a href="http://hutorny.in.ua/projects/sisam/sisam-hardware">Hardware for PIC16F690</a>, <a href="http://hutorny.in.ua/projects/pic/sisam/simple-sampler-com2-plugin">Hardware for PIC16F88</a>, <a href="http://hutorny.in.ua/projects/pic/sisam/sisam-protocol">Protocol</a>, <a href="http://hutorny.in.ua/projects/sisam/sisam-command-language">Command Language</a>; <a href="http://hutorny.in.ua/downloads">Downloads</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hutorny.in.ua/projects/pic/sisam/sisam-overview/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>SISAM Command Language</title>
		<link>http://hutorny.in.ua/projects/pic/sisam/sisam-command-language</link>
		<comments>http://hutorny.in.ua/projects/pic/sisam/sisam-command-language#comments</comments>
		<pubDate>Sat, 08 Jul 2006 00:08:19 +0000</pubDate>
		<dc:creator>Eugene</dc:creator>
				<category><![CDATA[SISAM]]></category>

		<guid isPermaLink="false">http://hutorny.in.ua/projects/pic/sisam/sisam-command-language</guid>
		<description><![CDATA[This chapter describes SISAM Command Language, provides Command Language BNF and describes SISAM responses 

Command Language Overview
SISAM supports the following commands


?
Display name and firmware version


H
Display help message


S&#60;sync&#62;
Sample sole channel


X&#60;sync&#62;
Sample dual channels


J&#60;sync&#62;
Capture (sample to buffer)


M&#60;sync&#62;
Measure (time) pulses on RC5


O&#60;data&#62;
Immediate output &#60;data> byte to actuator&#8217;s pins


o&#60;data&#62;
Set &#60;data&#62; to be put on actuator&#8217;s pins right before sampling 


r&#60;data&#62;
Set [...]]]></description>
			<content:encoded><![CDATA[<p>This chapter describes SISAM Command Language, provides Command Language BNF and describes SISAM responses </p>
<p><span id="more-18"></span></p>
<h2>Command Language Overview</h2>
<p>SISAM supports the following commands</p>
<table>
<tr>
<td><strong><code>?</code></strong></td>
<td>Display name and firmware version</td>
</tr>
<tr>
<td><strong><code>H</code></strong></td>
<td>Display help message</td>
</tr>
<tr>
<td><code><strong>S</strong>&lt;sync&gt;</code></td>
<td>Sample sole channel</td>
</tr>
<tr>
<td><code><strong>X</strong>&lt;sync&gt;</code></td>
<td>Sample dual channels</td>
</tr>
<tr>
<td><code><strong>J</strong>&lt;sync&gt;</code></td>
<td>Capture (sample to buffer)</td>
</tr>
<tr>
<td><code><strong>M</strong>&lt;sync&gt;</code><speed></speed></td>
<td>Measure (time) pulses on RC5</td>
</tr>
<tr>
<td><code><strong>O</strong>&lt;data&gt;</code></td>
<td>Immediate output &lt;data> byte to actuator&#8217;s pins</td>
</tr>
<tr>
<td><code><strong>o</strong>&lt;data&gt;</code></td>
<td>Set &lt;data&gt; to be put on actuator&#8217;s pins right before sampling </td>
</tr>
<tr>
<td><code><strong>r</strong>&lt;data&gt;</code></td>
<td>Set sampling rate</td>
</tr>
<tr>
<td><code><strong>U</strong>&lt;test&gt;&lt;speed&gt;</code></td>
<td>Test RS communication at the specified speed by sending sequence of characters</td>
</tr>
</table>
<table>
<tr>
<td><code>&lt;sync&gt;</code></td>
<td>= 0 &#8211; start immediatelly</td>
</tr>
<tr>
<td><code>&lt;sync&gt;</code></td>
<td>= 1 &#8211; sync &#8211; e.g. start with first non-zero octet</td>
</tr>
<tr>
<td><code>&lt;speed&gt;</code></td>
<td>= 0: 112K, 1: 225K, 2:450K, 3:900K</td>
</tr>
<tr>
<td><code>&lt;data&gt;</code></td>
<td>= 0..F,00..FF</td>
</tr>
<tr>
<td><code>&lt;test&gt;</code></td>
<td>= 0..F</td>
</tr>
</table>
<p>
<h2>Command Language BNF</h2>
</p>
<p></p>
<table>
<tr>
<td><code>&lt;commands&gt;</code> </td>
<td><code>::= &lt;command&gt; [ &lt;dlm&gt; &lt;commands&gt; ]</code></td>
</tr>
<tr>
<td>
<tr>
<td><code>&lt;command&gt;        </code></td>
<td><code>::= &lt;info&gt; | &lt;help&gt; | &lt;sample1&gt;  | &lt;sample2&gt; | &lt;capture&gt; | &lt;measure&gt;  |                   &lt;setrate&gt;  | &lt;immediate&gt; | &lt;actuate&gt; | &lt;test&gt;</code></td>
</tr>
<tr>
<td><code>&lt;info&gt;</code> </td>
<td><code>::= <strong>?</strong></code></td>
</tr>
<tr>
<td><code>&lt;help&gt;        </code></td>
<td><code>::= <strong>H</strong> </code></td>
</tr>
<tr>
<td><code>&lt;test&gt;        </code></td>
<td><code>::= <strong>U</strong>&lt;testid&gt;&lt;speed&gt;</code></td>
</tr>
<tr>
<td><code>&lt;sample1&gt;     </code></td>
<td><code>::= <strong>S</strong>&lt;sync&gt;</code></td>
</tr>
<tr>
<td><code>&lt;sample2&gt;     </code></td>
<td><code>::= <strong>X</strong>&lt;sync&gt;</code></td>
</tr>
<tr>
<td><code>&lt;capture&gt;   </code></td>
<td><code>::= <strong>J</strong>&lt;sync&gt;</code></td>
</tr>
<tr>
<td><code>&lt;measure&gt;     </code></td>
<td><code>::= <strong>M</strong>&lt;data&gt;</code></td>
</tr>
<tr>
<td><code>&lt;setrate&gt;     </code></td>
<td><code>::= <strong>r</strong>&lt;data&gt;</code></td>
</tr>
<tr>
<td>&lt;immediate&gt;   </td>
<td><code>::= <strong>O</strong>&lt;data&gt;</code></td>
</tr>
<tr>
<td>&lt;actuate&gt;     </td>
<td><code>::= <strong>o</strong>&lt;data&gt;</code></td>
</tr>
<tr>
<td><code>&lt;data&gt;        </code></td>
<td><code>::= &lt;nibble&gt;[&lt;nibble&gt;]</code>		<em>// less significant comes first </em></td>
</tr>
<tr>
<td><code>&lt;sync&gt;        </code></td>
<td><code>::= &lt;nibble&gt;</code></td>
</tr>
<tr>
<td><code>&lt;speed&gt;       </code></td>
<td><code>::= &lt;nibble&gt;</code></td>
</tr>
<tr>
<td><code>&lt;testid&gt;        </code></td>
<td><code>::= &lt;nibble&gt;</code></td>
</tr>
<tr>
<td><code>&lt;nibble&gt;      </code></td>
<td><code>::= <strong>0</strong> .. <strong>9</strong> | <strong>A</strong> .. <strong>F</strong> </code></td>
</tr>
<tr>
<td><code>&lt;dlm&gt;         </code></td>
<td><code>::= <strong>CR</strong> | <strong>&quot;;&quot;</strong> | <strong>&quot;,&quot;</strong></code></td>
</tr>
</td>
</tr>
</table>
<p><h2>SISAM Response Syntax </h2>
</p>
<table>
<tr>
<td width="80"><code>&lt;response&gt;</code></td>
<td width="326"><code>::= &lt;tag&gt;&lt;id&gt;[<strong>&quot;-&quot;</strong>&lt;message&gt;][<strong>&quot;:&quot;</strong>&lt;data&gt;] </code></td>
</tr>
<tr>
<td><code>&lt;tag&gt;</code></td>
<td><code>::= <strong>Y</strong> | <strong>Q</strong> | <strong>N</strong></code> </td>
</tr>
<tr>
<td><code>&lt;id&gt;</code></td>
<td><code>::= <strong>0..F</strong> | <strong>00..FF</strong></code> </td>
</tr>
<tr>
<td><code>&lt;message&gt;</code></td>
<td>Human readbale message</td>
</tr>
<tr>
<td><code>&lt;data&gt;</code></td>
<td>Extra message data </td>
</tr>
<tr>
<td colspan="2">Message tags </td>
</tr>
<tr>
<td>
<div align="center"><strong><code>Y</code></strong></div>
</td>
<td>Information or confirmation message</td>
</tr>
<tr>
<td>
<div align="center"><strong><code>Q</code></strong></div>
</td>
<td>Warning message</td>
</tr>
<tr>
<td>
<div align="center"><code><strong>N</strong></code><strong></strong></div>
</td>
<td>Error message </td>
</tr>
<tr>
<td colspan="2">Sample message tags with IDs </td>
</tr>
<tr>
<td>
<div align="center"><strong><code>Y2</code></strong></div>
</td>
<td>List of supported capabilities </td>
</tr>
<tr>
<td>
<div align="center"><strong><code>Y4</code></strong></div>
</td>
<td>COM port mode for data transfer</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://hutorny.in.ua/projects/pic/sisam/sisam-command-language/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SISAM Hardware</title>
		<link>http://hutorny.in.ua/projects/pic/sisam/sisam-hardware</link>
		<comments>http://hutorny.in.ua/projects/pic/sisam/sisam-hardware#comments</comments>
		<pubDate>Fri, 07 Jul 2006 23:08:35 +0000</pubDate>
		<dc:creator>Eugene</dc:creator>
				<category><![CDATA[SISAM]]></category>

		<guid isPermaLink="false">http://hutorny.in.ua/projects/pic/sisam/sisam-hardware</guid>
		<description><![CDATA[SISAM Hardware schematic is given on Figure  1.
Besides the MCU PIC16F690 it includes a 20 MHz crystal and a RS232  matching circuit.

  
Figure 1. SISAM Hardware Schematic
Channel 0 input is wired to RB5 and RC5, channel  1 &#8211; to RB4.
Actuator outputs are connected to RC0-RC4 (wirings are not drawn on this [...]]]></description>
			<content:encoded><![CDATA[<p>SISAM Hardware schematic is given on Figure  1.<br />
Besides the MCU PIC16F690 it includes a 20 MHz crystal and a RS232  matching circuit.</p>
<p><span id="more-17"></span></p>
<p><a href="http://hutorny.in.ua/wp-content/uploads/2006/07/SISAMv1.0(690).png" target="_blank" rel="thumbnail"><img id="image19" width="297" height="153" border="0" alt="Figure 1. SISAM Hardware Schematic" src="http://hutorny.in.ua/wp-content/uploads/2006/07/SISAMv1.0(690)tn.png" /> </a> <br />
Figure 1. SISAM Hardware Schematic</p>
<p>Channel 0 input is wired to RB5 and RC5, channel  1 &ndash; to RB4.<br />
Actuator outputs are connected to RC0-RC4 (wirings are not drawn on this schema).<br />
Wire RB6-RB7 delivers clock from EUSART to SSP.</p>
<h2>RS232 matching circuit</h2>
<p>It is implemented on discrete elements and does not require -12V supply.<br />
Inputs (RTS/DTR/RX) are implemented with current limiting resistors 100K. This design makes SPACE equal to logical &quot;1&quot;  and MARK &ndash; to logical &quot;0&quot;.<br />
Outputs (TX/CTS) are implemented with discrete inverters built on PNP transistors V1, V2 and current limiting resistors. With this design SPACE is set by driving output  pin to &quot;0&quot; and MARK &ndash; to &quot;1&quot;. Output level inversion is performed in the firmware.<br />
-12 V is derived from RTS or DTR line via V3,  V4. This design requires at least one of these pins to be in MARK state. </p>
<h2>Firmware</h2>
<p><a id=p22 href="http://hutorny.in.ua/wp-content/uploads/2006/07/SISAMv1.0.zip">SISAM v1.0 Firmware</a> is available for download</p>
<h2>Board</h2>
<p>I have used <a href="http://ww1.microchip.com/downloads/en/DeviceDoc/Low%20Pin%20Count%20User%20Guide%2051556a.pdf">Microchip Low Pin Count Demo Board</a> (LPCDB) that comes with PICkit 2.0.<br />
The only modification required to the original LPCDB wiring &#8211; R7 has to be physically disconnected.<br />
Because pins used for in-circuit programming are wired via 100K resistors, this design is safe to use with in-circuit programming. There is no need to disconnect the programmer to test the device.</p>
<h2>Note on cabling.</h2>
<p>Basically, inverters V1 and V2 are loaded with whatever cable you use to connect this device to your PC. This cable has some capacitance and this capacitance limits the communication speed. To work properly on high speed (460K and above) cable capacitance  must not exceed 30 p. This may not be achievable with a regular RS232 cable 1.5  m long. Thus, keep the cable as short as possible or use a different design for  RS232 matching circuit. </p>
<p>Please find test results on various RS232 Level Converters in this <a href="http://hutorny.in.ua/projects/tested-high-speed-rs232-level-converter">post</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hutorny.in.ua/projects/pic/sisam/sisam-hardware/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
