<?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; Research</title>
	<atom:link href="http://hutorny.in.ua/category/research/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>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>Theoretical aspects of dimming an incandescent lamp</title>
		<link>http://hutorny.in.ua/research/theoretical-aspects-of-dimming-an-incandescent-lamp</link>
		<comments>http://hutorny.in.ua/research/theoretical-aspects-of-dimming-an-incandescent-lamp#comments</comments>
		<pubDate>Thu, 23 Jul 2009 12:49:26 +0000</pubDate>
		<dc:creator>Eugene</dc:creator>
				<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://hutorny.in.ua/research/theoretical-aspects-of-dimming-an-incandescent-lamp</guid>
		<description><![CDATA[Abstract A dimmer is an electronic device that controls alternate voltage applied to a lamp through delivering a selected portion of the mains sinusoid. Engineer, designing a dimmer needs to estimate how big this portion should be to get a desired luminance level. This article uses a model of incandescent lamp, tungsten resistivity, and human [...]]]></description>
			<content:encoded><![CDATA[<h1 class="Heading1">Abstract</h1>
<p>A dimmer is an electronic device that controls alternate voltage applied to a lamp through delivering a selected portion of the mains sinusoid. Engineer, designing a dimmer needs to estimate how big this portion should be to get a desired luminance level. This article uses a model of incandescent lamp, tungsten resistivity, and human eye spectral efficiency to derive dependency of produced luminous flux over the voltage, gives a simple analytical function that describes this dependency with good accuracy (&plusmn;2% comparing to the model).</p>
<p><span id="more-105"></span></p>
<p align="right"><small><a href="http://hutorny.in.ua/ta/Theoretical-aspects-of-dimming-an-incandescent-lamp.pdf">Download PDF version of this article</a></small></p>
<h1 class="Heading1">Structured Abstract</h1>
<table border=1 cellspacing=0 cellpadding=0 style='border-collapse:collapse;border:solid windowtext 1.0pt'>
<tr>
<td width=235 valign=top style='width:176.4pt;border:solid windowtext 1.0pt; border-top:solid windowtext 1.0pt;padding:0cm 2pt 0cm 2pt'>
<p>Purpose</p>
</td>
<td width=482 valign=top style='width:361.35pt;border-top:solid windowtext 1.0pt;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2pt 0cm 2pt'>
<p>To discover a dependency of luminous flux produced by an incandescent lamp on the applied voltage</p>
</td>
</tr>
<tr>
<td width=235 valign=top style='width:176.4pt;border:solid windowtext 1.0pt; border-top:none;padding:0cm 2pt 0cm 2pt'>
<p>Methodology/Approach</p>
</td>
<td width=482 valign=top style='width:361.35pt;border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2pt 0cm 2pt'>
<p>Numerical analysis on a theoretical model of an incandescent lamp</p>
</td>
</tr>
<tr>
<td width=235 valign=top style='width:176.4pt;border:solid windowtext 1.0pt; border-top:none;padding:0cm 2pt 0cm 2pt'>
<p>Findings</p>
</td>
<td width=482 valign=top style='width:361.35pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:0cm 2pt 0cm 2pt'>
<p>Analytical function for approximate estimating of luminous flux for the applied voltage with &plusmn;2% accuracy</p>
</td>
</tr>
<tr>
<td width=235 valign=top style='width:176.4pt;border:solid windowtext 1.0pt; border-top:none;padding:0cm 2pt 0cm 2pt'>
<p>Research limitations/implications</p>
</td>
<td width=482 valign=top style='width:361.35pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:0cm 2pt 0cm 2pt'>
<p>Model does not encounter thermal conduction and convection in the lamp.</p>
</td>
</tr>
<tr>
<td width=235 valign=top style='width:176.4pt;border:solid windowtext 1.0pt; border-top:none;padding:0cm 2pt 0cm 2pt'>
<p>Practical implications (if applicable)</p>
</td>
<td width=482 valign=top style='width:361.35pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:0cm 2pt 0cm 2pt'>
<p>Provided function has some degree of dependency on the lamp&#8217;s design (namely, nominal filament temperature)</p>
</td>
</tr>
</table>
<p></p>
<h1 class="Heading1">Definitions</h1>
<p>Process of controlling some output value (such as voltage <i><code>U</code></i> or luminous flux <i><code>L</code></i>) we will denote as a control function <img src="/ta/image001.gif" width=104 height=20 align="absmiddle"/>, defined on the control parameter&nbsp;<img src="/ta/image002.gif" width=76 height=20 align="absmiddle"/>:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img src="/ta/image003.gif"/>&nbsp;</td>
<td width="10%" align="right"><span class=FormulaNum style='font-size:12.0pt'>(1)</span></td>
</tr>
</table>
<p>Each of <img src="/ta/image004.gif" width=29 height=20 align="absmiddle"/>&nbsp;monotonously increase on the defined range. Control functions defined on a different (other than <img src="/ta/image005.gif" width=13 height=16 align="absmiddle"/>) argument we will denote in this article as <img src="/ta/image006.gif" width=28 height=23 align="absmiddle"/>.</p>
<p>Commonly used are linear (<img src="/ta/image007.gif" width=141 height=21 align="absmiddle"/>) and logarithmic (<img src="/ta/image008.gif" width=157 height=21 align="absmiddle"/>) control functions. To implement a desired control function <img src="/ta/image009.gif" width=39 height=23 align="absmiddle"/>, we needs to know what is <img src="/ta/image010.gif" width=45 height=24 align="absmiddle"/>&nbsp;dependency.&nbsp;<br />
The following chapters give an attempt to derive <img src="/ta/image011.gif" width=44 height=24 align="absmiddle"/>&nbsp;using a model suggested in (Agraval 1996).</p>
<p></p>
<h1 class="Heading1">Incandescent Lamp Model</h1>
<p>An incandescent lamp is characterized with few nominal values: <span class=Formula>P<sub>N</sub></span> &#8211; power consumption, <span class=Formula>U<sub>N</sub></span> &#8211; nominal voltage, <span class=Formula>L<sub>N</sub></span> &#8211; nominal luminous flux, produced by the lamp at nominal voltage. The flux is produced by filament, incandesced to nominal working temperature <span class=Formula>T<sub>N</sub></span>.<br />
When lower voltage <span class=Formula>U&lt;U<sub>N</sub></span> is applied, operating temperature <span class=Formula>T</span> of filament is lower <span class=Formula>T<sub>N</sub></span> and therefore it produces less luminosity <span class=Formula>L</span>.</p>
<h2 class="Heading2">Filament Resistance</h2>
<p>Power, consumed by a lamp, is expressed with Ohm low: </p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img width=168 height=48 src="/ta/image012.gif"/>&nbsp;</td>
<td width="10%" align="right"><a name=e2><span class=FormulaNum style='font-size:12.0pt'>(2)</span></a></td>
</tr>
</table>
<p>where <img src="/ta/image013.gif" width=131 height=24 align="absmiddle"/>&nbsp;defines dependency of filament resistance over the temperature relatively to its nominal resistance <span class=Formula>R<sub>N</sub></span>, which can be evaluated via <span class=Formula>P<sub>N</sub></span> and <span class=Formula>U<sub>N</sub></span>:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img width=64 height=48 src="/ta/image014.gif"/>&nbsp;</td>
<td width="10%" align="right"><span class=FormulaNum style='font-size:12.0pt'>(3)</span></td>
</tr>
</table>
<p>Dependency <img src="/ta/image015.gif" width=31 height=20 align="absmiddle"/>&nbsp;for tungsten is not linear in the working range of temperatures (1000-2500K). For this model we will use polynomial approximation of tungsten resistance <i><span style='font-size:12.0pt;font-family:"Times New Roman"'>&#961;</span></i>, [<a href="#ref_Harang_2003"><span style='color:windowtext; text-decoration:none'>Harang 2003</span></a>]:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=161 height=27 src="/ta/image016.gif"/>&nbsp;</td>
<td width="10%" align="right"><span class=FormulaNum style='font-size:12.0pt'>(4)</span></td>
</tr>
</table>
<p class=FormulaP><img src="/ta/image015.gif" width=31 height=20 border=0 align="absmiddle"/>&nbsp;can be expressed via <img src="/ta/image017.gif" width=32 height=20 border=0 align="absmiddle"/>&nbsp;as the following:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=92 height=45 src="/ta/image018.gif"/>&nbsp;</td>
<td width="10%" align="right"><span class=FormulaNum style='font-size:12.0pt'>(5)</span></td>
</tr>
</table>
<h2 class="Heading2">Filament Temperature</h2>
<p>During operation, filament radiates electromagnetic energy and dissipates heat via conduction and convection. To estimate radiation, filament is modeled [<a href="#ref_Agraval_1996"><span style='color:windowtext;text-decoration:none'>Agraval 1996</span></a>] as a simple non-ideal blackbody that obeys Plank&#8217;s radiation law:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=261 height=57 src="/ta/image019.gif"/>&nbsp;</td>
<td width="10%" align="right"><span class=FormulaNum style='font-size:12.0pt'>(6)</span></td>
</tr>
</table>
<p>where <img src="/ta/image020.gif" width=72 height=20 border=0 align="absmiddle"/>&nbsp;is power radiated between wavelength&nbsp;<img src="/ta/image021.gif" width=15 height=19 border=0 align="absmiddle"/>&nbsp;and&nbsp;<img src="/ta/image022.gif" width=48 height=19 border=0 align="absmiddle"/>, <img src="/ta/image023.gif" width=49 height=21 border=0 align="absmiddle"/>&nbsp;- tungsten emittance, and <span class=Formula>A</span> is filament area. The total power emitted over all wavelengths is:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=116 height=24 src="/ta/image024.gif"/>&nbsp;</td>
<td width="10%" align="right"><span class=FormulaNum style='font-size:12.0pt'>(7)</span></td>
</tr>
</table>
<p>where <b><i><code>&#963;</code></i></b> is the Stefan-Boltzman constant and <img src="/ta/image025.gif" width=29 height=20 border=0 align="absmiddle"/>&nbsp;is average emittance over all wavelengths, which is approximated as a second order polynomial (Harang 2003):</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=160 height=25 src="/ta/image026.gif"/>&nbsp;</td>
<td width="10%" align="right"><a name=e8><span class=FormulaNum style='font-size:12.0pt'>(8)</span></a></td>
</tr>
</table>
<p>In a steady-state operation, power applied to the lamp is in balance with power radiated and dissipated to outside ambient. Dissipation has two constituents &#8211; conduction and convection. Agraval in [<a href="#ref_Agraval_1996"><span style='color:windowtext;text-decoration: none'>Agraval 1996</span></a>] has suggested a reasonable way of accounting dissipation as a factor of input power:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=95 height=21 src="/ta/image027.gif"/>&nbsp;</td>
<td width="10%" align="right"><span class=FormulaNum style='font-size:12.0pt'>(9)</span></td>
</tr>
</table>
<p>Solving&nbsp;<span class=FormulaRef>(8)&nbsp;</span>for <span class=Formula>P</span>:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=105 height=44 src="/ta/image028.gif"/>&nbsp;</td>
<td width="10%" align="right"><a name=e10><span class=FormulaNum style='font-size:12.0pt'>(10)</span></a></td>
</tr>
</table>
<p>Substituting left side of <span class=FormulaRef></span><span class=FormulaNum style='font-size:12.0pt'>(10)</span>&nbsp;with right side of <span class=FormulaRef></span><span class=FormulaNum style='font-size:12.0pt'>(2)</span>:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=321 height=48 src="/ta/image029.gif"/>&nbsp;</td>
<td width="10%" align="right"><a name=e11><span class=FormulaNum style='font-size:12.0pt'>(11)</span></a></td>
</tr>
</table>
<p>Using <span class=FormulaNum style='font-size:12.0pt'>(11)</span>, we may derive <img src="/ta/image030.gif" width=39 height=25 border=0 align="absmiddle"/>:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=192 height=55 src="/ta/image031.gif"/>&nbsp;</td>
<td width="10%" align="right"><span class=FormulaNum style='font-size:12.0pt'>(12)</span></td>
</tr>
</table>
<p class=MsoNormal style='page-break-after:avoid'>Figure 1 illustrates dependency <img src="/ta/image032.gif" width=39 height=25 border=0 align="absmiddle"/></p>
<p class=MsoNormal align=center style='margin-top:12.0pt;text-align:center; page-break-after:avoid'><img border=0 width=366 height=336 src="/ta/image033.gif"/></p>
<p class=MsoCaption align=center style='text-align:center'><a name="_Ref164682915">Figure 1</a>. Dependency of <span class=Formula></span><span style='font-weight:normal;font-style:normal'>T</span> on fraction of applied voltage <span class=Formula></span><span style='font-weight:normal;font-style:normal'>&#958;<sub>U</sub></span> for different <span class=Formula></span><span style='font-weight:normal;font-style:normal'>T<sub>N</sub></span></p>
<h2 class="Heading2">Luminance</h2>
<p class=MsoNormal style='margin-top:12.0pt'>Not all power radiated by filament has its effect on luminous flux. Some of the energy is absorbed by bulb glass and dissipated as heat. Although, this absorption depends on <span class=Formula>&#955;</span>, we will simplify this absorption to a constant factor <span style='font-family:"Times New Roman"'>&#951;&lt;1</span>.</p>
<p>Major part of the emitted energy is not visible to human eye. This is described as spectral efficiency function <span class=Formula>S(&#955;)</span>, approximated as the following [<a href="#ref_Agraval_1996"><span style='color:windowtext;text-decoration:none'>Agraval 1996</span></a>]:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=172 height=27 src="/ta/image034.gif"/>&nbsp;</td>
<td width="10%" align="right"><span class=FormulaNum style='font-size:12.0pt'>(13)</span></td>
</tr>
</table>
<p class=MsoNormal style='margin-top:12.0pt;page-break-after:avoid'>Thus, total luminous flux produced by a lamp can be defined as:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=444 height=60 src="/ta/image035.gif"/>&nbsp;</td>
<td width="10%" align="right"><span class=FormulaNum style='font-size:12.0pt'>(14)</span></td>
</tr>
</table>
<p>where</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=161 height=60 src="/ta/image036.gif"/>&nbsp;</td>
<td width="10%" align="right"><span class=FormulaNum style='font-size:12.0pt'>(15)</span></td>
</tr>
</table>
<p>Thereby, control function <img src="/ta/image037.gif" width=19 height=23 border=0 align="absmiddle"/>&nbsp;can be expressed as a function of <span class=Formula>T</span>:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=149 height=45 src="/ta/image038.gif"/>&nbsp;</td>
<td width="10%" align="right"><a name=e15><span class=FormulaNum style='font-size:12.0pt'>(16)</span></a></td>
</tr>
</table>
<p>For working range of temperatures and visible area, emissivity <span class=Formula>&#1108;(&#955;,T)</span> can be approximated as the following [<a href="#ref_Larrabee_1957"><span style='color:windowtext;text-decoration:none'>Larrabee&nbsp;1957</span></a>]:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=445 height=66 src="/ta/image039.gif"/>&nbsp;</td>
<td width="10%" align="right"><a name=e16><span class=FormulaNum style='font-size:12.0pt'>(17)</span></a></td>
</tr>
</table>
<p class=MsoNormal style='page-break-after:avoid'>where <span class=Formula>T</span> is in &deg;K and <span class=Formula>&#955;</span> in nm. Substituting <span class=FormulaRef>(17)</span> in <span class=FormulaRef>(16)</span> and integrating numerically <span class=FormulaRef>(16)</span> we get dependency, shown on Figure 2:</p>
<p class=MsoNormal align=center style='margin-top:12.0pt;text-align:center;page-break-after:avoid'><img border=0 width=366 height=336 src="/ta/image040.gif"/></p>
<p class=MsoCaption align=center style='text-align:center'><a name="_Ref164327531">Figure 2</a>. Dependency <span class=Formula></span><span style='font-weight:normal;font-style:normal'>&#958;<sub>L</sub></span><span class=Formula></span><span style='font-weight:normal'>(</span><span class=Formula></span><span style='font-weight:normal;font-style:normal'>T</span><span class=Formula></span><span style='font-weight:normal'>)</span> for different <span class=Formula></span><span style='font-weight:normal'>T<sub>N</sub></span></p>
<p></p>
<h1 class="Heading1">Solving Luminance vs. Voltage</h1>
<p class=MsoNormal style='page-break-after:avoid'>Using <span class=Formula>T</span> as a parametric variable, we may numerically compute <span class=FormulaRef>(11)</span>, <span class=FormulaRef>(15)</span> and graphically solve dependency <span class=Formula>&#958;<sub>L</sub>(&#958;<sub>U</sub>)</span>, as shown on Figure 3:</p>
<p class=MsoNormal align=center style='margin-top:12.0pt;text-align:center; page-break-after:avoid'><img border=0 width=366 height=335 src="/ta/image041.gif"/></p>
<p class=MsoCaption align=center style='text-align:center'><a name="_Ref164328881">Figure </a>3. Dependency <span class=Formula></span><span style='font-weight:normal;font-style:normal'>&#958;<sub>L</sub></span><span class=Formula></span><span style='font-weight:normal'>(</span><span class=Formula></span><span style='font-weight:normal;font-style:normal'>&#958;<sub>U</sub></span><span class=Formula></span><span style='font-weight:normal'>) </span>for different <span class=Formula></span><span style='font-weight:normal;font-style:normal'>T<sub>N</sub></span></p>
<p>As Figure 3 indicates, <span class=Formula></span><span style='font-style:normal'>&#958;<sub>L</sub></span>(<span class=Formula></span><span style='font-style:normal'>&#958;<sub>U</sub></span>) is affected by a design factor &#8211; nominal temperature <span class=Formula>T<sub>N</sub></span>.</p>
<p></p>
<h1 class="Heading1">Approximation</h1>
<p class=MsoCaption align=center style='text-align:center;page-break-after: avoid'><img border=0 width=366 height=345 src="/ta/image042.gif"/></p>
<p class=MsoCaption align=center style='text-align:center'><a name="_Ref164331865">Figure </a>4. Dependency <span class=Formula></span><span style='font-weight:normal'>&#958;<sub>L</sub>(&#958;<sub>U</sub><sup>3</sup>)</span></p>
<p>As it appears (see Figure 4), dependency <span class=Formula>&#958;<sub>L</sub></span>(<span class=Formula>&#958;<sub>U</sub></span><span class=Formula><sup>3</sup>) </span>looks quite linear for <span class=Formula>&#958;<sub>U</sub></span><span class=Formula><sup>3</sup>&gt;0.2</span> and has some higher-order dependency for <span class=Formula>&#958;<sub>U</sub></span><span class=Formula><sup>3</sup>&lt;0.2</span>. Therefore we will try approximating <span class=Formula>&#958;<sub>L</sub></span>(<span class=Formula>&#958;<sub>U</sub></span>) as two polynoms:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=160 height=51 src="/ta/image043.gif"/>&nbsp;</td>
<td width="10%" align="right"><span class=FormulaNum style='font-size:12.0pt'>(18)</span></td>
</tr>
</table>
<p>Value <span class=Formula></span><span style='font-style:normal'>&#958;<sub>L</sub></span>at <code>x=1</code> is equal to <code>1</code> by nature of <span class=Formula></span><span style='font-style:normal'>&#958;</span>, therefore <code>c</code>&nbsp;can be expressed via <code>k</code>:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=205 height=25 src="/ta/image044.gif"/>&nbsp;</td>
<td width="10%" align="right"><span class=FormulaNum style='font-size:12.0pt'>(19)</span></td>
</tr>
</table>
<p>To solve <code>a</code> and <code>x</code><sub>0</sub>&nbsp;we will require continuality of <img src="/ta/image045.gif" width=17 height=23 border=0 align="absmiddle"/>&nbsp;and its derived function <img src="/ta/image046.gif" width=17 height=23 border=0 align="absmiddle"/>, this gives us two equations with three unknowns:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=115 height=53 src="/ta/image047.gif"/>&nbsp;</td>
<td width="10%" align="right"><a name=e19><span class=FormulaNum style='font-size:12.0pt'>(20)</span></a></td>
</tr>
</table>
<p class=MsoNormal style='margin-top:12.0pt;page-break-after:avoid'>Solving <span class=FormulaRef>(20)</span> for <code>a</code>&nbsp;and <code>x</code><sub>0</sub> we get them expressed via <code>k</code>:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=123 height=99 src="/ta/image048.gif"/>&nbsp;</td>
<td width="10%" align="right"><span class=FormulaNum style='font-size:12.0pt'>(21)</span></td>
</tr>
</table>
<p>Thereby, <sub><img src="/ta/image045.gif" width=17 height=23 border=0 align="absmiddle"/></sub>&nbsp;depends on a single constant <span class=Formula>k</span>, which is then wiggled around to find a value giving lowest RMS deviation <img src="/ta/image049.gif" width=99 height=25 border=0 align="absmiddle"/>. Table 1 lists selected values for few most common nominal temperatures <span class=Formula>T<sub>N</sub></span>, Figure 5 illustrates this dependency, and Figure 6 shows modeled curves and values, approximated with <span class=FormulaRef>(20)</span>.</p>
<p class=MsoCaption align=center style='text-align:center;page-break-after: avoid'><a name="_Ref164336487">Table 1</a>. <span class=Formula>k</span> values for some <span class=Formula></span><span style='font-weight:normal'>T<sub>N</sub></span></p>
<div align=center>
<table border=1 cellspacing=0 cellpadding=0 style='border-collapse:collapse;border:none;padding:1pt 1.5pt 1pt 1.5pt'>
<tr style='height:4.0pt'>
<td width=50 valign=top style='width:37.5pt;border:solid windowtext 1.0pt; padding:1pt 1.5pt 1pt 1.5pt;height:4.0pt'>
<p class=MsoNormal align=center style='text-align:center;text-autospace:none'><span style='font-family:"Courier New";color:black'>T<sub>N</sub></span></p>
</td>
<td width=60 valign=top style='width:45.0pt;border:solid windowtext 1.0pt; border-left:none;padding:1pt 1.5pt 1pt 1.5pt;height:4.0pt'>
<p class=MsoNormal align=center style='text-align:center;text-autospace:none'><span style='font-family:"Courier New";color:black'>k</span></p>
</td>
</tr>
<tr style='height:4.0pt'>
<td width=50 valign=top style='width:37.5pt;border:solid windowtext 1.0pt; border-top:none;padding:1pt 1.5pt 1pt 1.5pt;height:4.0pt'>
<p class=MsoNormal align=right style='text-align:right;text-autospace:none'><span style='color:black'>2800</span></p>
</td>
<td width=60 valign=top style='width:45.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:1pt 1.5pt 1pt 1.5pt;height:4.0pt'>
<p class=MsoNormal align=right style='text-align:right;text-autospace:none'><span style='color:black'>1.067</span></p>
</td>
</tr>
<tr style='height:3.6pt'>
<td width=50 valign=top style='width:37.5pt;border:solid windowtext 1.0pt; border-top:none;padding:1pt 1.5pt 1pt 1.5pt;height:3.6pt'>
<p class=MsoNormal align=right style='text-align:right;text-autospace:none'><span style='color:black'>2900</span></p>
</td>
<td width=60 valign=top style='width:45.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:1pt 1.5pt 1pt 1.5pt;height:3.6pt'>
<p class=MsoNormal align=right style='text-align:right;text-autospace:none'><span style='color:black'>1.054</span></p>
</td>
</tr>
<tr style='height:3.4pt'>
<td width=50 valign=top style='width:37.5pt;border:solid windowtext 1.0pt; border-top:none;padding:1pt 1.5pt 1pt 1.5pt;height:3.4pt'>
<p class=MsoNormal align=right style='text-align:right;text-autospace:none'><span style='color:black'>3000</span></p>
</td>
<td width=60 valign=top style='width:45.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:1pt 1.5pt 1pt 1.5pt;height:3.4pt'>
<p class=MsoNormal align=right style='text-align:right;text-autospace:none'><span style='color:black'>1.043</span></p>
</td>
</tr>
<tr style='height:3.4pt'>
<td width=50 valign=top style='width:37.5pt;border:solid windowtext 1.0pt; border-top:none;padding:1pt 1.5pt 1pt 1.5pt;height:3.4pt'>
<p class=MsoNormal align=right style='text-align:right;text-autospace:none'><span style='color:black'>3100</span></p>
</td>
<td width=60 valign=top style='width:45.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:1pt 1.5pt 1pt 1.5pt;height:3.4pt'>
<p class=MsoNormal align=right style='text-align:right;text-autospace:none'><span style='color:black'>1.034</span></p>
</td>
</tr>
</table>
</div>
<p class=MsoNormal align=center style='text-align:center;page-break-after:avoid'><img border=0 width=233 height=218 src="/ta/image050.gif"/></p>
<p class=MsoCaption align=center style='text-align:center'><a name="_Ref236117574">Figure 5</a>. <span style='font-family: "Courier New";font-weight:normal'>k</span> variations over <span class=Formula></span><span style='font-weight:normal'>T<sub>N</sub></span></p>
<p class=MsoNormal align=center style='text-align:center;page-break-after:avoid'><img border=0 width=366 height=304 src="/ta/image051.gif"/></p>
<p class=MsoCaption align=center style='text-align:center'><a name="_Ref164337059">Figure 6</a>. Modeled curves and approximated values (marks)</p>
<p>Since designer of a dimmer may not exactly know nominal temperature of the dimmed lamp, <code>k</code>can be selected for an average nominal temperature. Suggested value <code>k=1.05</code> gives &plusmn;2% error (against the model) for <span class=Formula>T<sub>N</sub></span> in range 2800-3100 &deg;K. For this <code>k</code>, equation <span class=FormulaRef>(20)</span> becomes practically concrete:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=257 height=51 src="/ta/image052.gif"/>&nbsp;</td>
<td width="10%" align="right"><a name=e21><span class=FormulaNum style='font-size:12.0pt'>(22)</span></a></td>
</tr>
</table>
<p></p>
<h1 class="Heading1">Sine Wave Dimmer</h1>
<p>A sine wave dimmer implemented with pulse-width modulation controls applied voltage with a cycle duty, which we will denote as control function <span class=Formula></span><span style='font-style:normal'>&#958;<sub>t</sub></span>. Modulation frequency is usually chosen much higher than mains frequency. Therefore, RMS of output voltage is proportional to cycle duty, and control function <span class=Formula></span><span style='font-style:normal'>&#958;<sub>U</sub></span> as simple as:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=123 height=23 src="/ta/image053.gif"/>&nbsp;</td>
<td width="10%" align="right"><a name=e22><span class=FormulaNum style='font-size:12.0pt'>(23)</span></a></td>
</tr>
</table>
<p class=MsoNormal style='margin-top:12.0pt'>To make <span class=Formula></span><span style='font-style:normal'>&#958;<sub>L</sub>(p)</span>, linear on parameter <span class=Formula></span><span style='font-style:normal'>p</span>, function <span class=Formula></span><span style='font-style:normal'>&#958;<sub>t</sub>(p)</span><span class=Formula></span><span style='font-family:"Trebuchet MS"'> should be defined as the following:</span></p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=501 height=44 src="/ta/image054.gif"/>&nbsp;</td>
<td width="10%" align="right"><a name="e23_1"><span class=FormulaNum style='font-size:12.0pt'>(24)</span></a></td>
</tr>
</table>
<p>Applying <span class=FormulaNum style='font-size:12.0pt'>(24)</span> to equation <span class=FormulaNum style='font-size:12.0pt'>(22)</span> we get </p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=259 height=53 src="/ta/image055.gif"/>&nbsp;</td>
<td width="10%" align="right"><span class=FormulaNum style='font-size:12.0pt'>(25)</span></td>
</tr>
</table>
<p></p>
<h1 class="Heading1">Phase Control Dimmer</h1>
<p>When implementing an AC dimmer based on phase control technique, one needs to tabulate cycle duty values <code>t<sub>i</sub></code> as a function of desired luminance level <code>p<sub>i</sub></code>.&nbsp;<br />
Following the same approach, we introduce control function <span class=Formula></span><span style='font-style:normal'>&#958;<sub>t</sub></span>:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=117 height=45 src="/ta/image056.gif"/>&nbsp;</td>
<td width="10%" align="right"><span class=FormulaNum style='font-size:12.0pt'>(26)</span></td>
</tr>
</table>
<p>where <i><code>t</code></i> is cycle duty (time when the switch is on) and <i><code>t<sub>M</sub></code></i> is the mains half period, and <i><code>f</code></i>&nbsp;is the mains frequency. Average power <span class=Formula><sub><img border=0 width=15 height=16 src="/ta/image057.gif"/></sub></span>&nbsp;applied to the lamp, can be evaluated as the following:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=360 height=51 src="/ta/image058.gif"/>&nbsp;</td>
<td width="10%" align="right"><a name=e23><span class=FormulaNum style='font-size:12.0pt'>(27)</span></a></td>
</tr>
</table>
<p>where <i><code>U<sub>A</sub></code></i> is voltage amplitude. Integrating <span class=FormulaRef>(27)</span> we can define <span class=Formula></span><span style='font-style:normal'>&#958;<sub>P</sub></span> as the following</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=321 height=48 src="/ta/image059.gif"/>&nbsp;</td>
<td width="10%" align="right"><a name=e24><span class=FormulaNum style='font-size:12.0pt'>(28)</span></a></td>
</tr>
</table>
<p class=MsoNormal style='margin-top:12.0pt'>Considering that <span class=Formula></span><span style='font-style:normal'><img src="/ta/image060.gif" width=48 height=25 border=0 align="absmiddle"/></span>, and substituting <span class=FormulaRef>(28)</span> to <span class=FormulaRef>(22)</span> we may estimate <img src="/ta/image061.gif" width=40 height=24 border=0 align="absmiddle"/>. </p>
<p class=MsoNormal align=center style='text-align:center;page-break-after:avoid'><img border=0 width=438 height=381 src="/ta/image062.gif"/></p>
<p class=MsoCaption align=center style='text-align:center'>Figure 7. Dimmer control functions <span class=Formula></span><span style='font-weight:normal'>&#958;<sub>L</sub></span> and <span class=Formula></span><span style='font-weight:normal'>&#958;<sub>U</sub></span></p>
<p>Applying approach used in <span class=FormulaRef>(24)</span> function <span class=Formula></span><span style='font-style:normal'>&#958;<sub>t</sub>(p)</span> is defined as following:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class=".TableHidden">
<tr>
<td width="90%" align="center"><img border=0 width=291 height=25 src="/ta/image063.gif"/>&nbsp;</td>
<td width="10%" align="right"><span class=FormulaNum style='font-size:12.0pt'>(29)</span></td>
</tr>
</table>
<p>Although, reverse function of <span class=FormulaRef>(28)</span> is not solvable analytically, it can be solved numerically.</p>
<p></p>
<h1 class="Heading1">Conclusions</h1>
<p>As a result of numerical modeling, the following approximation functions are suggested:</p>
<ul>
<li>Estimation of produced luminous flux over the voltage:</li>
</ul>
<p style='text-indent:36.0pt'><code>L = L0 * ((U/U0 &lt; 0.575) ? 1.369 * (U/U0) ^ 4 : (1.05 * (U/U0) ^ 3 - 0.05);</code></p>
<ul>
<li>Tabulation of cycle duty over the control parameter p</li>
</ul>
<p style='text-indent:36.0pt'><code>t = (p &lt; 0.1496) ? (0.925 * (p) ^ -4) : (0.984 * (p + 0.05) ^ -3);</code></p>
<p></p>
<h1 class="Heading1">References</h1>
<p class=MsoNormal align=left style='margin-left:28.0pt;text-align:left; text-indent:-28.0pt'><a name="ref_Agraval_1996"></a>Agraval D.C., Leff H.S., Monon V.J. (1996)<br />
&quot;Efficiency and efficacy of incandescent lamps&quot;<br />
<i>American Journal of Physics</i>, May 1996, Volume 64, Issue 5, pp. 649-654<br />
<a href="http://scitation.aip.org/getabs/servlet/GetabsServlet?prog=normal&amp;id=AJPIAS000064000005000649000001&amp;idtype=cvips&amp;gifs=yes">http://scitation.aip.org/getabs/servlet/GetabsServlet?prog=normal&amp;id=AJPIAS000064000005000649000001&amp;idtype=cvips&amp;gifs=yes</a></p>
<p class=MsoNormal align=left style='margin-left:28.0pt;text-align:left; text-indent:-28.0pt'><a name="ref_Harang_2003"></a>Harang O., Kosch M. J. (2003) &quot;Absolute Optical Calibration Using a Simple Tungsten<br />
Bulb&quot;<br />
<i>Sodankyl&auml; Geophysical Observatory Publications</i>, 2003, pp. 92:121-123<br />
<a href="http://spaceweb.oulu.fi/28AM/proc_papers/27_harang_et_al_calibration_with_tungsten_bulb.pdf">http://spaceweb.oulu.fi/28AM/proc_papers/27_harang_et_al_calibration_with_tungsten_bulb.pdf</a></p>
<p class=MsoNormal align=left style='margin-left:28.0pt;text-align:left; text-indent:-28.0pt'><a name="ref_Larrabee_1957"></a>Larrabee R.D. (1957) &quot;The spectral emissivity and optical properties of tungsten&quot;<br /> <br />
  Research Laboratory Of Electronics, Massachusetts Institute of Technology <br />
<a href="http://dspace.mit.edu/bitstream/1721.1/4755/1/RLE-TR-328-04734719.pdf">http://dspace.mit.edu/bitstream/1721.1/4755/1/RLE-TR-328-04734719.pdf</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hutorny.in.ua/research/theoretical-aspects-of-dimming-an-incandescent-lamp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>e# roadmap</title>
		<link>http://hutorny.in.ua/research/e-roadmap</link>
		<comments>http://hutorny.in.ua/research/e-roadmap#comments</comments>
		<pubDate>Wed, 30 Aug 2006 15:48:16 +0000</pubDate>
		<dc:creator>Eugene</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[e#]]></category>

		<guid isPermaLink="false">http://hutorny.in.ua/research/e-roadmap</guid>
		<description><![CDATA[Refine vision Establish requirements Design a device metamodel Make key design decisions on the language, define a protolanguage Exercise with metamodel and protolanguage on different platforms Refine vision, requirements, metamodel, protolanguage Design the language, write BNF Pick a BNF subset covering the protolanguage and build a protocompiler Exercise with protocompiler on different platforms with different [...]]]></description>
			<content:encoded><![CDATA[<ol start="1" type="1">
<li>Refine vision</li>
<li>Establish requirements</li>
<li>Design a device metamodel</li>
<p><span id="more-70"></span></p>
<li>Make key design decisions on the language, define a protolanguage</li>
<li>Exercise with metamodel and protolanguage on different platforms</li>
<li>Refine vision, requirements, metamodel, protolanguage</li>
<li>Design the language, write BNF</li>
<li>Pick a BNF subset covering the protolanguage and build a protocompiler</li>
<li>Exercise with protocompiler on different platforms with different applications</li>
<li>Make a hierarchical tree of few architectures and devices</li>
<li>Refine vision, requirements, metamodel, protolanguage, BNF</li>
<li>Write e# language reference</li>
<li>Develop a compiler</li>
<li>Design models for few architectures and develop units for few devices</li>
<li>Ooh!</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://hutorny.in.ua/research/e-roadmap/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Concept of a new PL for embedded applications</title>
		<link>http://hutorny.in.ua/research/new-programming-language-embedded-applications</link>
		<comments>http://hutorny.in.ua/research/new-programming-language-embedded-applications#comments</comments>
		<pubDate>Mon, 28 Aug 2006 23:39:46 +0000</pubDate>
		<dc:creator>Eugene</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[e#]]></category>

		<guid isPermaLink="false">http://hutorny.in.ua/research/new-programming-language-embedded-applications</guid>
		<description><![CDATA[Preface I would like to discuss with you my ideas on new programming language for embedded applications, denoted further as e#. I value your time and therefore in this post I am trying to be short and precise as much as possible. Table of Contents &#160; Preface 1 &#160; The core concept 2 &#160; Vision [...]]]></description>
			<content:encoded><![CDATA[<h2 class="Heading2">Preface</h2>
<p>I would like to  discuss with you my ideas on new programming language for embedded  applications, denoted further as <span class="e3">e#</span>. I  value your time and therefore in this post I am trying to be short and precise as much as possible.</p>
<p><span id="more-68"></span></p>
<h3 class="Heading3">Table of Contents</h3>
</p>
<table>
<tr>
<td width="30">&nbsp;</td>
<td>Preface</td>
<td><a href="http://hutorny.in.ua/research/new-programming-language-embedded-applications/1/">1</a></td>
</tr>
<tr>
<td width="30">&nbsp;</td>
<td>The core concept</td>
<td><a href="http://hutorny.in.ua/research/new-programming-language-embedded-applications/2/">2</a></td>
</tr>
<tr>
<td width="30">&nbsp;</td>
<td>Vision in examples</td>
<td><a href="http://hutorny.in.ua/research/new-programming-language-embedded-applications/3/">3</a></td>
</tr>
<tr>
<td width="30">&nbsp;</td>
<td>Concept of execution</td>
<td><a href="http://hutorny.in.ua/research/new-programming-language-embedded-applications/4/">4</a></td>
</tr>
</table>
<h3 class="Heading3">My goals are:</h3>
<ul>
<li>Share  ideas and get opinions from experienced people;</li>
<li>Stress  the idea with criticism;</li>
<li>Find  associates for developing the language;</li>
<li>Design  a language that would help other developers to follow OOD paradigm and give  them better ability for reusing once implemented objects.</li>
</ul>
<h3 class="Heading3">The new language should (is expected to):</h3>
<ul>
<li>bring  a disciplined approach to the &quot;programming in a small&quot; field;</li>
<li>suit  for most of MCU platforms and experimental processors;</li>
<li>provide  a good replacement for different ASM-associated languages ; </li>
<li>give  a tool for automated application testing on a simulator;</li>
<li>provide  better porting/multitargeting capabilities;</li>
<li>reduce  impact caused by moving to another hardware platform;</li>
<li>benefit  to all parties involved in developing embedded applications.</li>
</ul>
<h3 class="Heading3">Other languages considered</h3>
<p>JAL, NASM, TAL, HAL, ISDL, VHDL</p>
<h3 class="Heading3">Definitions</h3>
<p>Device language &ndash; its statements, being  translated, are actually executed by the device(s) <br />
  Tool language &ndash; its statements are  executed by a development tool on a host computer.<br />
  Builder &ndash; a development tool that controls all stages  of a build process, e.g. compilation, linking, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://hutorny.in.ua/research/new-programming-language-embedded-applications/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Why assemblers look like they look?</title>
		<link>http://hutorny.in.ua/research/why-assemblers-look-like-they-look</link>
		<comments>http://hutorny.in.ua/research/why-assemblers-look-like-they-look#comments</comments>
		<pubDate>Sat, 26 Aug 2006 05:45:56 +0000</pubDate>
		<dc:creator>Eugene</dc:creator>
				<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://hutorny.in.ua/research/why-assemblers-look-like-they-look</guid>
		<description><![CDATA[This post presents results of my research regarding to assembler history, my thoughts and speculations on assembler syntax. History Excursus The way assemblers look now is rather tradition that comes from 40-s/50-s of the last century. The earliest instruction set definition for a digital computer I have found on the network (code for A.R.C)1includes binary [...]]]></description>
			<content:encoded><![CDATA[<p>This post presents results of my research regarding to assembler history, my thoughts and speculations on assembler syntax.<br />
<span id="more-67"></span></p>
<h2>History Excursus</h2>
<p>The way assemblers look now is rather tradition that comes from 40-s/50-s of the last century. The earliest instruction set definition for a digital computer I have found on the network (<a href="http://home.comcast.net/~bob.h.mackay/Booth/Booth.html#head14">code for A.R.C</a>)<a href="#_ftn1" name="_ftnref1" title="gratitude"><sup>1</sup></a>includes binary form (<a href="http://ftp.arl.army.mil/~mike/comphist/48eniac-coding/sec5.html">example</a>) and a &#8220;human readable&#8221; semantic expressed in math symbolic extended with arrows for register injection. This kind of &#8220;human readable&#8221; semantic is still in use.</p>
<p>Coding with this kind of &#8220;language&#8221; was difficult and error prone. Although, the theory of computing languages already existed at that time, computers were not yet powerful enough to run a compiler. Thus scientists were searching for more convenient way to program a computer. As results of these researches &#8220;<a href="http://hopl.murdoch.edu.au/showlanguage2.prx?exp=137">X-1 assembly system</a>&#8221; was published in 1956 and &#8220;Symbolic Assembler&#8221; was defined in the late 1950s and published in 1962(?), EDSSAC assembly language (<a href="http://www.cs.clemson.edu/~mark/edsac.html">reference</a> and the first <a href="http://www.adit.co.uk/html/edsac_source.html">programmed game</a>).<br />
It seems, real breakthrough has happened with <a href="http://hopl.murdoch.edu.au/showlanguage2.prx?exp=100">NYAP</a> Autocode for IBM 704 developed at NY University, which, I guess, then become <a href="http://www.answers.com/topic/autocoder-1">Autocoder</a> for IBM 1401 ??“ perhaps, the first assembler in the industry.</p>
<h2>Assembler Syntax</h2>
<p>Although I have not done fundamental research on instruction sets of first computers, it seems that one approach (introduced by ?) has become dominating over the others. With this approach every instruction has an operation code at most significant bits while remaining bits are used to keep the operand(s). Thus an instruction can be logically divided onto fields: &lt;opcode&gt;[&lt;operand&gt;??¦]. This approach led to simplification of hardware design and presumably has influence on instruction set mnemonics provided with the computers. Making a language from instruction set mnemonics seems to be a very logical step ??“ the language reference was available, published and recognized by the community</p>
<p></p>
<p>Since that time the core language principles are remaining unchanged and spread over all families and generations of processors and microcontrollers. There are only few exceptions from this rule, such as ADI assembler<a href="#_ftn1" name="_ftnref1" title="gratitude"><sup>1</sup></a> which uses &#8216;=&#8217; operator for register injection or AT&#038;T syntax style with its variation for operands.</p>
<h2>To do</h2>
<p>Research on history of macro language</p>
<h2>Links on Assembler History</h2>
<p>
<div size=-1>
<a href="http://ftp.arl.army.mil/~mike/comphist/hist.html">The History of Computing at BRL</a><br />
<a href="http://ed-thelen.org/comp-hist/SODA_Bell.html">THE SODA MACHINE AND THE SODA LANGUAGE</a><br />
<a href="http://www.computersciencelab.com/ComputerHistory/HistoryPt3.htm">An Illustrated History of Computers</a><br />
<a href="http://en.wikipedia.org/wiki/Timeline_of_programming_languages">Timeline of programming languages</a><br />
<a href="http://www.robotwisdom.com/linux/languages.html">Timeline of programming languages by Jorn Barger</a><br />
<a href="http://www.uow.edu.au/~hasan/buss930/prog/prlangs1.htm">A Brief History of Computing Languages</a><br />
<a href="http://www.cs.ucf.edu/courses/cop4020/sum2006/chapter2.doc">Evolution of the Major Programming Languages</a><br />
<a href="http://en.wikipedia.org/wiki/IBM_1401">IBM 1401 From Wikipedia</a><br />
<a href="http://www.piercefuller.com/library/ibm1401.html">IBM 1401 in Computer Collection</a><br />
<a href="http://maven.smith.edu/~thiebaut/ArtOfAssembly/artofasm.html">The Art of Assembly Language Programming</a><br />
<a href="http://hopl.murdoch.edu.au/showlanguage2.prx?exp=2989">AUTOCODER &#8211; IBM generalised autocode</a><br />
<a href="http://hopl.murdoch.edu.au/showlanguage2.prx?exp=100">NYAP &#8211; NYU Compiler System</a><br />
<a href="http://hopl.murdoch.edu.au/showlanguage2.prx?exp=137">X-1 &#8211; Experimental Assembler For Univac II</a><br />
<a href="http://hopl.murdoch.edu.au/showlanguage2.prx?exp=27">FLOW-MATIC &#8211; Possibly the first English-like DP language</a><br />
<a href="http://www.bitsavers.org/pdf/univac/HopperAutoCodingPaper_1955.pdf">Automatic Coding For Digital Computer by Dr. Grace Murray Hopper</a></p>
<hr size="1" color="0"/>
<a name="_ftn1" id="_ftn1"></a><sup>1</sup>Thanks folks from Microchip forum for helping in my research on this matter (<a href="http://forum.microchip.com/tm.aspx?m=175778&#038;mpage=1&#038;key=&#175778">original thread</a>)<br />
Special thanks to <a href="http://www.geocities.com/leon_heller/">Leon Heller</a> for sharing link on <a href="http://home.comcast.net/~bob.h.mackay/Booth/Booth.htm">language for the ARC</a> and pointing to ADI assembler.
</div></p>
]]></content:encoded>
			<wfw:commentRss>http://hutorny.in.ua/research/why-assemblers-look-like-they-look/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Assembler partitioning</title>
		<link>http://hutorny.in.ua/research/assembler-partitioning</link>
		<comments>http://hutorny.in.ua/research/assembler-partitioning#comments</comments>
		<pubDate>Sat, 26 Aug 2006 05:36:06 +0000</pubDate>
		<dc:creator>Eugene</dc:creator>
				<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://hutorny.in.ua/uncategorized/assembler-partitioning</guid>
		<description><![CDATA[This post provides my look on MP ASM and an attempt to analyze and decompose it on parts. Despite this post provides &#8216;partitioning&#8217; of a MP ASM only, many similarities can be found in other assemblers. Although macro-assembler in most cases is referred as a single language, it worth to mention that it actually consists [...]]]></description>
			<content:encoded><![CDATA[<p>This post provides my look on MP ASM and an attempt to analyze and decompose it on parts. Despite this post provides &#8216;partitioning&#8217; of a MP ASM only, many similarities can be found in other assemblers.
</p>
<p><span id="more-66"></span></p>
<p>Although macro-assembler in most cases is referred as a single language, it worth to mention that it actually consists of two languages &#8211; ASM part and macro part. This is especially noticeable when switching from one family to another &#8211; macro part remains the same while ASM part is noticeably different due to difference in the instruction sets. Besides these two languages, there are also some other languages involved in process of developing an ASM application.<br />
Table 1 gives list of identified programming languages (PL), their inputs and productions:
</p>
<table width="100%" border="1" cellpadding="0" cellspacing="0" class="StdTable" style="border-collapse:collapse;border:none;">
<tr>
<th>Language</th>
<th>Operates on</th>
<th>Produces</th>
<th>Description</th>
</tr>
<tr>
<td>ASM</td>
<td>Device resources</td>
<td>Object files</td>
<td>Target device language</td>
</tr>
<tr>
<td>Macro</td>
<td>Macro variables and ASM statements</td>
<td>Expanded ASM &#8211; intermediate source</td>
<td>PL operating on ASM constructions</td>
</tr>
<tr>
<td>Preprocessor</td>
<td>Input files and source code lines</td>
<td>Preprocessed source</td>
<td>PL operating on source lines</td>
</tr>
<tr>
<td>LKR</td>
<td>Object files and sections, device definition</td>
<td>Executable file</td>
<td>PL operating on objects produced by ASM, It is also used to provide definition of device resources, so linker may properly allocate them.</td>
</tr>
<tr>
<td>MCP</td>
<td>Source files</td>
<td>Commands the compiler and linker</td>
<td>A kind of &#8220;PL&#8221; used to specify what sources/files constitute a project</td>
</tr>
<tr>
<td>DEV</td>
<td>Device definition</td>
<td>Device simulation model </td>
<td>PL for defining device architecture and resources for the simulator</td>
</tr>
<tr>
<td>SCL</td>
<td>Device and application model</td>
<td>Visual simulation or traces</td>
<td>a VHDL-like simulation language</td>
</tr>
</table>
<p>In some cases these languages provide overlapping capabilities, such as preprocessor&#8217;s <em>#define </em>vs macro&#8217;s <em>equ</em> and macro&#8217;s <em>.org</em> vs linker&#8217;s <em>section start=</em>.<br />
From this set of languages only ASM is a &#8220;real&#8221; device language, whose statements will be actually executed by the device(s). The other languages are tool languages, executed by the development tools.<br />
Also there is  a pseudo language used for expressing statement semantics (<em>A &lt;- B &#8211; A</em>). Such pseudo language is necessary, because the mnemonics themselves are not descriptive enough (not &#8220;human readable&#8221;). Having just a mnemonic it is hard to say what the action it implies and what objects it affects. Furthermore, similar mnemonics given by different vendors may imply different semantics, which make it even more complicated.</p>
]]></content:encoded>
			<wfw:commentRss>http://hutorny.in.ua/research/assembler-partitioning/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Assemblers vs HLL</title>
		<link>http://hutorny.in.ua/research/assemblers-vs-hll</link>
		<comments>http://hutorny.in.ua/research/assemblers-vs-hll#comments</comments>
		<pubDate>Fri, 18 Aug 2006 11:27:10 +0000</pubDate>
		<dc:creator>Eugene</dc:creator>
				<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://hutorny.in.ua/research/assemblers-vs-hll</guid>
		<description><![CDATA[This post expresses my thoughts on assembler vs HLL use for an embedded project. In my opinion, major disadvantage of high-level languages (HLL) is obscure code generation. Since HLL are not targeted for (not constrained with) any particular platform, code generation is left up to compiler vendor (developer). It is OK in case when hardware [...]]]></description>
			<content:encoded><![CDATA[<p>This post expresses my thoughts on assembler vs HLL use for an embedded project.</p>
<p><span id="more-65"></span></p>
<p>In my opinion, major disadvantage of high-level languages (HLL) is obscure code generation.<br />
Since HLL are not targeted for (not constrained with) any particular platform, code generation is left up to compiler vendor (developer). It is OK in case when hardware constraints on the target platform are pretty much loose and system (product) built with it does not violate the requirements. However, when tough hardware constraints come across tight system requirements, engineers need more control on the produced code. Usually such challenges are solved with assemblers, either inline or interfaced via object files. Some of HLLs (such as C) provide good facilities for interfacing with assembler code, some others not and this should be considered when choosing a language for an embedded project.<br />
Besides obscure code generation, HLL and their compilers also contribute some constraints and limitations which may narrow down the space of design decisions.</p>
<p />
<p>Major advantages of HLL are better capabilities for code structuring and inter-module interfacing, stronger syntax constraints and, generally speaking, portability. Once you l have learned C, you can use your knowledge on x86, PIC, ARM, and so on. </p>
<p>Strengths of HLL are the weaknesses of assemblers. Their poor syntax control may turn a simple typo into a hard to find problem, poor capabilities inter-module interfacing creates difficulties for developing large projects, reusing the code and creating libraries.</p>
<p>Another crucial disadvantage of assemblers ??“ instruction syntax. The way it is done now has not been changed for sixty years.  At that time there were good excuses for this kind of syntax, nowadays it looks like a religious dogma.</p>
]]></content:encoded>
			<wfw:commentRss>http://hutorny.in.ua/research/assemblers-vs-hll/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

