tag:blogger.com,1999:blog-28833316073533775102024-03-18T20:17:15.506-07:00Sistemas Operativos para Microcontroladores.Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.comBlogger25125tag:blogger.com,1999:blog-2883331607353377510.post-91016163610648993632021-11-24T00:08:00.005-08:002021-11-24T00:08:42.854-08:00LTSPICE (Mejorar la respuesta en la simulación)<p>1.- En tu simulación abre "Spice directive".</p><p>2.- Copia y pega estos comandos, claro deberás revisarlos en la help de LTspice para ajustarlos en tu simulación.</p><p>.option Method=Gear<br />.option Trtol=1000<br />.option Gmin=75E-9<br />.option Abstol=1.0E-9<br />.option Vntol=1.0u </p><p>3.- Ajusta según tu simulación Gmin, Abstol y Vntol con la siguiente idea:</p><p>.options gmin = 1e-10 => Agregue una pequeña conductancia de 1e10 (= 10GOhm) en paralelo a cada diodo de transistores y diodos.</p><p>.options abstol = 1e-10 => Incrementar la tolerancia permitida de 1e-12 a 1e-10 para los criterios de convergencia.<br />.options reltol = 0.003 => Incrementar la tolerancia permitida de 0.0001 a 0.003 para los criterios de convergencia. ¡Nunca mayor de 0,003!<br />.options cshunt = 1e-15 => Capacitancia agregada de cada nodo a tierra. Agregar un pequeño CSHUNT a cada nodo puede resolver algunos problemas de "intervalo de tiempo interno demasiado pequeño" causados por oscilaciones de alta frecuencia o ruido numérico. Predeterminado = 0. </p><p><br /></p>Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-21669618139677767922021-11-22T00:12:00.002-08:002021-11-22T00:12:30.234-08:00LTSPICE (.MEAS para el calcular eficiencia)<p>Te resumo como hacer tomas de medidas en potencia usando el simulador LTSPICE.</p><p>1.- Selecciona los componentes presionando "alt", veras aparecer un termómetro sobre el componente.</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0pYDcO_BeoDCR4bqq7hh_uSGQlBxCCh8DcgoPYcui_2fS2fHsbQyyhjYTb-j9SDWJrCPyZdP_UVxeDzB-MHkGDk6Tx2Kqv0IDq9egec08Cu58QnPeUokxGzJ9Yp4Y1nQ9umwIzKe3uKDX/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="271" data-original-width="208" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0pYDcO_BeoDCR4bqq7hh_uSGQlBxCCh8DcgoPYcui_2fS2fHsbQyyhjYTb-j9SDWJrCPyZdP_UVxeDzB-MHkGDk6Tx2Kqv0IDq9egec08Cu58QnPeUokxGzJ9Yp4Y1nQ9umwIzKe3uKDX/" width="184" /></a></div><br />2.- Copia y Pega la ecuación generada en el "plot".<p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy-EVwdZX06ZoBu9umknkbB1htZYHdAPkd-HbKwm2zyEy33lzW3p9m_MhMHvgBNkCsRx9Cii2yCnfiyt5ugQl82upg7QRx-GvwLwDiOqXM8-GB2W6qsEUDAyEJ3w8mSeRKCcVT7gssXzEc/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="385" data-original-width="565" height="218" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy-EVwdZX06ZoBu9umknkbB1htZYHdAPkd-HbKwm2zyEy33lzW3p9m_MhMHvgBNkCsRx9Cii2yCnfiyt5ugQl82upg7QRx-GvwLwDiOqXM8-GB2W6qsEUDAyEJ3w8mSeRKCcVT7gssXzEc/" width="320" /></a></div>3.- Usaremos el comando .meas es útil para medir un rango de datos de entrada en el eje x. Agreguemos las siguientes expresiones como directiva SPICE para calcular la potencia de entrada promedio (Pin), la potencia de salida promedio (Pout) y la eficiencia (Eff). Tenga en cuenta que la convención de la dirección de la corriente para la fuente de voltaje de entrada, V1, está en el dispositivo, de ahí el signo negativo en el cálculo del Pin. <p></p><p>La expresión final calcula la eficiencia utilizando la directiva "param" para mayor claridad.</p><p>.meas Voavg AVG V(N001, Out)<br />.meas Pin AVG(-V(N001)*I(V1))<br />.meas Po AVG(V(N001,Out)*I(R1))<br />.meas Pt AVG(V(Out)*Ic(Q1)+V(N003)*Ib(Q1))<br />.meas Eff PARAM 100*Po/Pin</p><p>4.- Vea el resultado el "SPICE Error Log:..."</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyEshllwnzHROh6n5fpnSjjbzOh0Pudn34ZCenixInGGWEct8lzWFXVLYort3RHSbeNdNUN1BqeqVwdrjtvqWYCnPBdvpEZBbAN57qya4WvgDSjpyv4YOHDrH0QWJ-pZazBbj_ijInjfvf/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="288" data-original-width="613" height="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyEshllwnzHROh6n5fpnSjjbzOh0Pudn34ZCenixInGGWEct8lzWFXVLYort3RHSbeNdNUN1BqeqVwdrjtvqWYCnPBdvpEZBbAN57qya4WvgDSjpyv4YOHDrH0QWJ-pZazBbj_ijInjfvf/w410-h192/image.png" width="410" /></a></div><br />El comando .step es útil para barrer una variable en un rango de valores en una sola ejecución de simulación. La variable puede ser la temperatura, un parámetro del modelo, un parámetro global o en nuestro caso una fuente independiente. Estos pasos se pueden definir como lineales, logarítmicos o como una lista de valores específicos. Lo actualizo en la próxima entrega.<p></p><p><br /></p><p><br /></p>Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-33366088158826397122019-08-23T00:58:00.003-07:002019-08-23T01:01:36.930-07:00Diseño de Circuitos de Ethernet<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves>false</w:TrackMoves>
<w:TrackFormatting/>
<w:HyphenationZone>21</w:HyphenationZone>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>ES</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
DefSemiHidden="false" DefQFormat="false" DefPriority="99"
LatentStyleCount="376">
<w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 9"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="header"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footer"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index heading"/>
<w:LsdException Locked="false" Priority="35" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of figures"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope return"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="line number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="page number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of authorities"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="macro"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="toa heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 5"/>
<w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Closing"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Signature"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="true"
UnhideWhenUsed="true" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Message Header"/>
<w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Salutation"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Date"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Block Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Hyperlink"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="FollowedHyperlink"/>
<w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Document Map"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Plain Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="E-mail Signature"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Top of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Bottom of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal (Web)"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Acronym"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Cite"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Code"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Definition"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Keyboard"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Preformatted"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Sample"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Typewriter"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Variable"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Table"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation subject"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="No List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Contemporary"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Elegant"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Professional"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Balloon Text"/>
<w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Theme"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" QFormat="true"
Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" QFormat="true"
Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" QFormat="true"
Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" QFormat="true"
Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" QFormat="true"
Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" QFormat="true"
Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" SemiHidden="true"
UnhideWhenUsed="true" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
<w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
<w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
<w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
<w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
<w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
<w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Mention"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Smart Hyperlink"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Hashtag"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Unresolved Mention"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Smart Link"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Tabla normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:8.0pt;
mso-para-margin-left:0cm;
line-height:107%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-fareast-language:EN-US;}
</style>
<![endif]-->
<br />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-family: "Times New Roman",serif; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: ES;">Este
artículo lo tomé de la siguiente ruta (https://www.acmesystems.it/pcb_ethernet) me pareció muy interesantes y muy bien resumido como preliminar para aquellos que se aventuren a diseñar placas PCBs y utilicen Ethernet. Se muestra un conjunto de reglas generales sobre cómo conectar el
periférico MAC del Roadrunner MCU a la LAN a través del cable UTP. Sugerencias
prácticas sobre el diseño de circuitos y PCB para tener una conexión Ethernet
confiable de 100 Mbps compatible con EMC.<br />
<br />
Introducción<br />
<br />
El estándar IEEE802.3 también define el protocolo (tanto de hardware como de
software) entre el MAC (Control de acceso a medios) y el medio de red. En
nuestro caso, el MAC es el periférico de hardware de Microchip SAMA5D27 MCU y
el medio es el cable UTP (cat5 y superior) para un enlace 10Base-T o
100Base-TX.<br />
<br />
Como se muestra en el diagrama, el periférico MAC permite la conexión de manera
independiente del medio. Para agregar al protocolo todos los controles
eléctricos y de comunicación necesarios para cumplir con los requisitos de
Ethernet en el medio UTP, necesitamos otro chip dedicado, el PHY. Las reglas
para diseñar la cadena de UTP a MAC se describirán de abajo hacia arriba, desde
la capa inferior hacia arriba.</span></div>
<div class="MsoNormal">
<img alt="" src="data:image/png;base64,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sQqe8KFDh9i8eTOJiYnY2toOev5fA9bW1nzwwQcKn//www+S+t+9e/dEjVSOrVu3IpPJBn1f0tLSWLJkCStWrGDFihUsXryY5OTkQcdw584dVFVVBy0cm5iYSFKtmZmZKCsr09LSIj4zNzeXOFt79+5l9OjRfP/996SlpeHt7S3mho2NDfv27aO9vR11dXVCQkL44YcfWL58ORoaGlRWVuLp6cn69esl1zJq1ChKSkqYMGECc+bMYceOHWzdupW4uDjxvZMnT/L222+zfft2tm/fzhdffMGxY8eYNGmShPxjZWUlarelpaWMHj1awtjz9PTE3NycTz/9VJwnPT2dmJgY8R7IoaKiomCULCwssLOz46uvvuKjjz5CSUlJGB4HBwfs7OzEsbds2SJ5LsHBwchkMkm60dbWVpApbGxscHZ25uLFi3zyySeMHz+e3Nxc7t27x7Bhw4iOjmbHjh1s27aN3bt3S57Tvxtkjx49QiaTkZCQgKGhITKZjLS0NCZNmsTChQt58uQJMpmMc+fOsXfvXglp4B/F2bNnCQoKIjQ0lNDQUIKDg5+bSz527Bg2Njb09vaiqamJsrIyHR0deHt7c/DgQS5cuICenh6ZmZncuXOHW7duCfaVjo4O0dHR5ObmcurUKcaOHSu8MEtLS44fP05raysqKips376dgoICoqOjUVFR4enTp+zcuZPg4GC6u7sZOXIkWlpawsPfs2ePZJyHDh3CxsaGlpYWtLS0RBriypUryGQywsLC6OrqYvz48Rw7doycnBz279/P6NGjyczMFNf38OFDLly4oFCoBWhpaWHixIkcPHiQjIwMUlNTuX37Nu3t7SxbtoylS5cC/ekffX19XnrpJZqamoiIiMDX15fc3FwSExMxNTVlzpw5APj4+BAaGkp2djapqamkpKRQVlZGXl4empqawov94osvkMlk7N69W4zn448/xsfHZ9DnFhAQwLZt28jLy0NLS0t8vmbNGmQymSRCWLRokRgP9BsadXV17ty5I55pbm4ufX19GBoaSqKhy5cvi+NraWkJpo/8PhgaGkoKtzt27MDS0pKWlhbU1dVZvXo1+fn5XLp0iTFjxpCSkkJiYiITJkyQzKns7GwJq+6fwdmzZxUcFehn9W3atEl473V1dWzatInU1FTxnfT0dKKjoyWL6C9BVVUVR48elZAj5Dh16pQk5VZTU8O3334rIUOcOXNGIVo6fvw4AQEB+Pv7s3nzZrHgnT17luzsbKB/kY+MjMTf35/IyEiKioqA/qL7QAZdb28vhw4doqSkhMOHDwvjGRkZKYmkioqKRNSyfPlyoqKiiI2N5YcffpCMLSMjQ8y51tZWDh06JNJX0J+uXb16NStWrGD58uVERkZy48YN8vLyJOeDfqdyIGMU+inhcgr0ihUrJASiixcvsmrVKnHspUuXSoxlZmYm27Ztk9zfc+fOifpXc3MzGzZswM/Pj3nz5ok0Yl1dHVu2bBHXvmzZMj7++GPJdf27QVZeXo65uTmFhYXs3bsXJycnOjs7mTt3LjExMVRVVWFubk5qaipxcXGYmpoqUPz+J5CUlCTSPtu3b2fDhg1AvzcdHx/PvXv3MDMzw87ODjs7O8zMzASdceXKlZiYmODg4ICnp6dkEVq3bp2Idm7fvo25uTmmpqaYmZmJF/vs2bN8/vnn4lhffPEFABs2bJBMFIDr16+zfv162tvbWbJkiSTqWLRokUg5BQUFYWlpib29PYGBgSJP3NnZKX6XlpZGVFSUwr3o6uoiNDQUU1NT7O3tsbW1xdzcnCdPnnDixAlJ6J6eno6zszNtbW0cO3YMIyMjHB0dsbe3Jzo6ms7OTgD27NmDoaGh8LqMjY3Zv38/DQ0NIgqDfrp0YGCgJAd84sQJSSptID7//HPOnj1LeXm5MIDQn3rw8vLi2rVr4rOYmBiJ4f7pp5+wsrLCxsYGOzs7zM3NCQ0Npauri6ioKMlL/PDhQ0JDQ2lubmbZsmWCuABQVlbG3LlzBfMM+qPpWbNm0dnZSWFhIdOnT8fc3BwbGxvxTO/fvy+ZUxYWFgQFBUlSRy/wAi/wj+NFwyZIFqQX+N+FwWoNP/f7/859By/wAv9/wgtD8wIv8AIv8AL/o3hhaF7gBf5FKCkpISMjg9u3b5ORkaEQURUXF3Pu3DkSEhIkkVdLSwuxsbEcOHDguSysn4vOzk5ycnJISEjg+vXrku78Z9lw7e3tFBYWUl9fr1CXaWtrE4zRlpYWTpw4wdGjRyUyLcXFxRLywq1bt9i/fz+XLl1SiETr6+sl19bb20tBQcHfjTqzs7PZv38/586dU6g7ZWVlsW/fPr777juh/iC/zqSkJBISEkhLS5OMpaSkhNraWnp6erh3756kPldVVSW5vsLCQg4dOsSxY8eeS2oCSExM5NChQxJadWVlpaS1o6uri7y8PPr6+igvL+fmzZskJCRw69YtkcZuamri8ePHzz3Pw4cPxf0qKChQaB0pKiqitLSUiooKkpKSSExMJDExkfj4eCorK+np6SE7O5vExEQSEhIU1FH+Gch6e3upq6uTFJI6Ojqoqamhvb2dvr4+GhsbqampoaqqSpJm6urqor6+/lfrnJbj6dOnko5YORoaGujt7aWnp4fa2lrKysooLy+nrKxMcPKbmpooKyujtLRUoTjW0tJCT08P3d3dCgyN1tZWuru76ezsHPTcjY2NChO5ra2NiooKSkpKFJop29raqKyspLy8XIxRfj/r6uooLS2ltLRUcj9bWlqoqKgQ3y8rKxNjepbW2traSm9vL11dXVRXV1NaWiqRmIH+51hdXS0ZQ1NTE729vQrpwqdPn9LZ2UlDQwOlpaVUVVVRW1tLaWkplZWVEhmW9vZ2cS3PHqe9vZ3Ozk7q6+spLS2lurpaHKempoaenh4aGhokz666upq+vj5aWlooLy+ntLSUsrIyySRvbW0V97OsrIyKigrxPLq7uweVRWpqaiIxMVH04kB/zam+vl5y/qqqqn84BfdLEBQUhEwm4/XXX+ell15CRUVFjG3v3r3853/+J6+99hoymQwzMzMh+6Spqckf/vAH/vznP/P6669z7NixXzyG+/fvM3z4cBwdHXF2dmbKlCmCleXi4iKaRAFyc3MxMTGhqKgILS0tScOsj48Py5cvp66uDnt7ewICAggJCWHy5MmiBuru7i7IDytXrkRFRYV58+Zha2uLi4uLZHGeM2cOf/zjH6mpqQH65+Pf6qOB/tqtiooKc+fOxdXVFWtra/EefvTRR0yYMIHg4GAcHR2ZMGGC6K+ys7NDVVUVV1dXTExMMDU1FeQELy8vduzYQWNjIy+//LKoDQNCrwz665QTJkxgxowZ+Pj4oKWlJSFvyLFu3TrMzc2JiIhAQ0NDULdXrVrF4sWLxfdKSkqYNGkS7e3tzJo1CxUVFby9vUWtsrKykri4OMHkfBZ5eXn85je/Ef1KJ06cQF1dXbyfZWVlTJw4kdTUVEJCQpg4cSJ2dnbY2NhgYWHBjz/+SEFBAUOHDsXR0ZFp06ZhZmaGtbW1wrrySyArLi5m6NChglIIEBERwTvvvMPOnTsFO2vYsGGMGDGCv/71r8yZM4fe3l7u3LnDu+++K+HR/xrYsmULw4cPlxTWjx8/ztChQ3ny5AlpaWmMHz8ec3NzLCwsMDQ0ZMmSJdTU1KCvr4+5uTn29vZoa2uzdu1acQwnJyeysrJITU1VkJcICAggLS2NM2fOMGLECImnFx8fz7vvvqtAGQ0NDUVHR0d0S7u5uQmPR66NZGlpibm5uaDg5ufnM2nSJOzt7bGzs0NLS0sU811cXJgyZQqWlpaYmZkJ4sWZM2cYO3as8GY6Ozvx8fGhqKiIo0ePoqKigrOzM2ZmZhgbG4vC+Oeff86ECROwtLQU92nfvn3k5eUxYsQIycKxevVqjh07xs6dOzE3N0dXV5eJEydiaWmJn5+fxKBs3ryZbdu20drayogRIyQL34YNG9i/fz9btmzBwsKCKVOmoKKigoWFBYsWLRKd6SYmJlhYWGBkZERwcDBdXV24urpiYGCAs7MzVlZW6Ovri4XGz88PNTU1LC0tMTExwcnJSXhswcHBorlUjkuXLqGmpsa0adNwdHTEzc2NxsZG8vPzUVZWxtTUFAsLC4yNjfHz8/uXFPw9PDwYO3asIH787ne/IyQkBLkMlLe3N0VFRVy+fJnf/va3fPrpp2zfvh2ZTMbjx4/p7u7Gz88PZ2fnXzyGjIwMyWJVUVHBuHHjKC0txd3dXcIufPz4Mbq6ukA/I00uI3P16lUmTpxIR0cHO3bswNvbW/xm7969LFy4EOhvMj1+/DhZWVmMGTNGsmC5u7sLunpZWRmWlpbo6upy4MABoN/QaGpqSkgeA5GamsqoUaMkclizZ89mz549QttsYBvGmjVrMDAwoKenBxsbG0EQ6unpYebMmbi5uQH9hmb79u3U1tYyduxYRo4cKSK3VatWERUVRWNjI6NHj+bKlSvi+J9//jkLFiyQjLG4uJgJEyYIJ6isrAw7Ozv6+vpYvXq1uE/Qb2iUlZVpa2tT6O2xtbXl008/5ebNmwqUazmioqIwMjISUjbQ3zMob64NDg4WDM9p06YpkJoAbt68iYGBgeQzAwMD0Qj+z0CWn58vtM7kzCJlZWVkMhlRUVE0Nzcjk8kICgri5s2brF+/XugtpaenI5PJRJf6r4XIyEheeeUVSfOYt7c3v/nNb3jw4AEXL17Ezs6O9vZ2nj59SltbG0+fPqWoqIgJEyaQk5NDU1MTubm5TJgwgW+//Rbo14y6desWCQkJClIepqamJCYm8u233yKTyST9JzNnzuTll19WeDhmZmYcOHCA5uZmKioq8PT0FC+dmZkZ3377rWSMXV1dxMfHo6enR3NzM83NzVy9epVJkyZRXFyMkZERP/74o+Q3vb297N27l9/+9reCUiyn7+bn57N582aCg4Npbm4WtEd1dXV6enpYvHgxixcvlhyvo6ODlJQU3nzzTSZNmiQMSEhICJ9++ilPnz6lvr6ezz//HCsrKxoaGmhqapJ4/PKu/MbGRl5//XXGjh0rPNHw8HA2bdpEW1sb9fX1fPTRR7i6ulJfX09LSwvJyclMmTKFlpYWybi6u7vR1NTk8uXLtLa20tTUxKJFi0T/k4GBAYcOHRK/aWlpobe3l/z8fKZMmYKysjKJiYlA/+KppKQkpIA6Ozvx9PRk+/bt5ObmoqOjI6Iy+fn/FRGNh4eHWKArKip48803CQ4OZs+ePchkMok46uPHj6mqquLIkSPIZDIcHBw4ePAgOTk5CkaxqqqKhIQEkpOTSU5OJiEh4bleaFZWFjo6Oty7d4/Hjx9z5swZVFRUqK2txcfHBz8/P06fPs2JEyfYunUr2traInXj4+PDihUrsLS0FO/8xYsX+fDDD9m0aRPXr1+XZArc3d05ffq0aLQeiK6uLnEde/fuZdmyZVy8eFH0RrW3t//NiGbt2rUEBwdLPuvr66O9vZ2wsDAJ4xH6swUqKircvXuXadOmibkB/SklZWVlnj59SmBgIDt27KC8vBxnZ2c2b96MlZUVgJCR+fbbb0UbQldXF0VFRRQVFQlxXTmam5vR09MTjavyqAkQ/U5yyCOatrY2YRTi4uJEs2tBQQFXr14dNKJ5+vQpFhYWPHr0CDMzMyG3VFZWhpaWFtu2bUNXV1c8Gw8PDyIjI/nxxx+5ePEiV65cobu7m/T0dDQ0NMjKyuLBgwfcuXMHR0fHXyWQkOXn5/PHP/4RFRUVlixZwqNHj1BTU2PkyJGsWrWK5uZmXh75TiYAACAASURBVHrpJYkchra2NpqamiQlJQnBzb+H6upqiouLKSkpEf/7vJ6ApUuXYm9vL/TJiouLcXBwwNTUlOzsbOLi4jAzMyMrK4usrCwyMjKoqamhvLwcdXV1Cf36m2++EVIzurq6pKamcuPGDQXLbWNjQ1JSEt988w0GBgZMnz6dvr4+GhoasLOzw9DQUEEgz8bGRiJVXlFRwfjx46mrq8PV1ZXo6Giys7PJzMwkJyeH7u5uEhISJIoEycnJTJo0ibKyMszNzYmJiRHXJM+Ly7XFbG1tRW+Iubm56P8Z6BlBv5Dk7du32bBhA8HBwWRnZ4tjNjc3c+PGDdzc3AgJCRG/nT17tsRzOXz4sELUJ0dkZCSrV6+moqICCwsLIiIimDFjBtBP6R6oAPz5559LGmtTU1OFpyofkzw1N3XqVEkee+3ataL5z9zcnK1bt5KTk0NGRoZYSLdt20ZUVBSbN28W9PajR48qyAt1dnZSXl5OamoqWlpaZGZmivM/efJk0Ov8tRESEsJvfvMbhgwZwmuvvcbbb79NWloa0dHRvPTSS5KFaCAOHz6MhoYGf/jDH/iP//gPVqxYIUkr3rhxAw8PD4KCgggKCsLd3f25i4M8dWZnZ4ezszOmpqZiDnt6eqKlpUV4eDizZ8/G1dUVDQ0N4ZGXl5fz17/+VaFZNykpiaCgIIyMjJg8ebJ4Tzw8PDh16hT+/v4SlYNnYW5uzkcffUR8fDzDhg2joKCAvr6+v2loli5dSmRk5KD/zdfXV7JeQX/koqurS0pKitBgk6Ourg4tLS1qamoICgoShsbMzIzu7m5sbGw4ceKEEJbdunWrmNOFhYVCtNba2lohXV9XV8eyZcuwtbVl8uTJQjZp1apVEmNYWloqmk1DQ0PR19dn0aJFeHl5iff5eYbmzJkzKCsrk5aWhqOjo+T5HDx4kFdeeUWiUODp6Ym2tjZBQUH4+Pgwc+ZMmpubuXfvHu+88w62trZ4eHigpKSEubn5r1IaEYZm3rx5uLi4sGfPHqZPn46enh7Lli2jubmZ3/72txKtIltbW8aMGSOkM36Oodm0aRNeXl74+vri4+ODr6/vcxs/58+fT1RUFL6+vpSWlrJ//34iIyPx8/MjPT2dxMREhg8fjr+/P76+vnh6enLp0iXq6+tRV1eXdODHx8cL70NPT4/U1FQSExMVDI2trS03btxg7969LFmyhMDAQDIzMzl79iwLFiwgMDBQIXKTT8CB0NXV5dGjR3h6eqKnpydyuEFBQTQ0NJCVlcWQIUOwtbXFxsaGqVOnCv00PT09zM3NCQwMxNvbW4Tin332GStXriQnJwcNDQ3KyspwcHAQhka+wMrh4OBAbGwsO3bsEHlq+X3Kzs7m9u3bODk5UVdXx+TJk8nJySEyMlJiaA4ePPjcLv2BhsbQ0JCmpia0tbVJTk4Wmk5y7NixA39/f/F3ZmYmw4YNw9vbGz8/Pzw9PUUKRVtbGx0dHZEf/uMf/yi8fHkazsfHBxcXF2JiYujp6RGRaHJyMsrKynR3d7Njxw68vLwGHXt6ejpDhw7F19dXnP95PUG/Nnx8fBg+fDjHjh3j/PnzwiGSi9XKPVHov8exsbFC5BX661QLFixQUFCvra0lPT2djIwMMjIySEtLe+42ApmZmRgaGtLY2Ch6quRwdHSUpM4KCgoUJGhcXV0lc/78+fMSQ/3111+jra0N/LdAZHR0NJ6enpJz7dixgxMnTlBWVsbIkSOFFz969GgxD7W1tSVR3kB88sknCgrG3333HV999RXr169XUA3Jzc1FRUWFhoYGHB0dJWvW7du3UVNTo7e3Fz8/P2Fo5Iv6gwcP0NfXJyQkhM8++4yzZ8+ioaEhOX5OTg6jRo0SkT3899YgcpSWljJ27Fju3r1LdHQ0c+fOlfw3NTU1+vr6CAwMlDQ27927VzgPgzV0+/r6MnXqVMLDw3FyckJVVVU4B6WlpSKDIoe7u/ugqtIpKSno6emJyKexsRFNTc1Bv/uPQpafn8/vfvc79u/fL5rl1q5di4GBgTA0L730kqRIOHr0aOzs7MS+Dz/H0FRUVJCfn8/jx4/Fv+ftazN37lx27tzJvn372LhxI+Hh4fz44494eXmRnp7OpUuXBlU2LSkpQV1dXVLbiYmJEeG4rq4ut2/fJjMzU8HQWFlZcfv2bXbv3k1UVBQHDhxg7dq1zJs3jytXrhAQEDCooRm4bUBJSQmqqqo0Njbi6OgoaRSVIyEhAT09Pe7fv8+DBw9EQbSrqwtjY+NBPbjt27eLSblkyRICAgJwcXHh8ePHREdHS2RcoP8Fzc7OZu3atRJ5DzmuXbsm0gHfffcddnZ2hIWFCekL+PmGRr6oXLp0CTMzM+bOnStRen7W0Ny6dWtQr0y+x0lsbCyFhYXk5+fj5OQkGljNzc0VOrWzsrJ4++23cXJywtnZmTfeeIPbt29z/vx5hYjmzp077Nmzh7S0tEFf1n8F7O3tGT9+vMLndXV1vP/++4wcOZJPPvkEb29vZDIZcXFxYmuOlStXcuLECYyMjBg2bJikkJ6QkICXlxd+fn7CeA6sHwxEWloaU6ZMGTSbYGlpKTT0oH+hVFNTk6TDbG1tJcKycvXniooKmpub+fTTT4UGmZOTE4cOHaK6uprhw4dz6NAhqqqquHz5MiNHjiQ3N5eVK1dKFtzz58+jqqpKQ0MDkydP5sSJE+Tl5fHgwQMJ4aa0tJRRo0axc+dOqqqquHnzJuPHj+fKlStUVlYycuRI9u/fT01NDfn5+UydOlVINRkbG7Njxw4KCgq4efMmqqqqIuJycXFhy5YtlJWVMWXKFGFkP/30U2QyGZs2baKrq4uJEyeybt06kUnx9vbm7bffFtsSQH/0/t5773H9+nVaW1uFsXvy5Am3b9/mww8/5Pbt21RVVRERESHkj6ZPn87atWt5/Pgx9+/fx9HRkTVr1nDt2jUmTpzIo0ePePToEfn5+dy9excVFRXJvdHW1hbyUvn5+WhoaEgcDwcHB6Kjo8nPzycvL4+HDx/S2NhISkoK6urqkrnh6Ogo9hT6ZyCT730RFxeHnp6e2IdFU1OThQsXihqNt7c3P/zwAwEBAchkMuLj4/+hGs2aNWuwt7fH2dlZLAzP81ZmzpzJpk2bKCsrY8SIEdjZ2dHT04O1tTV37tzh4sWLWFlZUVtbS21tLTU1NTQ2NoriW0ZGBg0NDaSnp6OkpCQM4eTJk0lMTKShoYGxY8cKEcOrV68ybtw46uvr2bFjBxEREVRWVjJp0iQMDQ1pa2vDyclJEm5Dfx1m7969NDY2UlhYiKurq3hpTE1NOXDgAPX19WKMHR0dXLt2TUFjDfpTOzo6Oly4cIG6ujrxm76+PqKjo8V2CW1tbaiqqvL6669TUVHB5s2bCQwMpLGxkcrKStatWyeOLxemHDiG1tZWrl27JlnsQ0JCePnll0UhFvqlQeQG+lnIazTl5eWoqqoKRtr8+fORyWQSg/WsNyufzJWVlWJMcuaipqamROJj27ZtwtgZGBgo7Bsi362xqamJpqYmVq1ahYeHB83NzYwdO5YjR47Q09NDZWUlU6ZM4csvv+Tu3btoampK5k5dXd2vtrnZ38Ly5cufG2nl5uZiYGDAm2++yYgRI8Ri3tvby9atWxk2bBhDhgwRsku/FA8fPmTmzJmDGppFixZJiB35+fkEBQVJKMZLly6VGLGWlhYiIiKwsLDA0dERV1dXEW0tW7ZM1H3j4+MxNDQUZA75Mfz9/YVMDfTXG3x9fcnJyWHGjBno6elhamqKvr6+JCUL/dGZpaUllpaWGBsbSyKthIQE9PX1MTExQU9Pj+XLlwuWYkREBFOnTsXKygpLS0uh/AH97LgjR45QU1NDaGioRLna2tpaRHz37t3Dzs4Oa2trrKysiI6OZvPmzQrs09jYWAwMDHBxccHU1FRipHft2oWmpiampqZYWlqKTd/Wr1+Pnp4e1tbWWFtbExUVRXt7O7m5uWhqamJiYoKJiQm2trYsXrxYookH/aofchJUaWkpwcHBEnr3qlWr0NHRwdTUFBMTEwwMDDh9+jRPnjwhODhYMjdWrVoleZ9/KWRFRUV8+OGHPHjwgDVr1qCkpERTU5OoMbS1tTFlyhRGjBjBu+++y6hRo0Sq4c6dO4waNUoo7P4tyCnSA/89L/e3bt06cXHW1taCYhgaGsrdu3dJT09HVVUVe3t7kRtduHAh5eXlmJiYYGVlJVhYAyeRm5ubWMj27t2LlpYW1tbWqKmpCaHAAwcOiAfn7e0t6Ihz586VSKBAPyVz6tSpglo5c+ZM4f3Nnj0bPT09nJycsLe3x8rKih9++IGffvqJgIAAheJzb28v7u7uQjJGPomfPHnCd999J1FhjouLQ0lJidraWo4fP466ujqurq7Y2dnh6OgoJuyuXbvQ0NCQjOHLL78kOzuboKAgcTy5gOHAF/X06dOEh4cP+nyio6P59NNPqampwd3dXdQLqqur0dDQkEjixMTESHLRDx48QENDAxsbGxwcHLCxsSEoKIj6+np8fX0lEd3Zs2fx8PAQMjgD0xDNzc24uLiIa4X+Arq1tTWtra1cv34dHR0drK2tMTMzE96svAZpZ2eHvb09NjY2+Pr6/tvoRNXW1g76Xsgp4/+uqK6uVtieeTAMth3yYPhHyBmVlZWDardBf6H/efft1yCAVFRU/N2509HRwZMnTwbtCWpubn6upNfPGd+/gsTya0DW29srWEXd3d0iVGxtbaWjo0P0SjQ2NlJfXy/J63Z3d9PU1PTch/xL0d7eLqxqV1eXOH5bWxs9PT3Ie3/Ky8tF30lNTY3oD5H3RwzWezJwrJWVlWRlZUnCys7OTpHS6+rqEovo06dPFa6zvb2dyspKSktLJSGz/Pvyvo+Kigoxnt7e3kGl3uXje7b3prOzk66uLoU0o/xY3d3d1NTUUFZWpvASd3Z2ij4a+RgaGxsHHYO8/0WOrq6u5zbLdXR0iLnxLAOqs7NT4hF1dnZKjtPb20tDQ4O4xvLycqqqqsSYBha5e3t7xXifvf8D5+qz91C+ULe3t3P37l3JAjjw/PK5Iz//C7zAC/zP4IUywAu8wAu8wAv8j+KFoXmBF/gX49l0x/9X6Y++vj4RMf8cPO978ki4t7eX+/fvD5qqGniNpaWlz63P/k9Anq2R/xsYvf4j1/9rQq7qMVDdQv73YJ//vTnS29tLbm7uz05N/lwMvG9/T45Gfk3y73V1dYl7+7/e0HR0dEgKXc/Ds1TOfwR9fX309vaKhy3/+9dGb2+v5LgDzyk/7/PO3dDQ8NxrfPa4z0NfX59C6up553/2819LE+l5ePr06S+qozw75mfv3997lvX19YP+97a2tn94oyn5xljjxo3jgw8+wNfXl+bmZjIzM5k4cSLa2tpioZg/fz7KysoSxs+JEydQUlKSMMN+KQ4cOICWlhb29vaYmpqKLdMLCgrw9vaWpDt37NjB7t27+f777wUpBfqJAA4ODuTm5pKTk4OVlRXTp0/HwMBA1FWLiorw8/MT6fCZM2diZGSEu7s7ZmZmErWNzs5ODAwMxBYd0M9CG9jY+CyWLFmCkZGRJF372WefMWnSJFpbW/nss89QV1fHxMQEY2NjtLW1OXXqFJWVlRgYGAgJFjMzM0H2KSwsxNvbm66uLvbv3y+pj3Z2duLr60tFRQUbNmxAT09Pcq++/vprVFVVB92ifvHixYJgk5aWhpGREWZmZkyZMgVTU1OsrKzw8fHB2toaU1NTtLS0xOdylQMbGxshgyPH1atX0dXVxcnJCWtraxYsWEBPTw+pqamiF1GOyMhIrl69KnbwHCjPJFftSE5OpqSkBG1tbQwNDQWhIjAwUNRGB25nEh8fz/r16zl16hSGhoYYGxujpaUlJGxqa2v7Dc3ChQvR1tZGRUWFSZMmif6VgThx4gRmZmaSG7hx40bCwsLo6emhra2NyMhIvL298fT0lOzU949i3759EqbDkydPsLCwUJCj+OyzzzA2NsbS0lLCYvv444+F3pK8kDxwN8mysjLmzJkjPK+TJ0+KiQX91N5du3aRlJTE1q1b+emnnwRbTk40kMs4rFy5UuJFHDx4UKFZrLCwUBTWd+/eLaH7NjY2snbtWm7evIm3tzcuLi5YW1sLZt4PP/zAhg0bsLGxwcXFBScnJxwcHIRuU1ZWltiPx9zcXEJD37hxIzY2Nnh4eODq6kpgYKBElK+xsREbGxvBk4+KisLZ2RlbW1vR0Ldlyxbu3r2LlZUVLi4uODs7Y29vL4rry5cvx87ODnd3d5ydnQelQl6/fh0zMzPJJnf5+fmYm5tLCvzx8fE4ODgoGJS1a9diYmKCubk5rq6uYofEW7du4ejoKKmPrVq1isePH5OZmakw5ujoaC5evCiepbW1tdgyOz8/nwULFoj7ExcXh4WFBZaWllhbWwsae29vL+vWrROL07x58372NhPTpk3jrbfeIjY2lujoaKG+IW8TkMlkpKSk0NHRwZgxY5DJZKxevRroN4g6OjrIZDLGjRv33Drfz8WiRYsIDAyktLRUsI3CwsK4f/8+ysrKEsdh4cKFhIeH097ezqRJkwRpZPny5WK7Yzs7O6Fr9ujRI1RVVcnOzqa4uJiJEyfS19fH+vXrMTAwoLy8nK6uLg4cOMDUqVOFwT558iTDhg3D1NRU1CT37duHjY3Nc6/Dy8sLmUwm0RkzMzPjtddeo66ujpCQECIjI0WjeGFhIU1NTSQnJ6OqqsqTJ0/Evk7vv/8+Dx8+pLCwkPHjx9PZ2cnq1aslTMH29naUlJQoLCwkLCwMmUwmmcMWFha8/PLLCk3AdXV1qKmpMWTIEFJTU3n69CkFBQVkZmaipKTElStXePLkCSUlJTx58oRLly4xbtw47t69y5MnT+js7CQpKYkRI0agqakp3pGqqirGjx/PwYMH6ejooLKyUuyCmpSUpLAdtLOzM8eOHePChQuCNi/HqlWrxG7K6enpaGlpUVJSQklJCUVFRVRUVIjdUn/3u9+J5urY2FicnJxoamqioKCAI0eOMG7cOB4+fMiTJ0/o7u7uNzQTJkxg5MiRbN++neXLl/PKK69ga2sr8Vo3b96MTCYTL/mNGzeEQKA8bJPJZHh4eODn5ycRo/tHER4eLulu3bZtGzKZTOLZxMTEoKSkRHJyMpWVlWzbtg0NDQ06OztxcnISTYDOzs44ODhIFqOWlhYmTJggtv8NCQmRSICYmpqyZ88eYmNjsbKyorW1lbS0NE6cOMHQoUO5dOkSGRkZ3Lt3D3V1dUlHd2RkJL6+vpLrycnJYcKECUC/VyOTycRukVVVVUydOpW7d++SlZVFWloaH374Ibt27SI9PZ2amhqMjY2Jjo4mIyODO3fukJqaSkNDA8XFxSgrK7Njxw7KyspITU1l4sSJ4ti2trZERUWRm5tLeno6/v7+uLq6inHFxsby8ssvC9mchw8fkpmZiYODA66urmRkZPD48WPOnj3LxIkTJed/+PAhfX196OnpsXPnTnJycjh37hxjx46VSAdBf2f7s7I+g+3cGRISwuuvvy6hWa9ZswYdHR0yMjIoLS1lzZo16Orq0tnZyeXLl5HJZJI+DCMjIzIyMjhx4gQGBgakp6eTlpZGamoq+fn5VFVVkZ6ezr59+3j33Xe5efMmWVlZlJWVSV6ODz/8kKNHj1JVVUVcXBwffvghd+/eFXvVFxcXU1BQgJGR0aC9SoPBzc1NsuvokCFDcHd359atW/z+97/n3XffZefOndy/fx8dHR3+67/+S2hV3b9/n9dff13M1YE6dXI0NzfT0NAg/smJFIMhMjJSOAvQ75R4eXmRl5eHsrIySUlJQj3By8tLKEj8+OOP6Ovrc/36dVRVVYVDamNjQ0REhHiHmpqaaG5uJi8vDz09PUpKSlBRUVGgZt+9e1cYFW9vb44dO4atra1QNjh48OCg25vLERYWhq2tLUuWLAH6lZKdnZ2xs7OjvLycuXPnsmbNGiHWWl5eTl9fH8nJyZiamkqOFRoaKjQT1dXV6ezsZP369UL1AvoNjaamJkVFRSxYsABra2vhRN67dw8LCwtMTEwkDbXQz3JdtGgRn3zyCaGhoeLztrY2DAwMFFS5Hz16hJ6enoQAM3PmTL7++mumT58uZLW2b98ujL0cdXV1PHnyhPj4eJSVlcnIyCAzM5PMzEzMzMw4c+YMZ8+eRU9PDxcXF5HucnNzY8qUKVy4cIGsrCyMjIyEuG9JSQmNjY20t7fj4uLCvHnzRK/ahQsXhFYc9DuAenp6kjEJQzOw18HZ2Zn33ntP4tVs376dl19+mZKSEvr6+jA3N2f69OkMHz4c6KfDvvvuu1y4cOGf4vlDfzgsf3hdXV3Y29sTExODgYGBMBi6uroKfRU//PADHR0d+Pr6cvToUYKDgwkMDBw0v+nr68vmzZvp7e3Fzc0NT09P9u3bR1dXF2pqalRWVnL8+HFJL4m8IVOu7lxdXY22tjZ3796ltbWV1tZWli5dKplIgOjdgP4+hOnTp6Ovr09paSltbW2YmppSXFwsvq+vry/pJ7G0tBy0AW/r1q0KL2FlZaWgCLu6ukoWpJMnT2JmZgb0e8jOzs4cPHgQPT09yfkjIiIklOQzZ85IZHPkkM+Dmzdvis+OHz+OlpaWZO4cOnQIXV1d3N3d6ezspKenB29vb/T19YWhKSgowM7Ojl27domO76amJiZOnCjps4D+xaSnp4ezZ88KYU75/bGxsSE7O5uTJ08+d7tp6O/BUFdXF3/X19ejpqZGcXExixYtUqB23759m7KyMnbs2IGBgYFYYDs6OiQCrH8LM2bM4NVXX8XExITx48cjk8n47rvvuHXrFm+88QYeHh74+Phw4MABpk2bxvjx44Wy8sqVKxk2bBgASkpKksUP+iP3yMhIXF1dcXd3Z9q0aQQFBUlk/wdi3bp1DB8+XFDz5fP48ePHvP322yKCdnd3Z/jw4RLPNzIykjfffJNDhw6Jz4qLi/H09ERfXx81NTXR85KXlycMvpaW1nMjsYcPH6Krqyt2TJVH/X/P0AQEBBAdHS0WW3mT8rRp0ygrK2PRokUoKSnh6emJq6srbm5uVFRUkJ6ejrGxsWSefvnll3h4eFBRUSGc1o8++kiiqdbR0YGmpiaFhYXMmjWLjRs34ubmRkdHB9HR0axYsQI3NzeFOWFjY8OVK1fIzMyUdO7X19czdepUhW0Y7t69i46OjmBW1tbWoqOjQ1VVFbt27cLR0RHoj0zlc+RZJCQk8H/+z//BwcEBFxcXpk2bxpAhQ/jhhx/47rvvCAsLIygoiJSUFG7dusXMmTMJCwvjxIkTPHjwgHfeeYdp06YJYdovvviC3t5eIX/l6enJnj17SExMlMhVJSYmoqOjI0nly6B/0X7rrbews7NDT0+PN954Q9ILAf9taGpra9m+fTsLFiwgPj6ev/zlL8B/e6iqqqq8+uqrQtNn4EX7+PgQGBhIYGAgPj4+z9VjGmhoLl26JLxwW1tbTp06RV9fH0pKSgpegxy+vr4MHTqUl19+WfTHPItjx47h7e3NjRs3CAkJ4caNGwQFBZGdnS08nUOHDklkLvLy8pg0aZJIldXV1TFu3DiRjzQzM2Po0KEKOeWBhmbu3Lns27ePzz//HD8/Pzo7O7GwsJDI5ujp6UnkSCwtLVFTU8PR0REbGxvxu9mzZ4tJ9tNPPxEREcHKlStFmsfDwwMrKytWrVpFeHg4o0ePFmoFP/30k1A8DgoKkjR9zZ07V6KfdvXqVf785z+LLaGtrKwkmmsDt2cuKChgwoQJknTinj17CA8Px9/fn9u3b/Pw4UN8fHwIDw8Xqb6NGzeK3LOqqip5eXmUlpYyefJkYdh37drFggUL2LJlC7W1tZw6dYqZM2cSHx+PtrY2ra2tODk5CemPIUOGSMY8UJcuJSUFVVVVkduvq6tDXV2dvLw8PD09JYvoQLS0tDBz5kyhzL1x48bnKlw8i4CAAP70pz8RGhrK7NmzRTNjXFwcr776Kl988QXm5uaYmJiwYcMGJk2aJFJn48aN4/e//z1hYWG88847/OlPf5IYkb6+PkpKSnj06BEFBQXk5eWJtMVgWLlyJf7+/iJqkaf/7ty5g5qamoiG+vr6WLhwoUQU8/79+6ioqAij0draKpyB5uZm4UkfPnyYyspKpk6dKiKlZ/dT2bdvH+3t7XzxxRf8+c9/xsPDg6lTpzJq1Cj6+vo4cuSIJAp/Fp6enpw/f56IiAhOnjxJQEAA2dnZ2NjYiBT5li1bBO1e/rxv3rypoPgtF6Gtrq4WHfLbtm2TZCg6OztFw/GMGTOIjY1lzZo1HDx4kJCQEJH+HWhoHj9+LDTEnJ2dee2110ST+881NN988w1/+tOfRG3rvffeo729na1btypkUNLT07l8+TIJCQnC6evp6aGvrw83NzdOnjzJ8ePHiYiI4OjRo6xcuZJ169Zx+PBh5s+fT2xsLBkZGZibm4t71t7eTnd3N0+fPhURm1wZJDo6WlIOeK6h0dLS4sMPP2TDhg2EhYXxH//xH+zfv587d+6IWsuXX37Jq6++SnZ2NsOGDRPprVdeeYXjx49TWFhIYmIivb29LFu2jNdee03CPqmpqeHOnTukpaWRlpbGnTt3JF209fX1Iu8YGRkp0iFz5sxh/PjxLFq0iDFjxuDh4QHAxIkTFWo2Z86coaamRghGpqSkMGzYMEnBS4779+/j6urK4sWLiY6Opre3F09PT5YsWSLOHRMT8zcNTWVlJdra2qSlpYkm1IiIiL8Z0cydO1fIXRgaGrJnzx6mTZv2Nw2NlZUVhw4dory8nJKSEhH+h4eHC4NQXFzMvn37mDt3rlAG8PDwICwsjNjYWA4fPoyFhYUwKCtXruS9995j0aJFaGpqSpQCnjU058+fF7l1ec62lFJjuAAAIABJREFUublZRDQDG3ZTU1MVZEt2797NkiVL2LNnD1u3bmXnzp18+eWXrFy5UhgabW1tjI2NWbRoEX/5y1/Yvn07zc3NqKioiCj2+++/JyYmhtGjR5OQkMClS5eEJxUQEMDKlSvx9vYmOzub06dP4+TkpDBmOZ5naB4/foyPj4+CNPrNmze5c+eOmNM1NTWcOXMGCwsLhYLr8+Di4qKQMwdECjAuLg51dXVkMhm3bt1izJgxrF+/nnv37om09MyZM/Hw8BDRkBw9PT2sWLGC6dOn4+XlhaenJ6GhoQr9XXIsXrxYoagM/c9PRUVFUuBeuHChkJiH/qZbHR0dcT/r6uok6tmAUMuurKxEXV2d7u5ugoODmTZtmqiF7tu3DzU1NVpbWzE2NubkyZNUVVVRVVWFnp4e58+f59SpU0IZRM5+GpihcHNz49KlSyQlJfHWW2+J6EMedYaGhkoUBeS/TUpKYurUqXR2dtLX10daWhqjR48mNzeX4uJiVFRUaGlpEc9BbtSPHj2KhoYGvb29TJ8+nWPHjpGamsoHH3yAv78/nZ2dGBkZSVh1ixcvJjw8nJqaGqqrq4mKihKppoaGBqZMmaIQAeXm5qKhoSGeg42NDbt376aqqoqamhocHBz49NNPKS4uZvjw4ULlpLGxEW1tbfbs2SNUOAbC1dWV2NhYjh49SlBQENXV1ejp6aGvr091dTUzZszg+PHjpKenKxhied+cgYGByJrs2bOH3//+95I61vXr10VEKIcMYOzYsRKvYcyYMfj5+XH8+HFkMhnFxcVERUXx+9//noKCAgIDAzEzM2PcuHGiYLl7926WLVtGX18fK1eu5E9/+pPkxU5ISMDd3Z0ZM2YwY8YM3N3dJZ32GzduFPnokJAQVq5cSUtLC+rq6ly4cIGEhAQuXLiAsrIy9fX1hIWFERAQIH6fnJzMmDFjaGhowNPTU3j1H3/8sZAAH4ienh4sLS0ZOXKkSPXNmjWLN998U3ia+/fvF/pD0J83VVJSEoamvLycKVOmSBoCV69eLem6l08aVVVVoD+nLK9V3Lx5k5EjR6KqqirRZ9PW1hZkBuiPGgaL/mJjY1FSUpIUz5cuXSryo66urhLZnKNHj4o0hI6ODjExMSQkJHD16lWUlZVJSUkRYxwo1Hn69GkF7TDon3gmJibCKMpFCQfWTKDfSZk9eza1tbUYGRkJbayFCxeyZ88ecnJy0NTUJCEhgYSEBD755BP09fUBRA1IjpqaGoYOHUpycjLff/+9uB75gjZ06FAePXpEbGysZJ+UZ5GcnCwk+6F/sVRRUaGoqIhvvvmGyZMnC2+ysbERVVVVLl++THh4uEQ09Nq1a4Maj8EwY8YMBY09+THefPNNsrOz8fb25v3336etrQ01NTV27NjBmjVrePfddyVzWFlZWZIa7Ovro6ysjMePH4sCd1FR0XPZgOvWrZPs1SRHZmYmRkZGkmbY1atXSzIUjx49wtraWvJ+f/3112hoaODj44OdnR0eHh7U19dTWFiIqakpHR0dNDY24uDggLGxMc7OzhgYGJCbm0taWppCwf+rr74iLCyMuLg43n//fRwcHLC1tcXJyUmyz0xwcDDff/89XV1d/PWvfxVkFAcHByoqKli9ejVKSkqCEGJmZiYc4zFjxmBvb4+TkxNTp04VtcG8vDyMjIyEQObcuXOF2KuSkpJYW4KCgkRkP3r0aHbt2gX064PJsy2dnZ3Y2tpK2HX3799HU1OT6upqnj59irW1teSa5N+xsLCgt7eXBw8eYGxsLHkm3333ndiX6PDhw0yePJlp06ZhaGgoMipyEs5ABAYGcu7cOU6fPi2cBy8vL6EdGRYWxtmzZ8nPz2fUqFHY2tri4OCAlZUVwcHBVFVV4erqKiH26OrqigAA+t8tCwsLRUOjqqoqKebIN91qaGhAWVmZIUOG8Ic//EFhATl//jxDhgwR//+1115DSUmJN954Q0GXqKKigmvXrnHjxg1u3LjBtWvXJIvrjz/+iKqqKsuWLUNDQ4Pc3FxOnDghuQDoF+r76quvqKmpERpCc+fORV1dnSNHjogbN9DbMzExEcXCgVi2bBnjxo0Tf8fExPDmm28KpYBn88NygTp5JCanSA6MRqKioggLC5Oc56effkJHRwfop60OvDfh4eG89dZbEtVXQ0NDiXdoa2srHqa7uztOTk4kJSXR09PD7Nmz0dXVJTIyksDAQAwNDUUY6+XlJdGuOnv2LC4uLkIrbiDCw8PFYhIRESG5X9euXWPo0KHi/K6urixZskRIqJuYmODv74+ZmRkODg4KXP69e/cye/ZsALGhGcCCBQuIiYlh+fLlCixFLS0tbt26xZ07d1BRUSEoKIilS5fi4OCAtrY2qampXL58WVJb/Pbbb3n11VcpKCjgypUrjBgxQozZxcWF5cuXi+L4rVu30NLSkhiagZ5lQEAAenp6REREYGBgIO6HXOl33rx5rFq1Cm1tbYl+1d9CTU3NoLTX9vZ2ioqK6OrqEqoFgFBykKsYPHusv7Wt79+DnDDwLDo7O6moqJBEDQ0NDZLsRFdXl8Kuq4BgS928eVP8vquri4qKConBS05OJj4+XiycDQ0NCpFXd3c3FRUVPH36lLy8PHJycsjJySE3N1dicGtra0UKr7KyUixuVVVV9PT00NjYyL1798Rvs7KyqKyspK+vjydPnojjDrwXg405LS2NS5cuSZzKmpoaEbnX1taKFGpVVZWI2np6egaVmCkpKRHXUVlZqdDLI7/H0J+OfFaNu6urS7J+lpWVERcXJzZpg/6WgMHmTVtbG21tbSJKa2lpEelp+f3s6emhoKBA3LecnBwePHhAd3c31dXVEiPS1tYmyU7J2W8D55AM+vPqA29gWVmZGHBdXR0nT56UpHLkaG5u5uHDh2LC5efnc+jQIdLS0hS++3MgZwPJvQG5PMhAVFdXi4W9o6ODc+fO8c0330heutLSUsl2zK2trYM2iDU1NUkmQXt7O48fPxY3SM7skqOzs1PsdAj9L0NhYaFkklRXVys83I6ODjG+iooKSW69q6uLR48eSXLphYWFkqJpUVERd+7cISUlhZSUFJKTkyWGKSUlha+++oorV67Q1dUljv/sfWhrayM/P5+ioiKFiVtfXy/Yc5WVlRJj8fTpU3JycsT5U1JSyM7Opq+vj+LiYlJTU0lOTiYjI+O5PT7yxXPgvusVFRXU19dTXFysEHHKt4GG/sl/7NgxYmJiBIGitbWVlpYWBX2t/Px8Ojo6aGtrIysrSzLmnJwc8WyfPn0qedY9PT0KiuKJiYkcOHBAUMnlKC8v5+uvv+arr7762USAF3iB/5fxv75h8wVe4AVe4AX+vfHC0LzAC7zAP4WBKZKfq5jxQsT0/y28MDQv8AL/IsTExODm5iaUH+SMuwcPHuDl5cXMmTNFreCLL77Aw8ODuLg4sbGWnZ2d2FYhKyvrnxrL999/j4+PDzNmzMDPz49169YJivTatWslKcTjx49z9uxZLl68KJGHgX6GaFZWliDoODk54ebmJvq3Kioq+Oijj8Tx5PscOTo6MmvWLIV6XkREBOfPnxd/JyUlKTAAB2Lnzp3Mnz9fYrjOnTsnZG/kpBB/f3+xKVxcXBwNDQ2EhIQQEBCAv78/oaGhYsuJ8vJy1q5dS3d3N+fPn5c0EHd1dbFu3Tpqa2uJiYlhzpw5klrO1atX8ff3V+hf2rhxI35+fgQGBuLv7y+usbe3l7Vr14ox+vr64uvrS0lJCT/++KPkGUVFRdHZ2UlbWxvz58/Hx8cHPz8/fHx8mDVrFnV1dWzfvl2yY2xJSYmoCZ8+fVpyvIHP8ttvv8XLy0vcJy8vL65fv86tW7cIDAyUpOA/++wz0tLSWLt2LX5+fgQEBBAQEICvr6/kXg2ErLa2lpkzZ7J48WLBIjl58iTBwcFcvnyZ7u5uVqxYgb+/P56enkyfPp3AwEDq6uo4cOAAAQEBeHh4EBISItlRctu2bezatYuOjg4WLlwobmx3dzeRkZGcOnWK9vZ25s2bx/z580VN4syZMwQHBz+3/+XvoaurSyFvfuvWLU6ePCkKjpmZmYSFhTFr1ixmzZrFt99++6trdW3fvh0/Pz/mzJnD3LlzCQgIYPXq1UKc7tixY6Iuc+/ePQmDp6ysjJMnTyo0Kl69epWzZ8+KekZiYiIhISHMmjWLOXPmDLqj5z8DOWU2MDBQ7CPv7+/P3r17+fzzzyWswfj4eIVFKCkpSciSQH+Na/fu3Tx8+JBVq1ZJjuvn58fhw4dJTExk5syZzJw5k5CQEKHw8Etw6tQpof4gR35+vmRM/0pMmzaNV199leXLl2NjY4NMJmPv3r3cunVLSNBkZWXR19cnGjqjo6PJyclBJpPh5+fH/PnzGTJkCG+99ZZCN/k/gkWLFmFtbU1cXBynT5/GxMSEjz/+mPv37zN27FhJjXDu3LnMmzeP4uJiPvjgAyE9cuDAAUHBDQ4OZvny5Tx8+JDjx4/zf9s706Co0usPdyqaGKuiE2syyZjS0UlwF1T2VRYbV1DHEcYFcWETEAaRHZQAUVTUDIjBUXAZxUgDAooMGhQXFG1lREVZh+iAZIgiCELb0/D8P1D9FldwZpLK1P+Lv6r+0FRzu++9733Pec97znPGjBlDTU2NwLl0d3eTnp7O5MmTKSws5P79+wQEBGBnZyfG89WrVxk8eDDz588Xz+OBAwcGLBbWasmSJchkMknWlvbaao3JsmXLOHPmDLm5uWRnZ1NfX49SqURHR4czZ85w5swZQkJC0NXV5dmzZ9TW1jJ+/HhevXpFZGSkpJtvZ2cnEydOFNgemUwmKbNYvHgxMplMgqDp7u7G2NiYrVu3UlhYyP79+/nTn/4k5sTp06eTkJDA6dOnycnJIScnh/b2doKDg5HL5Zw7d46cnBxsbW3ZsmULra2tjB8/nmPHjpGXl0dOTg5nz56lq6uLuXPnIpPJxD55WVmZ6ILr7e0t0FknTpzAwMBAFOJqjVbf6/T48WP279/fD1VjY2NDRkYGJSUlnDlzhnHjxuHl5cXp06f7zVlayWpra8Ug1/44S0tLcfCuri5+/vOfM2zYMIyNjZkxYwbm5uZ8++232NjYIJPJMDQ0ZMKECchkMgGg09PTw9LSUnTo3LhxI9C74T5kyBB8fHxobW0V362dJBcsWIBMJhOpe/+JKioq8Pb2lmSK7d+/H1NTU7y8vLCzs6O1tZXU1FR0dXXJysoiIyMDS0tLCTjvf6GioiLS09NZsGABVlZWpKenc+bMGXp6eigpKWHt2rU8ffoUhUIh0CfaczAyMsLb2xtjY2ORah0REYGdnZ3goWk0GrZs2YK1tTXZ2dkcOXKEqVOn/k8n0e7ubvLy8khPT0dPTw8nJyfS09MpLS0lLS2N0aNH097eTkdHh0C29FVCQoIkLbqjowMDAwORmpyeno6+vj5OTk4cP34cpVJJUFAQtra2KBQKDh48iJ6enoTf9p/I29u7H3vt3Llz/2+tnJ2cnMRDDzB69Gg+/vhjSktLGTJkCCNGjOCLL77g0aNHGBoa8s4777Br1y6Bd9Impjx69Iif/exn7Nix47/+LSEhIcTHx4v32pbn2sZ0z549E/TdwMBAke6ekpIi8C56enqCMWZhYSG51uXl5TQ1NVFXV4e5uTlPnz7FyMionzOkUCgkzQK3bt2Kvb29KDn4MQgaY2NjkbV47949kQnZ1NSEj4/PgB0ir1y50i/1d9GiRWzfvl0UbP4QgiYwMBAzMzMxCTc1NWFjY4OxsbGkIZ9Go0Eul0sMUkpKCrNnz0atViOXywd0GjZt2iSBV6ampjJv3jxaWlqwtbUdMPzo6urKwoULcXR0RKPRUFFRIc7Tz89PAmStqKhg6tSpdHR04O3tPaBz/9e//hVnZ2csLCwEreT1FvYLFiwQSJw3SVZXV8fQoUMZMWIESUlJtLe3M3HiRIYNG0Z0dDQqlYrBgweLGpe+MjMzk9QFrFmzhl/+8peienT+/Pm0t7czfPhwcTNUKhXvv/8+QUFBtLa2MnLkSMaNG0dwcDDd3d3MmDGDX/ziF5K01R+jnp4etm3bxpQpU0RKdHt7O0ZGRsLKrlq1ikOHDnHixAkJhTYpKUl4LTk5OaxcuRIXFxdRiKhUKnFzc8PFxYXCwkKgd3kdGhrKsmXL3lhFDr2YmNdJATt37uTYsWNcu3YNBwcHRo0aJbLSAgICxOcLCgoEuXXatGnigbS1teXGjRvs2LGD2NhYcVxfX182bdpEd3c3qampLFu2DHd3dxFmKSwsZOXKlaxZs0YM+tLSUrGU1nqqA8nV1ZXPP/9c8rd169bh6emJj49Pv9R36A1r9J0kXr58iZWVlcTr8fT0lBw3MDBQwsk7cuSIZHKG3qw8Ly8vHBwcBMHiwoULuLq6snLlSuEpRkZGitW2l5cXT58+5dq1awJXUlpaipubG6tXr5ZAGX8qaYkViYmJBAcHI5PJ2LVrFzdv3mT48OHMnj0bT09PcnNzcXR0ZMKECWzfvl0Ymr6pqx9++KFkAtRoNOzcuRNfX1/8/PzYsGED4eHhbySba5lxCQkJREdHo6urS15eHo8fP2bEiBFYWlpia2uLra0tI0eOFIQC6E2b19XVlcwJX375JaamphgbG+Pp6SkmpaqqKmbOnMmdO3cwNDR8I/G6qakJuVyORqMhPDyc0NBQ4IcNzbp164iOjhZ1gLt37yYoKAgnJyeBoJk0aZIAyzo7O9PQ0DAggiYxMZHly5f3Q9D0rYvri6Dx8fEhLCxMFA2npqbi4+PTD0GjNTTaokroLeKeNm0azc3NWFlZYWtrK8C02lKAmJgYTExMSEhIICYmhmnTppGdnU17ezs6Ojo4ODjg5OTE4sWLxb1YunQpRUVFrFq1ir1799LY2CgMjb+/v+TZ0p5LXV0dQUFBTJ06VVwnbR1UYmIikZGR5OfnY2lpCfQa5L6GZs6cOf34hq9LVltby29+8xs++ugjXF1dKSwsxN7eHn19fcLDw1GpVPzud7/jnXfeEXhzbR93Kysr8eXQW0SkBW/OmTPnBw3N8+fP+cMf/oCrqyurV6/m6tWr6Ovri+KjvsrMzCQsLIzo6Gg2b95MVFSUAHy+/jltTVB1dTXW1tYiLLV9+3aioqLIy8tDR0eH0NBQgfS4cOECKpUKNzc3ampquHz5Mqampjx//hxzc3Py8/MpLy8nKCiIrq4uli9fzt/+9jceP37MrFmzJG2Q+yo2NlbCzVKr1bi5uQnDolKpsLe3FwNz0aJFoh6opqaGhQsXcujQIUlB7Zo1azh06BAHDhxAV1eXsLAwXFxc+OCDD3j06BHV1dW4u7vT3NzM4cOHmTdvHg0NDUyaNImamhrOnTtHXFwcX3/9NdbW1ty5c4crV65gZmb2xrayy5cv70el7u7uZuTIkYwZM2ZAnlxSUlI/Q6OddPqeS9/jRkZGIpfLSUtLIykpienTp4tCOK0cHBzYsWMH9+7dE0V/GzduRKlUUl5eLsI5oaGhWFhYUFlZyaeffoqXlxc3btxgxYoV1NfXI5fLKS8v59KlS+Je/5Ryc3Nj8ODBmJqaYmFhQWRkJGq1mgsXLjB06FDi4+OZN28ey5cvJyQkBD09PeLj44WhqaysBHrDz8OGDZMUUfb09FBeXs61a9fES6lUvrF1RHR0NKampsTHx7Nt2zbhZNy+fRs9PT0ePnzI48eP+eabb/Dw8BARCeitJRozZoyorVGr1ahUKtRqNUqlkoiICP74xz9SVFREY2MjM2fO5P79+0yfPl2Slg+9hdxqtZr09HR++9vfEhkZib29vYDQHj9+/HsNzYoVK8jMzGTNmjWUlZXh7u5OUVERjo6ONDY24ufnR3h4OHV1dVRVVVFdXY1areb69ev9VgV/+ctf8PT0lKxo4uPjJQZdrVZjZGREQ0ODKNj09/enqKgIX19fsrOzWbx48YCGpm8Yt7S0FDMzM54/f86sWbPIy8ujtraW6upqMTds2bIFIyMjcY+0BdWPHj0SRJKamhqqqqpEmv/ixYs5f/48DQ0NGBgYcOrUKcFFe93QtLe3Y2xszJMnT/Dz8yMmJkZynb777jsSEhLE/LVkyRIOHDiAi4uLBOf0ow3N0KFD2b59Ow4ODgQHB+Pj44OVlRWhoaGoVCqGDRuGnZ0de/fuZefOnSJEYmlpKYrvoHc5KJPJaGhoYPbs2cLQDBs2TJBiNRoN77//Pps2beL58+e8++67xMfHM3v2bMLCwvDw8GD+/Pni4mhVXFzM/v37SUtLIy0tjYMHDw44Kf79738Xhubhw4fY2dkJLyohIYGoqChOnTqFmZkZWVlZHD9+nICAAJYtW8arV6+4dOkSmzdvxtfXF11dXTo7O4mLi0Mul/PnP/+ZBw8e0NbWxpgxYwgMDCQuLg5ra2siIiI4fPgw9vb2ksrx1w1NWVkZa9euFe87OjqYNWuWGJiOjo5iX6K2tpbFixfz+eefS1Z4Hh4epKamkpKSwty5c8nOzubo0aO4urqyceNG1Go1OTk5REREsGLFCuRyOS9fvsTDwwMHBwd27tzJkydPyM3N5cMPP2Tr1q3ExsYyefJkCgoKiImJwd7eXrKxN5ChqampYezYsejo6EiKx/qOh74GUqVSYW1tLVnRvG5oNm/ejKGhIVFRUYSFhfUrhqyvr5cwoDo7O1GpVFy7do2YmBh8fX3F6i8iIkKseBobG3F0dCQ3N5f169eTnJzM5MmT2bZtG9HR0ejo6EiKZH8KOTk5fS+CJj8/HxMTE4YMGUJhYSFTpkxh27ZtwtAolUra2tqIjY3th6fXaDTs3r0bX19fAgMD8ff3Z/PmzW80niEhIZKwjFZa1llfAxUSEiIZwzU1NVhZWYnn6ttvv8Xa2lqyse/h4UFcXBzNzc2YmJjQ2dnJ/PnzJd9ZWlrKlClT6OzsxNnZmeDgYBQKBZmZmYIWnpmZ+b2ss08++UTsYejr6wuIrq2tLY2Njaxfv56UlJR+/3flyhUJdqmjo4MZM2aI5IsZM2bw8uVLCgoKJMTt27dvM23aNNRqNS4uLigUCgoKCrC2tsbFxYWWlhaJ46i9N3Z2dpJ6LHd3dxGOtLGx6ddWAHpDZ68zIwHhIA6khQsXCiOwb98+dHR0RHH2hg0bJOHWtLQ0cRx3d/cBIzPx8fGsX78e6J2PzM3NmTRpkmgtAr3kkoHag/SVrLa2lkGDBommNaNGjSItLY2ZM2cKQzNo0KAB9zDMzc0xNzcHeh94S0tLfv/736PRaLC1tWXu3LloNBreffddMfk/fvxYHO/58+cMHz6c3NxczM3NGTlyJAcOHGDu3Ln9DE1+fj47d+5k165d4jXQzTlx4oT4rubmZszNzYUXtXHjRlJSUjhx4oSER9bS0sLEiRPJyMjAxsaG3NxciouLMTMzE8jtsrIykpKSsLCwoKSkBD09PTIzM0VR36VLl7h79y6ZmZmSMMzrhmbv3r0kJyeL9y9evJAYmnXr1olN9Vu3buHg4MCNGzckBv3jjz+muLiYhIQECQzzxo0bmJqa8sUXXwjYZXp6OvPmzaO9vZ26ujpKSkqIi4vDwcGBAwcOYGZmxvXr1ykuLiY5OZn6+npKSkrIzMyUMOJeNzQajQYLCwsOHTrE7t27B0TU5OTkSB6If//730yfPl1SBPu6oQkKChowTKtVfX09JiYmYrO6pKSEs2fPYmVlRVZWFpcvX2bmzJl0dXURGhoq6NBVVVUsWrSIgoICvLy8SExMxM7OjtLSUi5evEhycvKAxvJ/qaVLl6Knp9fv74WFhaKnir29PUOGDKGlpUU4AVrW2ahRoxg7diwymYz169dLiny7u7vFJq9CoeDkyZPk5eW9kZYcEhIyIC1DqVQyffp0SYhL249GqwcPHmBmZiYykbq7u/H398fS0pIdO3YQFBSEpaUllZWVPHr0CAMDA9RqNXfv3mXq1Kl4enoSHh7OjBkzUCgUPHz4UPDDtIqMjMTX15f8/HxGjRqFl5eXSHzp+9w7OzuTk5NDW1sbMplM7DtZW1vT2NhIQEAABgYGeHt74+npydq1azl79iyVlZWMHj0aHx8ffHx8sLCwEOdYVVUlVl+vXr3Czs4OZ2dnoqKimDhxovgOZ2dn0Qfm17/+tUD6vM466+npwcrKioULF/Lpp5+yZMkS7OzsaGhooKenB2NjY5GF5+HhgYeHB/X19URFReHv79/vHjU0NKCjo8OqVavEdfH19aWpqYmlS5dKVhv6+vqMGzcO6H229PX1CQgIYNWqVUybNk04V56enhgbG4vrtG7dOs6fP09iYqIwNNDLNpPJZBK+oVwul/T7GkiyqqoqZDIZ165dExkLNTU1TJ48mQ0bNtDV1cWgQYMYNGgQ48aNY+zYsYwdO5by8nLs7e2RyWRMmTKFkSNHCsAm9EIvtZ5AYGAgMpkMc3NzRo8eza9+9Su++uornjx5Ih4wHx8f0fjJxMSkH9CtsLCQPXv2kJSURFJSEomJiZI+MFodPnxYglfx8fFhzZo1HD16FCMjI7755huOHj3KBx98QExMDJGRkcyZM4eIiAguX76MoaEhxcXFREdH895773Hr1i2WLFnCiRMnKC4uFr0jvLy8iImJobi4GEdHRwnWv6/Cw8PF0lulUrF8+XIJqbWtrQ0jIyMxqZ8+fRpDQ0NOnjzJ7NmzxUT50UcfERYWRmJiIjY2NnR1dREbG8ukSZOIjY0lPDwcc3NzUlJSOHbsGLNmzeLSpUu4ubkxYcIESktLkcvlFBcXk52dzZw5c7h79y5yuZzTp09z+PBhnJ2dB2zDC70rLe2Gq0ajwdfXV/Cpuru7MTAwkMTxAdHXw9vbm6NHj2Jqairiz1otXbpUgp/RZul9n1xcXAgMDOTIkSPY2NiQlZWFgYEBFy9eZNeuXbz33nvcvXtj90kdAAADLUlEQVSXoKAgxo8fT0ZGBkuWLCE5OZnr16+zYMECGhoakMvl5OXlcfjwYT755JMfTWH+b3Xv3r0B98GePXvGP/7xDzo6OqisrBRtF0pKSgQl4vz585w+fZrc3Nz/mrzRV7W1tZINa61evHjBzZs3JXsX2vCMVi9fvuTWrVv9yNB5eXnExsayb98+4Ux0dHSgVCoFPaOxsZGUlBQ+++wzEUJtbGyUsLOg1/krKyvj6dOnnD17lszMTBQKBVlZWZIxev/+fUEPuXr1qnAqy8rKUKlU1NbWkpubS2ZmJpmZmZw8eZIHDx7w3Xffcf78eRQKBQqFQhLW6ujo4ObNmwJP1NbWRmpqKnFxcRJP/t69e8I5USqVYkVXVlYm4ZJBr9OYnZ0tVkBaB6Cnp4cbN26QlZUlfqNCoeDp06f885//7MdAg97wXXFxseTzp06doq2tjYqKCgn1o6GhQXDWtL2lFAoFubm5Esequrpacp0yMjKorKyksbFRhGyh99kvKiqSIIO++uqrH3TSZC9evCAtLY3W1lZu377N8ePH6enpIS8vD6VSiUaj4eTJk+zfv5/ExETxampq4tKlSxw8eJDPPvuMffv2SUIi+fn54qZoNBqOHTvG6tWr2bRpk9iIfvHiBUeOHKGlpYXKykoOHTpEZ2cnBQUFb2wh8EP6+uuvJdb25cuXbN26FT8/P7HSqK+vJyUlhT179rB7925J3v6xY8cICQnhwoULZGRkoFQqqaqqIiQkhMDAQDFRtLa2io3+8+fPv/H33LlzRxihzs5OLl68KPHc1Go1X375pSTEoQXe9Y17/utf/yI0NJSAgAAx+CoqKkhOTmbPnj3s2bNHnLdarSYxMZHw8HCRYlxXV0dpaanoNdP3GGFhYYSFhQ048WhVXFwsvDRtTL3v4KqpqRkwFbm+vp6wsDDc3d1JSkrqx3S6cuWKxPtTKpX9kC+vq7W1lV27drFlyxZhtLOzswkKCiI/P59Tp05RWFjIw4cPUSgUhIeHi6V9c3OzGFsPHjwgNDSU8PDwAff73uqt3up/o7cFm2/1Vm/1Vm/1k+qtoXmrt3qrt3qrn1T/B+EclZvZGE8uAAAAAElFTkSuQmCC" /></div>
<div class="MsoNormal">
<span style="mso-no-proof: yes;"><br /></span></div>
<div class="MsoNormal">
<span class="tlid-translation">Físico</span><br />
<span class="tlid-translation">Este es el esquema de la parte física de la
conexión ethernet.</span> <span title="">Describamos el papel de cada
componente.</span></div>
<div class="MsoNormal">
<span style="mso-no-proof: yes;"><img alt="" src="data:image/png;base64,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" /></span></div>
<div class="MsoNormal">
<span class="tlid-translation">El cable LAN puede conectar dos
dispositivos con una distancia de hasta 100 m.</span> <span title="">Esos
dispositivos pueden conectarse a diferentes fuentes de alimentación con una
diferencia de potencial de tierra de muchos voltios.</span> <span title="">El
cable también puede atrapar algunos ESD o EMI que se ejecutan junto con otras
líneas en un conducto de servicio.</span> <span title="">Esos niveles
peligrosos deben filtrarse antes de causar daños de cualquier tipo.</span> <span title="">Se recomienda encarecidamente un zócalo RJ45 con imanes integrados
debido a su aislamiento galvánico entre la electrónica interna y media.</span> <span title="">Además, está diseñado para coincidir con la impedancia del cable UTP y
evitar reflejos.</span><br />
<span class="tlid-translation">Los conectores RJ45 están disponibles en paquetes
SMT o PTH, ejemplos a continuación.</span></div>
<div class="MsoNormal">
<span style="mso-no-proof: yes;"><img alt="" src="data:image/png;base64,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" /></span></div>
<div class="MsoNormal">
El conector SMT es más fácil de montar con Pick & Place
y generalmente es un poco más pequeño. PTH es más robusto y ofrece más
confiabilidad si debe enchufarse con frecuencia. A continuación, algunos
ejemplos de PCB para conectores SMT y PTH RJ45. Tenga en cuenta las precauciones
adicionales para evitar daños por ESD a componentes sensibles. El blindaje del
conector RJ45 está conectado en un plano separado, llamado aquí TIERRA para
distinguirlo del plano GND general y aislado de él con un espacio de al menos 1
mm. Los dos planos están en contacto, desde el punto de vista de la señal, solo
a través de un condensador de 1nF / 3kV. Los condensadores de equilibrio de
modo común de 18pF deben colocarse lo más cerca posible del zócalo en el borde
del plano GND. La matriz de protección ESD1014 ESD proporciona aún más
protección ESD en paralelo a las líneas de señal y se coloca cerca del plano
TIERRA.</div>
<div class="MsoNormal">
<span style="mso-no-proof: yes;"><img alt="" src="data:image/png;base64,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" /></span></div>
<div class="MsoNormal">
Al contrario del resto del circuito, no se debe colocar
ningún plano debajo de los imanes, para mantener las rutas de señales
diferenciales coincidentes y mantener el rechazo de ruido en modo común en el
mejor de los casos.</div>
<div class="MsoNormal">
<span style="mso-no-proof: yes;"><img alt="" src="data:image/png;base64,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" /></span></div>
<div class="MsoNormal">
Como es bien sabido, el enlace 100Base-TX utiliza el modo de
transmisión de señal diferencial para rechazar el ruido de modo común inducido
a lo largo de la ruta. Las diferencias de longitud de ruta influyen en el
cambio de fase de las señales diferenciales, reduciendo en consecuencia la
relación S / N. Debido a que lleva una señal de alta frecuencia, el cable UTP
debe tener la impedancia correcta para coincidir con la fuente y cargar una.</div>
<div class="MsoNormal">
<span style="mso-no-proof: yes;"><img alt="" src="data:image/png;base64,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" /></span></div>
<div class="MsoNormal">
Los requisitos de coincidencia de longitud y de impedancia
controlada deben mantenerse también en la parte de PCB de la línea, para evitar
reflejos de la señal y mejorar la EMC. Un conjunto de herramientas está
disponible en Altium Designer para facilitar esta tarea.</div>
<div class="MsoNormal">
En primer lugar, debemos definir las reglas correctas a
seguir para este tipo de enrutamiento. La impedancia de las pistas depende de
la PCB (grosor dieléctrico y de cobre como máximo) y del ancho y la separación
de las líneas diferenciales. Una buena calculadora de impedancia para este tipo
de línea es la línea TX, la calculadora de línea de transmisión. Un plano GND
adecuado debe estar siempre presente debajo y alrededor de las líneas
diferenciales, esto conduce a un mínimo de 4 capas de PCB. Una vez que se han
calculado los parámetros correctos, deben ingresarse como regla para esa clase
de red específica.</div>
<div class="MsoNormal">
<span style="mso-no-proof: yes;"><img alt="" src="data:image/png;base64,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" /></span></div>
<div class="MsoNormal">
Después de eso, con la herramienta Ruta - Enrutamiento de
par diferencial diferencial interactivo, es fácil enrutar las líneas
diferenciales con el ancho y el espaciado correctos.</div>
<div class="MsoNormal">
<span style="mso-no-proof: yes;"><img alt="" src="data:image/png;base64,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" /></span></div>
<div class="MsoNormal">
Después de eso, con la herramienta Ruta - Enrutamiento de
par diferencial diferencial interactivo, es fácil enrutar las líneas
diferenciales con el ancho y el espaciado correctos. Una vez enrutadas, las
líneas deben coincidir en longitud con algunas décimas de mm con la herramienta
PCB - Editor de par diferencial.</div>
<div class="MsoNormal">
<span style="mso-no-proof: yes;"><img alt="" src="data:image/png;base64,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" /></span></div>
<div class="MsoNormal">
Algunas posibles diferencias de longitud se pueden compensar
agregando un acordeón con la herramienta interactiva de ajuste de longitud.</div>
<div class="MsoNormal">
<span style="mso-no-proof: yes;"><img height="430" src="file:///C:/Users/GREGOR~1.CZW/AppData/Local/Temp/msohtmlclip1/01/clip_image020.png" width="410" /></span></div>
<div class="MsoNormal">
MDI - PHY</div>
<div class="MsoNormal">
Un chip PHY que se usa típicamente para interconectar el
medio independiente de la parte dependiente del medio del circuito es el
transceptor Microchip LAN8720A 10BASE-T / 100BASE-TX</div>
<div class="MsoNormal">
<span style="mso-no-proof: yes;"><img height="235" src="file:///C:/Users/GREGOR~1.CZW/AppData/Local/Temp/msohtmlclip1/01/clip_image022.png" width="698" /></span></div>
<div class="MsoNormal">
Conducir la línea de Ethernet sobre una longitud de hasta 100
m requiere algo de potencia. Una vez que se encienden el PHY y el imán,
comienzan a desperdiciar algunos cientos de mA. Para ahorrar energía, cuando no
se requiere Ethernet, su potencia puede controlarse mediante software en un
dominio de potencia separado utilizando un mosfet controlado por un GPIO de la
MCU.</div>
<div class="MsoNormal">
<span style="mso-no-proof: yes;"><img height="154" src="file:///C:/Users/GREGOR~1.CZW/AppData/Local/Temp/msohtmlclip1/01/clip_image024.png" width="307" /></span></div>
<div class="MsoNormal">
MII / RMII - MAC</div>
<span style="font-family: "Calibri",sans-serif; font-size: 11.0pt; line-height: 107%; mso-ansi-language: ES; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">El estándar IEEE802.3 definió inicialmente las reglas
para un MII con 4 líneas para cada dirección de señal y muchas líneas de
control. El estándar más utilizado en este momento es la Interfaz Independiente
Media Reducida que, al duplicar el reloj y compartir algunas líneas de control,
se reduce a un número más razonable de líneas de E / S para el periférico MAC
de MCU. Debido a una comunicación de 50MHz con niveles de borde afilados,
también las pistas de PCB de esta parte del circuito deben diseñarse cuidadosamente.
Aunque no se requiere una coincidencia de longitud, deben mantenerse lo más
cortos posible, con la línea del reloj posiblemente más larga que las líneas de
datos.</span>Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-41576990765694667002016-03-20T08:42:00.002-07:002016-03-20T08:42:49.490-07:00COPYPASTE (p24fj128ga010)<i><b>Configuración UART más interrupción:</b></i><br />
<br />
<ol>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #339933;">#include <p24fj128ga010.h></span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
_CONFIG1<span style="color: #009900;">(</span> JTAGEN_OFF <span style="color: #339933;">&</span> GCP_OFF <span style="color: #339933;">&</span> GWRP_OFF <span style="color: #339933;">&</span> BKBUG_OFF <span style="color: #339933;">&</span> COE_OFF <span style="color: #339933;">&</span> ICS_PGx2 <span style="color: #339933;">&</span> FWDTEN_OFF <span style="color: #339933;">&</span> WINDIS_OFF <span style="color: #339933;">&</span> FWPSA_PR128 <span style="color: #339933;">&</span> WDTPS_PS32768<span style="color: #009900;">)</span><span style="color: #339933;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
_CONFIG2<span style="color: #009900;">(</span> FNOSC_PRI <span style="color: #339933;">&</span> FCKSM_CSDCMD <span style="color: #339933;">&</span> POSCMOD_HS <span style="color: #009900;">)</span><span style="color: #339933;">;</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #339933;">#include <uart.h></span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #993333;">char</span> DataUART<span style="color: #339933;">;</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #993333;">char</span> KbhitUART<span style="color: #339933;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;">/* ** *********************************************************************************** ** */</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #666666; font-style: italic;">// Definciones para calculo de Baud Rate.-</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #339933;">#define FCY 10000000 // MHz</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #339933;">#define BAUDRATE 9600</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #339933;">#define BRGHigh 1</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #339933;">#if BRGHigh</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #339933;">#define BRGVAL ((FCY/BAUDRATE)/4)-1</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #339933;">#else</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #339933;">#define BRGVAL ((FCY/BAUDRATE)/16)-1 </span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #339933;">#endif</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #666666; font-style: italic;">//__attribute__ ((__section__ (".text"), __space__(prog))) </span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #993333;">const</span> <span style="color: #993333;">char</span> Texto<span style="color: #009900;">[</span><span style="color: #009900;">]</span><span style="color: #339933;">=</span> <span style="color: red;">"Probando comunicación serial...<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>PIC24FJ128GA010 xD ...<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>"</span><span style="color: #339933;">;</span> </div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;">/* ** *********************************************************************************** ** */</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #993333;">void</span> __attribute__<span style="color: #009900;">(</span><span style="color: #009900;">(</span>__interrupt__<span style="color: #339933;">,</span> __shadow__<span style="color: #009900;">)</span><span style="color: #009900;">)</span> _U2RXInterrupt<span style="color: #009900;">(</span><span style="color: #993333;">void</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
DataUART<span style="color: #339933;">=</span>getcUART2<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
KbhitUART<span style="color: #339933;">=</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
_U2RXIF<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Borramos flag.</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #009900;">}</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;">/* ** *********************************************************************************** ** */</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #993333;">int</span> main <span style="color: #009900;">(</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span> argv<span style="color: #009900;">[</span><span style="color: #009900;">]</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;">/* ** Utilizando las funciones definidas en C30 ** */</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
OpenUART2<span style="color: #009900;">(</span>UART_EN <span style="color: #339933;">&</span> UART_IDLE_STOP <span style="color: #339933;">&</span> UART_IrDA_DISABLE <span style="color: #339933;">&</span> UART_MODE_SIMPLEX <span style="color: #339933;">&</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
UART_UEN_00 <span style="color: #339933;">&</span> UART_DIS_WAKE <span style="color: #339933;">&</span> UART_DIS_LOOPBACK <span style="color: #339933;">&</span> UART_UXRX_IDLE_ONE <span style="color: #339933;">&</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
UART_DIS_ABAUD <span style="color: #339933;">&</span> UART_NO_PAR_8BIT <span style="color: #339933;">&</span> UART_BRGH_FOUR <span style="color: #339933;">&</span> UART_1STOPBIT<span style="color: #339933;">,</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #208080;">0xFFFF</span> <span style="color: #339933;">&</span> UART_IrDA_POL_INV_ZERO <span style="color: #339933;">&</span> UART_SYNC_BREAK_DISABLED <span style="color: #339933;">&</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
UART_TX_ENABLE <span style="color: #339933;">&</span> UART_INT_RX_CHAR <span style="color: #339933;">&</span> UART_ADR_DETECT_DIS <span style="color: #339933;">&</span> UART_RX_OVERRUN_CLEAR<span style="color: #339933;">,</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
BRGVAL<span style="color: #009900;">)</span><span style="color: #339933;">;</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
ConfigIntUART2<span style="color: #009900;">(</span>UART_RX_INT_EN <span style="color: #339933;">&</span> UART_RX_INT_PR1 <span style="color: #339933;">&</span> UART_TX_INT_DIS <span style="color: #339933;">&</span> UART_TX_INT_PR0 <span style="color: #009900;">)</span><span style="color: #339933;">;</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;">/*U2MODEbits.USIDL=1; // Al pasar al modo Sleep, apagar modulo.</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2MODEbits.IREN=0; // Codificacion/decodificacion IrDA deshabilitado.</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2MODEbits.RTSMD=1; // RTS en modo simple.</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2MODEbits.UEN=0b00; // Tx/Rx habilitado, CTS/RTS deshabilitados.</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2MODEbits.WAKE=0; // Wake-up deshabilitado.</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2MODEbits.LPBACK=0; // Modo LoopBack deshabilitado.</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2MODEbits.ABAUD=0; // Auto-Baud rate deshabilitado.</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2MODEbits.RXINV=0; // Modo normal de pin RX, en reposo = 1.</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2MODEbits.BRGH=BRGHigh; // Mode seleccionado en define.-</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2MODEbits.PDSEL=0b00; // 8 bits- sin paridad.</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2MODEbits.STSEL=0; // 1 bit de Stop.</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2STAbits.UTXISEL1=1; // Interrupcion por transimision no usada.</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2STAbits.UTXISEL0=1; // Interrupcion por transimision no usada.</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2STAbits.UTXINV=0; // Pin Tx en reposo igual a 1.</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2STAbits.UTXBRK=0; // Break deshabilitado.</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2STAbits.URXISEL=0b00; // Interrumpir cuando se recibe un caracter.</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2STAbits.ADDEN=0; // Auto-Address deshabilitado.</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2STAbits.OERR=0; // Borramos bits de error por overflow.</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> </span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2BRG =BRGVAL; // Baud Rate determinado en defines.</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> IPC7bits.U2RXIP=0b01; // Fijamos nivel de prioridad.</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> IFS1bits.U2RXIF=0; // Borramos flag.</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> IEC1bits.U2RXIE=1; // habilitamos interrupcion por recepción.</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2MODEbits.UARTEN=1;// Encendemos modulo.</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;"> U2STAbits.UTXEN=1; // Transmision habilitada.*/</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
KbhitUART<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
putsUART2<span style="color: #009900;">(</span>Texto<span style="color: #009900;">)</span><span style="color: #339933;">;</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #b1b100;">while</span><span style="color: #009900;">(</span><span style="color: #0000dd;">1</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #b1b100;">if</span><span style="color: #009900;">(</span>KbhitUART<span style="color: #339933;">==</span><span style="color: #0000dd;">1</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
KbhitUART<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
putcUART2<span style="color: #009900;">(</span>DataUART<span style="color: #009900;">)</span><span style="color: #339933;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #009900;">}</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #009900;">}</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #009900;">}</span></div>
</li>
</ol>
Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-81258004769154259622016-03-20T08:41:00.002-07:002016-03-20T08:41:17.674-07:00COPYPASTE (p24fj128ga010)<em><strong>Configuración de timer 2y3 para formar timer de 32-bits, más interrupción:</strong></em><br />
<br />
<ol>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #339933;">#include <p24fj128ga010.h></span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
_CONFIG1<span style="color: #009900;">(</span> JTAGEN_OFF <span style="color: #339933;">&</span> GCP_OFF <span style="color: #339933;">&</span> GWRP_OFF <span style="color: #339933;">&</span> BKBUG_OFF <span style="color: #339933;">&</span> COE_OFF <span style="color: #339933;">&</span> ICS_PGx2 <span style="color: #339933;">&</span> FWDTEN_OFF <span style="color: #339933;">&</span> WINDIS_OFF <span style="color: #339933;">&</span> FWPSA_PR128 <span style="color: #339933;">&</span> WDTPS_PS32768<span style="color: #009900;">)</span><span style="color: #339933;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
_CONFIG2<span style="color: #009900;">(</span> FNOSC_PRI <span style="color: #339933;">&</span> FCKSM_CSDCMD <span style="color: #339933;">&</span> POSCMOD_HS <span style="color: #009900;">)</span><span style="color: #339933;">;</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;">/*#define FCY 20000000UL</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;">#include <libpic30.h>*/</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #339933;">#include <timer.h> </span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: grey; font-style: italic;">/* ***************************************************************** */</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #993333;">void</span> __attribute__<span style="color: #009900;">(</span><span style="color: #009900;">(</span>__interrupt__<span style="color: #339933;">,</span> __shadow__<span style="color: #009900;">)</span><span style="color: #009900;">)</span> _T3Interrupt<span style="color: #009900;">(</span><span style="color: #993333;">void</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
LATDbits.<span style="color: #202020;">LATD8</span><span style="color: #339933;">=</span>~LATDbits.<span style="color: #202020;">LATD8</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Cambiamos de estado pin F2.-</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
_T3IF <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Borramos flag.</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #009900;">}</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #993333;">int</span> main <span style="color: #009900;">(</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span> argv<span style="color: #009900;">[</span><span style="color: #009900;">]</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
TRISD<span style="color: #339933;">=</span><span style="color: #208080;">0xF0FF</span><span style="color: #339933;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
OpenTimer23<span style="color: #009900;">(</span>T23_ON <span style="color: #339933;">&</span> T2_IDLE_STOP <span style="color: #339933;">&</span> T2_GATE_OFF <span style="color: #339933;">&</span> T2_PS_1_1 <span style="color: #339933;">&</span> T2_SOURCE_INT<span style="color: #339933;">,</span><span style="color: #208080;">0x004C4B40</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
ConfigIntTimer23<span style="color: #009900;">(</span>T3_INT_PRIOR_1 <span style="color: #339933;">&</span> T3_INT_ON<span style="color: #009900;">)</span><span style="color: #339933;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
WriteTimer23<span style="color: #009900;">(</span><span style="color: #208080;">0x00</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #b1b100;">while</span><span style="color: #009900;">(</span><span style="color: #0000dd;">1</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #009900;">}</span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid #efefef; border-left: 1px solid #999; line-height: 16px; padding: 0 5px;"><div style="background: none; font: normal normal 1em/1.2em monospace; margin: 0; padding: 0; vertical-align: top;">
<span style="color: #009900;">}</span></div>
</li>
</ol>
Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-63740286847675246382016-03-20T08:38:00.002-07:002016-03-20T08:40:02.824-07:00COPYPASTE (PIC24FJ128GA010)Esta sección de mi BLOG es simple, pequeños programas plantilla para cualquier integrado. Copielo, peguelo, compilelo y transfieralo. (tecnica del jugar aprendiendo)<br />
<br />
<strong><em>Titilar leds, modificación y utilización de delays en libpic30.h</em></strong><br />
<ol>
<li style="background-color: white; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"><span style="color: #339933;">#include <p24fj128ga010.h></span></span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;">_CONFIG1<span style="color: #009900;">(</span> JTAGEN_OFF <span style="color: #339933;">&</span> GCP_OFF <span style="color: #339933;">&</span> GWRP_OFF <span style="color: #339933;">&</span> BKBUG_OFF <span style="color: #339933;">&</span> COE_OFF <span style="color: #339933;">&</span> ICS_PGx2 <span style="color: #339933;">&</span> FWDTEN_OFF <span style="color: #339933;">&</span> WINDIS_OFF <span style="color: #339933;">&</span> FWPSA_PR128 <span style="color: #339933;">&</span> WDTPS_PS32768<span style="color: #009900;">)</span><span style="color: #339933;">;</span></span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;">_CONFIG2<span style="color: #009900;">(</span> FNOSC_PRI <span style="color: #339933;">&</span> FCKSM_CSDCMD <span style="color: #339933;">&</span> POSCMOD_HS <span style="color: #009900;">)</span><span style="color: #339933;">;</span></span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"><span style="color: #339933;">#define FCY 10000000UL</span></span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"><span style="color: #339933;">#include <libpic30.h></span></span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"><span style="color: grey; font-style: italic;">/* ** Modificando en libpic30.h ** */</span></span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"><span style="color: grey; font-style: italic;">/*</span></span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"><span style="color: grey; font-style: italic;">#if !defined(FCY)</span></span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"><span style="color: grey; font-style: italic;"> extern void __delay_ms(unsigned long);</span></span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"><span style="color: grey; font-style: italic;"> extern void __delay_us(unsigned long);</span></span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"><span style="color: grey; font-style: italic;">#else</span></span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"><span style="color: grey; font-style: italic;"> #define __delay_ms(d) __delay32( (unsigned long long) (d)*(FCY)/1000)</span></span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"><span style="color: grey; font-style: italic;"> #define __delay_us(d) __delay32( (unsigned long long) (d)*(FCY)/1000000)</span></span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"><span style="color: grey; font-style: italic;"> #define __delay_s(d) __delay32( (unsigned long) (d)*(FCY))</span></span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"><span style="color: grey; font-style: italic;">#endif</span></span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"><span style="color: grey; font-style: italic;">*/</span></span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"><span style="color: #993333;">int</span> main <span style="color: #009900;">(</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span> argv<span style="color: #009900;">[</span><span style="color: #009900;">]</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span></span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"> </span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"> </span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"> TRISF<span style="color: #339933;">=</span><span style="color: #208080;">0xFFF3</span><span style="color: #339933;">;</span></span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"> </span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"> LATFbits.<span style="color: #202020;">LATF2</span><span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span></span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"> LATFbits.<span style="color: #202020;">LATF3</span><span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span></span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"> </span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"> <span style="color: #b1b100;">while</span><span style="color: #009900;">(</span><span style="color: #0000dd;">1</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span></span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"> LATFbits.<span style="color: #202020;">LATF2</span><span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span></span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"> __delay_ms<span style="color: #009900;">(</span><span style="color: #0000dd;">500</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span></span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"> LATFbits.<span style="color: #202020;">LATF2</span><span style="color: #339933;">=</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span></span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"> __delay_ms<span style="color: #009900;">(</span><span style="color: #0000dd;">500</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span></span></div>
</li>
<li style="background-color: white; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"> <span style="color: #009900;">}</span></span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: white; border-bottom: 1px solid rgb(239, 239, 239); border-left: 1px solid rgb(153, 153, 153); line-height: 16px; padding: 0px 5px;"><div style="background: transparent none repeat scroll 0% 0%; font-family: monospace; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-synthesis: weight style; font-variant: normal; font-weight: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="font-size: small;"><span style="color: #009900;">}</span></span></div>
</li>
</ol>
Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-61887663974433155512016-03-04T06:22:00.001-08:002016-03-04T06:22:42.041-08:00RTOS (Programa sencillo)<div class="MsoNormal" style="background: white; line-height: 13.5pt; margin-bottom: 6.75pt;">
Saludos les dejo un programa interesante y muy sencillo de comprender la lógica de RTOS/CCS Pic.</div>
<div class="MsoNormal" style="background: white; line-height: 13.5pt; margin-bottom: 6.75pt;">
<span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#include <18F452.h></span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#FUSES XT</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#FUSES NOWDT</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#FUSES PROTECT</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#use delay(clock=4M)</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#use RTOS(timer=0,minor_cycle=1ms) </span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#include <lcd.c></span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">// DEFINICIONES DE PIN A USAR PARA LOS SEMAFOROS</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#define ON PIN_A0</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#define A2 PIN_B0</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#define V2 PIN_B1</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#define R3 PIN_B2</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#define A3 PIN_B3</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#define V3 PIN_B4</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#define R4 PIN_B5</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#define A4 PIN_B6</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#define V4 PIN_B7</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#define R1 PIN_C4</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#define A1 PIN_C5</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#define V1 PIN_C6</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#define R2 PIN_C7</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">// TAREAS </span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#task (rate=1ms,max=1ms)</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">void INICIO();</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#task (rate=1ms,max=1ms,enabled=false)</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">void ROJO1();</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#task (rate=10s,max=1ms,enabled=false) </span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">void AMARILLO1();</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#task (rate=2s,max=1ms,enabled=false) </span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">void VERDE1();</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#task (rate=6s,max=1ms,enabled=false) </span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">void AMARILLO12();</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">void main()</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">{ </span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> setup_timer_0(RTCC_INTERNAL| RTCC_DIV_1);</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> rtos_run();</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">}</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">void INICIO()</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">{</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> if(input(ON)) </span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> rtos_enable(ROJO1); </span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">}</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">void ROJO1()</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">{</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">rtos_disable(INICIO);</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">output_low(A1);</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">output_high(R1);</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">rtos_disable(ROJO1);</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">rtos_enable(AMARILLO1); </span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">}</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">void AMARILLO1()</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">{</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">output_low(R1);</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">output_high(A1);</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">rtos_disable(AMARILLO1); </span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">rtos_enable(VERDE1);</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">}</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">void VERDE1()</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">{</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">output_low(A1);</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">output_high(V1);</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">rtos_disable(VERDE1);</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">rtos_enable(AMARILLO12);</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">}</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">void AMARILLO12()</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">{</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">output_low(V1);</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">output_high(A1);</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">rtos_disable(AMARILLO12); </span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">rtos_enable(ROJO1);</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">}</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">/*</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">SEGUNDO SEMAFORO</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">*/</span></div>
Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-81823281077550757242016-03-04T05:50:00.001-08:002016-03-04T05:50:22.839-08:00¿Por q FREERTOS?<br />
<table style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;"><tbody>
<tr><td><div class="round_corner_shadow_box_container" id="round_corner_shadow_box_container_id">
<div class="round_corner_shadow_box_shadow" style="background-color: #cccccc; border-radius: 15px; bottom: 4px; position: relative; right: 4px;">
<div class="round_corner_shadow_box_content" style="background-color: white; border-radius: 15px; border: 2px solid rgb(113, 149, 208); bottom: 4px; color: black; padding: 0.5em; position: relative; right: 4px;">
<h3 style="color: #1a3065; font-size: 18px; line-height: normal;">
¿Sabías?</h3>
<ul style="line-height: 1.5em;" type="circle">
<li>FreeRTOS se descarga cada 260 segundos (en promedio).</li>
<li><span style="color: red;"><b>FreeRTOS vino arriba en la clase en los </b></span><b><a href="http://www.eetimes.com/document.asp?doc_id=1263083" style="color: #0000ee; text-decoration: none;" target="_blank">estudios de mercado de sistemas embebidos EETimes 2011, 2012, 2013, 2014 y 2015</a></b> en dos categorías: Actualmente, el RTOS kernel está utilizando, y el núcleo RTOS siendo considerado para el próximo proyecto!</li>
<li>FreeRTOS ofrece <em><b>menores riesgos del proyecto</b></em> y un <em><b>coste total de propiedad más bajo</b></em>que las alternativas comerciales debido a que:<ul type="square">
<li>Está <a href="http://www.freertos.org/FreeRTOS_Support_Forum_Archive/freertos_support_forum_archive_index.html" style="color: #0000ee; text-decoration: none;">totalmente compatible</a> y documentado.</li>
<li>La mayoría de las personas toman productos al mercado sin tener que ponerse en contacto con nosotros, pero con la total tranquilidad de que podrían optar por cambiar a uso comercial totalmente indemnizada (con soporte dedicado) en cualquier momento.</li>
</ul>
</li>
<li>Algunos puertos FreeRTOS <a href="http://www.freertos.org/a00110.html#kernel_priority" style="color: #0000ee; text-decoration: none;">Nunca deshabilitar completamente las interrupciones</a> .</li>
<li>Como control de calidad estrictos, y para eliminar toda ambigüedad titularidad de la PI, <a href="http://www.freertos.org/differences-between-officially-supported-and-contributed-FreeRTOS-code.html" style="color: #0000ee; text-decoration: none;">código oficial FreeRTOS se separa de contribuciones de la comunidad</a> .</li>
<li>FreeRTOS tiene un modo de garrapatas menos a <a href="http://www.freertos.org/low-power-tickless-rtos.html" style="color: #0000ee; text-decoration: none;">apoyar directamente a aplicaciones de baja potencia</a> .</li>
<li>FreeRTOS se descargó> 113000 veces en 2014.</li>
<li>FreeRTOS está diseñado para ser simple y fácil de usar: sólo 3 archivos de origen que son comunes a todos los puertos RTOS, y el archivo de fuente específica de un microcontrolador son obligatorias, y su API está diseñado para ser simple e intuitivo.</li>
<li>El puerto RL78 puede crear tareas 13, 2 colas y los temporizadores de software 4 en menos de 4 Kbytes de RAM!</li>
</ul>
</div>
</div>
</div>
</td></tr>
</tbody></table>
<br />
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<a href="https://www.blogger.com/null" name="whychoose" style="color: #0000ee;"></a></div>
<h3 style="background-color: white; color: #1a3065; font-family: arial; font-size: 18px;">
<a href="https://www.blogger.com/null" name="whychoose">¿Por qué elegir FreeRTOS?</a></h3>
<div align="center" class="text_ad" style="background-color: white; color: #202020; font-family: arial; font-size: 14px;">
<i>. "Es probablemente seguro decir en este punto que FreeRTOS pasa por más" revisión por pares "que cualquier otro RTOS disponible en el planeta lo he utilizado en varios proyectos - uno de los cuales era un entorno multiprocesador que utiliza más de 64 procesadores y . necesaria para hacer funcionar de forma fiable durante meses El núcleo RTOS tuvo un buen desempeño Tome FreeRTOS para dar una vuelta "..</i><span class=""> - John Westmoreland</span></div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<b>FreeRTOS es una opción libre de riesgo, proporcionando el mejor de los mundos:</b> FreeRTOS es verdaderamente libre y <a href="http://www.freertos.org/FreeRTOS_Support_Forum_Archive/freertos_support_forum_archive_index.html" style="color: #0000ee; text-decoration: none;">apoyado</a> , incluso cuando se utiliza en aplicaciones comerciales. La <a href="http://www.freertos.org/a00114.html" style="color: #0000ee; text-decoration: none;">licencia de código abierto FreeRTOS</a> no plantea ningún riesgo para su software propietario. Usted puede tomar un producto al mercado utilizando FreeRTOS sin ni siquiera hablar con nosotros, y mucho menos pagar ningún cargo, y miles de personas hacer precisamente eso. <span class="">Si, en cualquier momento, que le gustaría recibir copia de seguridad adicional, o si su equipo legal requiere garantías adicionales por escrito o indemnización, entonces hay una sencilla ruta de actualización comercial de bajo costo. </span>Su tranquilidad viene con el conocimiento que se puede optar por tomar la ruta comercial en cualquier momento que elija.</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
Aquí hay algunas razones por <a href="http://www.freertos.org/RTOS.html" style="color: #0000ee; text-decoration: none;">FreeRTOS</a> es una buena opción para su próxima aplicación - FreeRTOS ...</div>
<ul style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;" type="disc">
<li>Proporciona una solución única e independiente para muchas arquitecturas diferentes y herramientas de desarrollo.</li>
<li>Se sabe que es fiable. La confianza está asegurada por las actividades realizadas por el proyecto hermano SafeRTOS.</li>
<li>Es <a href="http://www.freertos.org/FreeRTOS_Features.html" style="color: #0000ee; text-decoration: none;">rico en características</a> y aún en fase de desarrollo activo continuo.</li>
<li>Tiene un mínimo de ROM, RAM y el procesamiento de arriba. Típicamente, una imagen binaria kernel RTOS estará en la región de 6K a 12K bytes.</li>
<li>Es muy simple - el núcleo del núcleo RTOS está contenida en <a href="http://www.freertos.org/a00017.html" style="color: #0000ee; text-decoration: none;">sólo 3 archivos C</a> . La mayoría de los muchos archivos incluidos en el archivo de descarga .zip se refieren únicamente a las numerosas aplicaciones de demostración.</li>
<li>Es verdaderamente libre para su uso en aplicaciones comerciales (ver <a href="http://www.freertos.org/a00114.html" style="color: #0000ee; text-decoration: none;">condiciones de la licencia</a>para más detalles).</li>
<li>Viene con una portabilidad, desarrollo de la plataforma, o el servicio de desarrollo de aplicaciones si se requiere.</li>
<li>Está bien establecida con una gran base de usuarios y cada vez mayor.</li>
<li>Contiene un ejemplo pre-configurado para cada puerto. No hay necesidad de encontrar la manera de configurar un proyecto - sólo tiene que descargar y compilar!</li>
<li>Tiene una excelente, vigilados y activo libre <a href="http://www.freertos.org/FreeRTOS_Support_Forum_Archive/freertos_support_forum_archive_index.html" style="color: #0000ee; text-decoration: none;">foro de soporte</a> .</li>
<li>Tiene la seguridad de que el soporte comercial es si se requiere disponibles.</li>
<li>Proporciona una amplia documentación.</li>
<li>Es muy escalable, simple y fácil de usar.</li>
<li>FreeRTOS ofrece una alternativa más pequeña y más fácil el procesamiento en tiempo real para aplicaciones en las que eCOS, Linux embebido (o Linux de Tiempo Real) e incluso uCLinux no caben, no son apropiados o no están disponibles.</li>
</ul>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /></div>
<h3 style="background-color: white; color: #1a3065; font-family: arial; font-size: 18px;">
<a href="https://www.blogger.com/null" name="mailing_list">FreeRTOS lista de correo de anuncios</a></h3>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">Puede mantenerse al día con anuncios FreeRTOS muy ocasionales conectándose a la lista de correo FreeRTOS. Los correos electrónicos son poco frecuentes y mantenerse cortas. Respetamos su privacidad, por lo que no proporcionan direcciones de correo electrónico de terceros. Cada correo electrónico enviado contiene instrucciones para cancelar la suscripción.</span><br />
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<b>NUEVO:</b> Usted también puede ahora <a href="https://twitter.com/intent/follow?screen_name=real_FreeRTOS" style="color: #0000ee; text-decoration: none;">seguir FreeRTOS en Twitter</a> para las notificaciones instantáneas.</div>
Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-71961142613291196412016-03-04T05:25:00.000-08:002016-03-04T05:46:35.183-08:00Hola Mundo RTOS.Excelente resumen sacado de los compañeros de todopic, faltando algunos detallitos pero excelente para el blog de solo RTOS Tutoriales.<br />
<br />
<div>
<span class="bbc_size" style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 16pt; line-height: 1.4em;"><strong>1) Hola mundo con RTOS</strong></span><br />
<span class="bbc_size" style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 16pt; line-height: 1.4em;"><strong><br /></strong></span>
<span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">Después de teorizar un poco sobre los Sistemas Operativos, vamos a introducirnos en la programación de aplicaciones empleando un RTOS.</span><br />
<br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" />
<span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">En nuestro caso, para comenzar, utilizaremos el RTOS que viene con el compilador de CCS. Las razones de mi elección las expongo a continuación:</span><br />
<ul class="bbc_list" style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">
<li>Sencillez en la implementación de aplicaciones</li>
<li>El RTOS está integrado en el propio compilador de CCS</li>
<li>Abundante experiencia en el foro con este compilador</li>
<li>Gran cantidad de dispositivos soportados por el compilador de CCS</li>
</ul>
<br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" />
<span class="bbc_size" style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12pt; line-height: 1.4em;"><strong>Introducción al RTOS de CCS</strong></span><br />
<span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">La versión del compilador que tengo instalada en estos momentos es la 3.249, así que si en versiones posteriores han aparecido nuevas características, les ruego que lo informen para tomar las debidas providencias en el momento oportuno, y comenzar a utilizar esas nuevas características.</span><br />
<br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" />
<span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">El RTOS de CCS es un Sistema Operativo de Tiempo Real que implementa la técnica de </span><strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">multiprocesamiento cooperativo</strong><span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;"> (non preemptive), por lo que es responsabilidad del programador asegurarse de que el control del procesador retorna al </span><strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">planificador de tareas</strong><span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;"> en algún momento. Así que cuando programemos nuestra aplicación, tenemos que asegurarnos de que no llamamos a una función que se queda esperando por algún evento largo como es el caso de </span><span class="bbc_color" style="background-color: #e7eaef; color: green; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">gets()</span><span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">, o dentro de un lazo infinito o demasiado extenso.</span><br />
<br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" />
<strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"><span class="bbc_size" style="font-size: 12pt; line-height: 1.4em;">Planificador de tareas</span></strong><br />
<span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">Uno de los elementos fundamentales de cualquier SO es el planificador de tareas, éste señor es el administrador de nuestros recursos. Su misión fundamental es determinar dentro de las tareas que están listas para ejecutarse, a cuál de ellas le entrega el procesador. La política de planificación empleada por CCS no la conozco, pero eso no importa porque el RTOS funciona y para lo que queremos hacer, nos sirve bien.</span><br />
<br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" />
<strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"><span class="bbc_size" style="font-size: 12pt; line-height: 1.4em;">Directivas del preprocesador</span></strong><br />
<span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">Existen dos directivas del preprocesador para el uso del RTOS, ellas son:</span><br />
<ul class="bbc_list" style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">
<li><span class="bbc_color" style="color: green;">#USE RTOS</span>: Se utiliza para indicarle al compilador que se va a utilizar el RTOS</li>
<li><span class="bbc_color" style="color: green;">#TASK</span>: Se utiliza para indicarle al compilador se la función definida a continuación es una tarea a ejecutar por el RTOS</li>
</ul>
<br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" />
<br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" />
<span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">Vamos a ver más detenidamente cada una de las directivas, así como sus parámetros de configuración:</span><br />
<span class="bbc_color" style="background-color: #e7eaef; color: green; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;"><span class="bbc_size" style="font-size: 12pt; line-height: 1.4em;">#USE RTOS</span></span><br />
<span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">Opciones del RTOS:</span><br />
<strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">timer</strong><span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">: especifica que temporizador, de los disponibles, es el que se utilizará para la ejecución de las tareas. Este temporizador solamente debe ser utilizado por el RTOS y típicamente se escoge Timer0</span><br />
<strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">minor_cycle</strong><span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">: especifica la cantidad de tiempo mínima que una tarea tendrá para ejecutarse, y los tiempos de ejecución de cada tarea deben ser múltiplos de esta cantidad. Si por ejemplo decimos que el tiempo mínimo de ejecución para todas las tareas es de 1ms, debemos conocer que cada tarea se ejecutará, en menos tiempo que este. Lo realmente importante de este dato es que ayuda a establecer la frecuencia con que se ejecutan las tareas, luego veremos un ejemplo de esto. Este parámetro, si no se especifica, es calculado por el compliador en el momento de la compilación.</span><br />
<strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">statistics</strong><span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">: le indica al compilador que lleve las estadísticas de las tareas, esto sirve para conocer que tiempo consume cada tarea en ejecutarse, sin embargo como veremos más adelante, la estadística realmente importante es la que nos indica si nuestra tarea se ha sobrepasado en su tiempo mínimo de ejecución.</span><br />
<br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" />
<span class="bbc_size" style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12pt; line-height: 1.4em;"><span class="bbc_color" style="color: green;">#TASK</span></span><br />
<span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">Opciones para las tareas:</span><br />
<strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">rate</strong><span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">: especifica con que frecuencia se ejecuta la tarea, este parámetro debe ser igual a minor_cycle de #use_rtos o un múltiplo de este valor.</span><br />
<strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">max</strong><span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">: especifica que cantidad de tiempo debe consumir esta tarea en su ejecución, si se sobrepasa este tiempo y están activadas las estadísticas, entonces esta tarea es marcada con el valor overrun. Este parámetro es útil para informar al programador que una tarea se ha pasado de su tiempo de ejecución, y si el RTOS fuera de tiempo compartido seguramente especificaría el tiempo en que el planificador le retira el procesador para dárselo a otra tarea.</span><br />
<strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">queue</strong><span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">: especifica el tamaño de la cola de mensajes de la tarea. Si la tarea no recibe mensajes, entonces debe dejarse en blanco para no consumir memoria RAM innecesariamente.</span><br />
<br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" />
<span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">Hasta aquí hemos visto una pequeña explicación de las directivas para utilizar el RTOS. Sin embargo, la utilidad de esto es mejor verla con un ejemplo.</span><br />
<br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" />
<strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"><span class="bbc_size" style="font-size: 12pt; line-height: 1.4em;">Funciones del RTOS</span></strong><br />
<span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">EL RTOS de CCS ofrece un conjunto de funciones que veremos cada una en su momento y con sus debidos ejemplos. Sin embargo hoy utilizaremos solamente la función rtos_run(), que le indica al planificador que comience a ejecutar las tareas.</span><br />
<br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" />
<strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"><span class="bbc_size" style="font-size: 12pt; line-height: 1.4em;">El ejemplo</span></strong><br />
<span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">Se quiere implementar una aplicación en un PIC16F877, donde se utilice el RTOS para transmitir por el puerto serie de este uC, tres cadenas de caracteres. Cada cadena será transmitida desde dentro de una tarea del RTOS y tendrán el formato “Ejecutada tarea #”. Las especificaciones de tiempo del sistema y de cada tarea son las siguientes:</span><br />
<div>
<span style="font-family: "verdana" , "arial" , "helvetica" , sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;"><br /></span></span></div>
</div>
<div>
<ul class="bbc_list" style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">
<li>Temporizador para el RTOS: Timer0</li>
<li>Tiempo mínimo en que debe ejecutarse una tarea: 10ms</li>
<li>Frecuencia de ejecución de la Tarea 1: 1seg, tiempo para ejecutar: 10ms</li>
<li>Frecuencia de ejecución de la Tarea 2: 2seg, tiempo para ejecutar: 5ms</li>
<li>Frecuencia de ejecución de la Tarea 3: 3seg, tiempo para ejecutar: 250us</li>
</ul>
</div>
<div>
<span style="font-family: "verdana" , "arial" , "helvetica" , sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;"><br /></span></span></div>
<div>
<span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">El código lo pongo a continuación y posteriormente les doy una explicación:</span><br />
<div class="codeheader" style="background-color: #e7eaef; color: #666666; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small; font-weight: bold; line-height: 17.472px; padding: 0px 0.3em;">
Código: C++</div>
<div class="cpp geshi" style="background: rgb(255, 255, 255); border: 1px solid rgb(170, 170, 170); font-family: monospace; font-size: 13px; line-height: 18px; margin: 1px auto; max-height: 306px; overflow: auto; white-space: pre-wrap; width: 1054.65px; word-wrap: break-word;">
<ol>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#include "D:\Documentos\Projects\RTOS\RTOS.h"</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#use RTOS(timer=0, minor_cycle=10ms) //temporizador Timer0, tiempo mínimo de ejecución de cada tarea 10ms</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">int8</span> test<span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//Definición de las prototipos de función de las tareas</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#task (rate=1s, max=10ms) //Ejecutar cada 1 segundo y consumir como máximo 10ms</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> Tarea1<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#task (rate=2s, max=5ms) //Ejecutar cada 2 segundos y consumir como máximo 5ms</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> Tarea2<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#task (rate=3s, max=250us) //Ejecutar cada 3 segundo y consumir como máximo 250us</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> Tarea3<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> main<span style="color: green;">(</span><span style="color: green;">)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
setup_timer_0<span style="color: green;">(</span>RTCC_INTERNAL<span style="color: #000040;">|</span>RTCC_DIV_1<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_run<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//A partir de aquí comenzará la ejecución de las tareas</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//Implementación de las tareas</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> Tarea1<span style="color: green;">(</span><span style="color: green;">)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #0000dd;">printf</span><span style="color: green;">(</span><span style="color: red;">"Ejecutada tarea 1<span style="color: #000099; font-weight: bold;">\r</span>"</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> Tarea2<span style="color: green;">(</span><span style="color: green;">)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #0000dd;">printf</span><span style="color: green;">(</span><span style="color: red;">"Ejecutada tarea 2<span style="color: #000099; font-weight: bold;">\r</span>"</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> Tarea3<span style="color: green;">(</span><span style="color: green;">)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #0000dd;">printf</span><span style="color: green;">(</span><span style="color: red;">"Ejecutada tarea 3<span style="color: #000099; font-weight: bold;">\r</span>"</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
</ol>
</div>
<br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" />
<br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" />
<span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">Este código funciona y si lo simulan con el Proteus comprobarán que las cadenas salen por el puerto serie. Como pueden ver es un ejemplo sencillo pero que muestra el funcionamiento del RTOS. Al ejecutarlo pueden comprobar que primero se ejecuta la Tarea 1, pero después comprobarán que las tareas no se ejecutan en orden secuencial porque la Tarea 2 se ejecutará cada 2 segundos y la Tarea 3 cada 3 segundos.</span><br />
<br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" />
<span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">La no ejecución secuencial de cada tarea se debe al parámetro rate de la directiva #task, que le dice al planificador con que frecuencia ejecutar cada tarea. Este programa puede ser fácilmente modificado para cualquier aplicación específica, un ejemplo que se me ocurre es la lectura de teclados y eliminación de rebotes.</span><br />
<span style="background-color: #e7eaef; font-family: "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.48px; line-height: 17.472px;">Como tarea les dejo que elaboren un programa sin el uso del RTOS que haga lo mismo que este. </span></div>
<div>
<span style="font-family: "verdana" , "arial" , "helvetica" , sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;"><br /></span></span>
<span style="font-family: "verdana" , "arial" , "helvetica" , sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;"><strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"><span class="bbc_size" style="font-size: 16pt; line-height: 1.4em;">2) Controlando la ejecución de las tareas</span></strong></span></span><br />
<span style="font-family: "verdana" , "arial" , "helvetica" , sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;"><span style="font-size: 21.3333px; line-height: 29.8667px;"><b><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif;" /></b></span><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Hola, en la pasada entrega sobre programación con el RTOS de CCS vimos como es que el planificador programaba la ejecución de las tareas que estaban activas para ser ejecutadas. Pero como es lógico en todo momento las tareas no tienen por que encontrarse en condiciones de ser ejecutadas, a veces hace falta poner a “dormir” una tarea y “despertarla” cuando hace falta que se ejecute.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Para lograr este objetivo el RTOS de CCS nos ofrece dos funciones </span><span class="bbc_color" style="background-color: #e7eaef; color: green; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">RTOS_DISABLE( ) </span><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">y </span><span class="bbc_color" style="background-color: #e7eaef; color: green; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">RTOS_ENABLE( )</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Al crear una tarea el RTOS la marca como activa (enable), y cuando comienza a ejecutarse el planificador de tareas la pondrá en la cola de ejecución para ejecutarla cuando le llega su turno. Sin embargo en muchas ocasiones notaremos que no hace falta ejecutar la tarea hasta que se cumplan ciertas condiciones.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Este es un mecanismo simple, que sin el uso del RTOS controlaríamos mediante una bandera (flag), y la implementación de una función a la cual llamaremos si se cumple la condición de su ejecución. </span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Hasta el momento el RTOS no nos ofrece ninguna ventaja respecto al método tradicional, sin embargo combinemos esta característica con lo aprendido en el ejemplo de la entrega anterior y comprobaremos que si hay ventajas, y por cierto nada despreciables.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">La ventaja principal con respecto al método tradicional consiste en que usted hace la consulta para comprobar si hay que ejecutar la función, sin embargo ahora solamente le dice al RTOS, habilita a la tarea tal y ponla a ejecutarse cuando le corresponda y se olvida de todos los problemas asociados respecto al tema de cuando le corresponde ejecutarse la tarea y demás. ¿Alguien se acuerda de los molestos temporizadores, banderas, registros y Dios sabe cuantos engendros de control de ejecución condicional para una función estándar?</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">De forma similar a como se le dice al planificador que la tarea tal debe ser ejecutada, podemos avisarle para que no la ejecute.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Veamos esto con un ejemplo:</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Tenemos una aplicación en la que hemos colocado tres LEDs uno rojo en RB0, uno verde en RB1 y otro amarillo en RB2. Vamos a encender y apagar los LEDs con una frecuencia determinada y a intervalos regulares según el siguiente esquema:</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Led Rojo parpadea con una frecuencia de 250ms por un período de 5s, el resto apagado</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Led Verde parpadea con una frecuencia de 350ms por un período de 10s, el resto apagado</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Led Amarillo parpadea con una frecuencia de 450ms por un período de 15s, el resto apagado</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Todos los LED parpadean, cada uno con su frecuencia correspondiente durante 5s</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Comezamos por el LED rojo nuevamente y repetimos el ciclo</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"><span class="bbc_size" style="font-size: 14pt; line-height: 1.4em;">Programa</span></strong><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">La solución que les propongo es la siguiente:</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">3 tareas para controlar el parpadeo de cada LED y el tiempo que se ejecutan</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">1 tarea para controlar el tiempo en que todos los LEDs parpadean.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Tenemos un total de 4 tareas en la aplicación y el control de la ejecución será el siguiente:</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Al inicio solamente la tarea LED_R estará habilitada, una vez que LED_R ha concluido inicia la tarea LED_V y se autodeshabilita.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Cuando LED_V concluye habilita LED_A y se autodeshabilita.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Cuando LED_V concluye habilita LEDS y se autodeshabilita.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Cuando LEDS se inicia por primera vez habilita LED_R, LED_V y LED_A cuando le toca de nuevo el turno se autodeshabilita y deshabilita a LED_V y LED_A</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Veamos el código:</span></span></span><br />
<div class="codeheader" style="background-color: #e7eaef; color: #666666; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small; font-weight: bold; line-height: 17.472px; padding: 0px 0.3em;">
Código: C++</div>
<div class="cpp geshi" style="background: rgb(255, 255, 255); border: 1px solid rgb(170, 170, 170); font-family: monospace; font-size: 13px; line-height: 18px; margin: 1px auto; max-height: 306px; overflow: auto; white-space: pre-wrap; width: 1054.65px; word-wrap: break-word;">
<ol>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#include "D:\Documentos\Projects\RTOS\RTOS.h"</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//Como el reloj de este micro se ha puesto a correr con 20MHz el Timer0 no tiene</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//mayor resolución que 10ms, es por eso que el tiempo mínimo de ejecución es de 10ms</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#use RTOS(timer=0, minor_cycle=10ms)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
int1 iB0, iB1, iB2<span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
int1 iLEDS <span style="color: navy;">=</span> <span style="color: #0000dd;">0</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">int8</span> iCountR <span style="color: navy;">=</span> <span style="color: #0000dd;">0</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">int8</span> iCountV <span style="color: navy;">=</span> <span style="color: #0000dd;">0</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">int8</span> iCountA <span style="color: navy;">=</span> <span style="color: #0000dd;">0</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">int8</span> iCount <span style="color: navy;">=</span> <span style="color: #0000dd;">0</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#task (rate=10ms, max=10ms)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> Task_Disabler<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#task (rate=250ms, max=10ms)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> LED_R<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#task (rate=350ms, max=10ms)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> LED_V<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#task (rate=450ms, max=10ms)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> LED_A<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#task (rate=5s, max=10ms)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> LEDS<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> main<span style="color: green;">(</span><span style="color: green;">)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
setup_timer_0<span style="color: green;">(</span>RTCC_INTERNAL<span style="color: #000040;">|</span>RTCC_DIV_1<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_run<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//esta es una función truculenta porque las tareas no pueden crearse deshabilitadas</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//y no se pueden deshabilitar hasta que el RTOS esté funcionando. Lo considero una</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//deficiencia sustancial de este RTOS</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> Task_Disabler<span style="color: green;">(</span><span style="color: green;">)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_disable<span style="color: green;">(</span>LED_V<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_disable<span style="color: green;">(</span>LED_A<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_disable<span style="color: green;">(</span>LEDS<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_disable<span style="color: green;">(</span>Task_Disabler<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//cada tarea tiene un contador para llevar la cantidad de veces que se pasa por la</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//función y cuando se cumple el tiempo establecido entonces habilita y deshabilita</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//las tareas correspondientes</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> LED_R<span style="color: green;">(</span><span style="color: green;">)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
iB0 <span style="color: navy;">=</span> <span style="color: #000040;">!</span>iB0<span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
output_bit<span style="color: green;">(</span> PIN_B0, iB0<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">if</span> <span style="color: green;">(</span>iCountR<span style="color: #000040;">++</span><span style="color: navy;">==</span><span style="color: #0000dd;">20</span><span style="color: green;">)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
iCountR <span style="color: navy;">=</span> <span style="color: #0000dd;">0</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_disable<span style="color: green;">(</span>LED_R<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_enable<span style="color: green;">(</span>LED_V<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> LED_V<span style="color: green;">(</span><span style="color: green;">)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
iB1 <span style="color: navy;">=</span> <span style="color: #000040;">!</span>iB1<span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
output_bit<span style="color: green;">(</span> PIN_B1, iB1<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">if</span> <span style="color: green;">(</span>iCountV<span style="color: #000040;">++</span><span style="color: navy;">==</span><span style="color: #0000dd;">27</span><span style="color: green;">)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
iCountV <span style="color: navy;">=</span> <span style="color: #0000dd;">0</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_disable<span style="color: green;">(</span>LED_V<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_enable<span style="color: green;">(</span>LED_A<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> LED_A<span style="color: green;">(</span><span style="color: green;">)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
iB2 <span style="color: navy;">=</span> <span style="color: #000040;">!</span>iB2<span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
output_bit<span style="color: green;">(</span> PIN_B2, iB2<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">if</span> <span style="color: green;">(</span>iCountA<span style="color: #000040;">++</span><span style="color: navy;">==</span><span style="color: #0000dd;">33</span><span style="color: green;">)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
iCountA <span style="color: navy;">=</span> <span style="color: #0000dd;">0</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_disable<span style="color: green;">(</span>LED_A<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_enable<span style="color: green;">(</span>LEDS<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> LEDS<span style="color: green;">(</span><span style="color: green;">)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">if</span><span style="color: green;">(</span><span style="color: #000040;">!</span>iLEDS<span style="color: green;">)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_enable<span style="color: green;">(</span>LED_R<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_enable<span style="color: green;">(</span>LED_V<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_enable<span style="color: green;">(</span>LED_A<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
iLEDS <span style="color: navy;">=</span> <span style="color: #0000dd;">1</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">else</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_disable<span style="color: green;">(</span>LED_V<span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//Hay que habilitar y deshabilitar explícitamente</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_disable<span style="color: green;">(</span>LED_A<span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//cada tarea sobre todo LED_R que debe continuar</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_disable<span style="color: green;">(</span>LEDS<span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//ejecutándose otros 5 segundos más</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_enable<span style="color: green;">(</span>LED_R<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
iCountR <span style="color: navy;">=</span> <span style="color: #0000dd;">0</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
iCountV <span style="color: navy;">=</span> <span style="color: #0000dd;">0</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
iCountA <span style="color: navy;">=</span> <span style="color: #0000dd;">0</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
iLEDS <span style="color: navy;">=</span> <span style="color: #0000dd;">0</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
</ol>
</div>
<span style="font-family: "verdana" , "arial" , "helvetica" , sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;"><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Cuando corran y simulen el ejemplo verán que a veces los LEDs se quedan encendidos o apagados indistintamente, este es un problema del programa, ya que lo deseable sería que los LEDs se quedaran apagados cuando termina la función. Sin embargo lo he dejado así porque en el futuro vamos a ver cómo podemos hacer esto con las propias funciones del RTOS.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Como la vez anterior, les dejo de tarea hacerlo sin RTOS para ver como les queda, a mi llevó menos de dos horas elaborar el texto y escribir el código. Me imagino que sin RTOS me tardaría más de un día completo, consumiría un montón de páginas de explicación y otro montón para el código.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Este es un m'etodo simple, pero hay otros mucho más elaborados que iremos viendo poco a poco. La próxima entrega será yield() vs delay(), vamos a ver el método de las esperas eficientes. </span></span></span><br />
<span style="font-family: "verdana" , "arial" , "helvetica" , sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;"><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"><br /></span></span></span>
<span style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: large;"><span style="line-height: 17.472px;"><b>3) Yield vs delay</b></span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: large;"><span style="line-height: 17.472px;"><b><br /></b></span></span>
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;">¿Cuantas veces en nuestras aplicaciones tenemos que situar demoras para esperar la ocurrencia de un evento determinado? Por ejemplo, para eliminar rebotes en un teclado, esperar a que el conversor AD termine y quién sabe cuantas cosas más.</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;">Normalmente estas demoras se hacen poniendo al procesador a decrementar contadores y dar saltos recursivos como si fuese un loco. Durante todo el tiempo de la demora, nuestro microcontrolador, estará ocupado en perder el tiempo, y es por eso que a este mecanismo se le llama espera ocupada.</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;">Sin embargo un RTOS nos ofrece un conjunto de herramientas para eliminar este molesto inconveniente, el más sencillo de ellos es aquel que le permite a una tarea decirle al RTOS: ponme a dormir hasta que me toque de nuevo mi turno de ejecutarme. Para ese efecto el RTOS de CCS implementa la función rtos_yield().</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;">Este mecanismo es muy bueno puesto que mientras la tarea “se duerme” nuestro microcontrolador puede dedicarse a realizar otras tareas útiles y hacer de la espera ocupada una espera eficiente. Para la tarea que está dormida esto no representa nada, a ella le da lo mismo ocupar al procesador en hacer nada que en hacer algo productivo, sin embargo no ocurre lo mismo para el resto de las tareas que están esperando que se les entregue el procesador.</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;">Otro caso en que yield() nos puede ser útil es para entregar el procesador cuando nos hemos pasado de tiempo en la ejecución de alguna tarea. Ya sabemos que el RTOS de CCS es cooperativo, por lo que si una tarea consume más tiempo de la cuenta puede hacer que el sistema colapse, ya que hay que entregar explícitamente el procesador al RTOS para que se lo de a otra tarea.</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;">Sin embargo con la función de las estadísticas habilitadas, podemos comprobar si alguna tarea se ha pasado de tiempo, y con ello implementar mecanismos adecuados para que la tarea en cuestión reajuste su dinámica y ceda el procesador oportunamente, para ello podemos auxiliarnos de la función rtos_overrun(). Esta función no tiene valor si se usa dentro de una tarea para comprobar si ella misma se ha pasado porque la actualización de las estadísticas se hace después de ceder el procesador, considero que esta es una de las debilidades de este RTOS, en ese sentido.</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;">El uso de rtos_overrun(), debería poderse utilizar dentro de una misma tarea para comprobar si desde que me cedieron el procesador para ejecutar, me he pasado de tiempo o no y en consecuencia entregar el procesador al RTOS.</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;">En el ejemplo que les traigo hoy vamos a emplear rtos_yield() para ceder el procesador y rtos_overrun() para conocer si una tarea se ha pasado de tiempo.</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;">Sin embargo yield() no es una función realmente poderosa, al menos en este RTOS, porque pone a dormir a la tarea durante un período completo del valor rate, que especificamos al declarar la función como una tarea del RTOS, y eso en ocasiones no es lo que deseamos. Aún así es mejor que el procesador de nuestro PIC esté haciendo algo útil y no perdiendo el tiempo.</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;">En las entregas futuras veremos otras funciones que nos ofrece este RTOS para hacer esperas más eficientes vinculadas al uso de recursos compartidos en nuestras aplicaciones. El uso eficiente del procesador, los recursos del sistema y la no linealidad en la ejecución de las tareas en un sistema que emplea SO, ha obligado a los diseñadores de SO a crear mecanismos para proteger los datos y hacer uso de esos recursos de forma ordenada y segura. Estos mecanismos se clasifican en dos grupos: La sincronización y la coordinación que comenzaremos a ver en la próxima entrega.</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;">Ejemplo:</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;">Implemente en un PIC16F877 una aplicación en la que se ejecuten tres tareas, con las siguientes características:</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;">La tarea No. 1 Tendrá un contador el cual se incrementa en un lazo hasta que alcanza el valor de 1000. Cuando llegue a ese valor imprime el siguiente mensaje: “Tarea contadora completada” y además pone una bandera a 1, para indicar que ha concluido. Debe colocar en esta tarea código para que la tarea ceda el procesador en algún momento al RTOS. El tiempo máximo de ejecución de esta tarea es de 10ms y debe ejecutarse cada 30ms</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;">La tarea No. 2 debe esperar a que la tarea No. 1 termine para enviar por el puerto serie un mensaje similar al de la tarea No. 1, sin embargo, esta tarea también enviará, por el puerto serie, un mensaje cada vez que le cede el procesador al RTOS. Esta debe ejecutarse en un tiempo de 10ms y debe ejecutarse cada 40ms</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;">Por último, existe una tarea que se encarga de hacer parpadear un LED conectado en RB0, cada 100ms y enviar un menaje por el puerto serie en caso de que la Tarea 1 o la Tarea 2 se hayan pasado en algún momento de su tiempo de ejecución. El tiempo de procesador para esta tarea debe ser de 10ms</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;">Código:</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">Código: C</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">#include "D:\Documentos\Projects\RTOS\RTOS.h"</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">#use rs232(baud=19200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">#use RTOS(timer=0, minor_cycle=10ms, statistics) //se utilizan las estadísticas</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> //hace falta para usar rtos_overrun() </span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">int32 iT1Counter = 0;</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">int1 bT1Flag = 0;</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">int1 bLed = 0;</span></span><br />
<br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">#task (rate=30ms, max=10ms)</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">void Tarea1();</span></span><br />
<br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">#task (rate=40ms, max=10ms)</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">void tarea2();</span></span><br />
<br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">#task (rate=100ms, max=10ms)</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">void Tarea3();</span></span><br />
<br />
<br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">void main()</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">{</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> rtos_run();</span></span><br />
<br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">}</span></span><br />
<br />
<br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">void Tarea1()</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">{</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> bT1Flag = 0;</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> for(iT1Counter = 0; iT1Counter <= 1000; iT1Counter++)</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> { if(!(iT1Counter%100)) //mecanismo para ceder el procesador cada cierto tiempo</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> rtos_yield(); //cuando la tarea entra en contexto se comienza a ejecutar</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> //la línea a continuación de esta</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> } </span></span><br />
<br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> printf("Tarea contadora completada\r");</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> bT1Flag = 1; </span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">}</span></span><br />
<br />
<br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">void tarea2()</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">{</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> //Aunque esta tarea no tiene que preocuparse mucho por ceder el procesador</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> //porque no tiene lazos infinitos o algo parecido puse de ejemplo tambien a</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> //rtos yield</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> if(bT1Flag)</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> printf("Espera por Tarea1 concluida\r");</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> else</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> {</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> printf("dormir T2\r");</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> rtos_yield(); </span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> }</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">}</span></span><br />
<br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">void Tarea3()</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">{</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> bLed = !bLed;</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> output_bit( PIN_B0, bLed);</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> if(rtos_overrun(Tarea1)) //Si las tareas se pasaron de su tiempo de ejecución</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> //se envían los mensajes por el pto serie</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> printf("Tarea 1 overrun\r");</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> if(rtos_overrun(Tarea2))</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;"> printf("Tarea 2 overrun\r");</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: #cccccc; font-size: 12.48px; line-height: 17.472px;">}</span></span><br />
<br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;">Como pueden observar, este ejemplo realmente no se corresponde con una aplicación que haga algo útil, sin embargo, me ha servido para ilustrar el uso de las funciones rtos_yield() y rtos_overrun() de la manera más sencilla que encontré. Las posibilidades de estas funciones están ahora en sus manos y en lo que sus cabezas puedan crear para ellas. Hay muchísimas aplicaciones en las que pueden ser útiles, sin embargo, ya el tema de los RTOS es bastante complicado como para meternos a hacer programas complejos que demuestren su uso.</span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"><span style="background-color: #e7eaef; font-size: 12.48px; line-height: 17.472px;"></span></span></span><br />
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: 12.48px; line-height: 17.472px;">El tiempo invertido para hacer el código y el texto, fue de 2:30 hrs, la decisión de que ejemplo utilizar me tomó más de un día.</span></span></div>
<div>
<br /></div>
<div>
<div>
<b><span style="font-size: large;">4) Coordinar para no dañar</span></b></div>
<div>
<br /></div>
<div>
Hasta ahora hemos visto al RTOS como un elemento que nos ayuda a “simplificar” el código de nuestra aplicación. Por una parte, dejándole parte de la temporización de las tareas que debe realizar nuestra aplicación y por otra utilizando el tiempo de las demoras ocupadas para hacer que otras tareas ejecuten su código en ese tiempo. Sin embargo esas ventajas no son nada comparado con dos herramientas fundamentales que nos ofrecen los SO: la coordinación y la sincronización, de ellas hoy vamos a ver solamente una de ellas la coordinación.</div>
<div>
<br /></div>
<div>
La coordinación es un término en la programación para SO, que se basa en la protección de recursos compartidos, es un concepto orientado a evitar que diferentes tareas puedan acceder a los datos o recursos y poner al sistema en un estado inestable o inseguro. </div>
<div>
<br /></div>
<div>
Ejemplos que ponen de manifiesto el problema de la coordinación hay muchísimos pero en aras de mantener el curso lo más sencillo posible y adecuarlo un poco más a las aplicaciones que normalmente se nos presentan yo utilizaré un problema más cercano a nuestro entorno.</div>
<div>
<br /></div>
<div>
El problemas de la coordinación también se conoce como el problema de la concurrencia o acceso concurrente a recursos, a mi me gusta llamarlo “coordinación” para establecer una mejor diferencia con respecto al otro mecanismo; el de la “sincronización” que veremos en la próxima entrega.</div>
<div>
<br /></div>
<div>
Destripando un poco más a la coordinación diremos que: la coordinación es el mecanismo que debe implementar un SO para asegurar el acceso seguro a recursos compartidos del sistema, y que no tiene en cuenta restricciones temporales. Con esto queda claro que proteger a los recursos de un acceso no seguro es lo más importante en la coordinación, no importa durante que tiempo alguien (una tarea) esté utilizando el recurso, hasta que no lo libere nadie más podrá utilizarlo.</div>
<div>
Hay mecanismos de coordinación que implementan también el problema de la sincronización, que si tiene en cuenta el factor tiempo, pero el RTOS de CCS no los implementa. Esto puede considerarse una limitante o una ventaja, según el tipo de aplicación en que se vaya a utilizar. </div>
<div>
<br /></div>
<div>
Un RTOS que implementa un mecanismo de coordinación con sincronización es el LMOS de Darukur, que veremos dentro de algún tiempo en este foro, debidamente documentado gracias a un proyecto que Darukur y un servidor, llevaremos a ustedes. Por el momento este simple cursillo es un buen método (no el único) para acercarse al mundo de los RTOS.</div>
<div>
Veamos la coordinación con un ejemplo sencillo pero bien claro.</div>
<div>
<br /></div>
<div>
Supongamos que una madre ha comprado una camisa muy bonita, ella quería comprar dos, pero en la tienda solo había una así que decidió comprarla de todas formas. Cuando llegó a casa llama a sus hijos (ambos usan la misma talla de camisa), y les dice: “he comprado esta camisa, pero en la tienda solamente había una, así que deben compartirla como buenos hermanos”.</div>
<div>
<br /></div>
<div>
Las palabras de la madre no son alentadoras porque a ambos les gusta mucho la camisa y sin embargo deben compartirla, entonces la decisión de ambos es colocar la camisa en una percha, y cada vez que uno de los dos decida utilizarla se la ponga (dejando el perchero vacío). Pero hay una regla adicional, si cuando uno de los dos va a utilizar la camisa el otro ya se la llevó dejará una marca para indicarle al otro hermano que no podrá utilizar la camisa hasta que el que la marcó haya hecho uso de ella.</div>
<div>
<br /></div>
<div>
Este es un mecanismo en que los hermanos se han puesto de acuerdo para utilizar un recurso (la camisa), de manera compartida (porque es la única), de forma coordinada (para eso se pusieron de acuerdo e hicieron unas reglas simples).</div>
<div>
Para implementar las reglas mostradas en el ejemplo anterior, el RTOS de CCS tiene dos funciones rtos_wait() y rtos_signal().</div>
<div>
<br /></div>
<div>
Para utilizar estas funciones primero hay que crear una variable entera que hará las funciones de percha y, que hablando con propiedad, se llama semáforo. El semáforo es el elemento que le permite a la tarea reclamar el recurso compartido o esperar por él si ya está en uso. Las funciones rtos_wait() y rtos_signal() se utilizan para marcar el momento de inicio y fin del código que utiliza el recurso compartido. A la sección de código que utiliza el recurso compartido se le conoce como sección crítica.</div>
<div>
<br /></div>
<div>
Veamos como funciona esto en términos de programación:</div>
<div>
Usted crea una variable entera que será su semáforo o marcador de uso del recurso compartido.</div>
<div>
El recurso compartido puede ser una o varias variables del sistema, en este caso el recurso compartido es un recurso de memoria. O puede ser un periférico del sistema, como es el caso del puerto serie o la memoria EEPROM, o cualquier otro.</div>
<div>
rtos_wait() y rtos_signal() son los marcadores de inicio y fin del código que hace uso de nuestro recurso compartido.</div>
<div>
<br /></div>
<div>
Cuando se inicia el programa usted inicializa el semáforo en algún valor positivo que determina la cantidad de tareas que pueden utilizar el recurso al mismo tiempo, normalmente es uno para las tareas que modificarán el recurso compartido, mientras que para tareas que solamente leen datos puede que no se usen secciones críticas o se permita más de una tarea que acceda simultáneamente al recurso compartido.</div>
<div>
<br /></div>
<div>
Cuando una tarea llegue a la sección de código que hace uso del recurso compartido, debe, primero que nada, ejecutar la función rtos_wait(sem). Si el semáforo es mayor que cero, el RTOS decrementará la variable y permitirá que la tarea continúe su ejecución, sin embargo si el semáforo está en cero, el RTOS le quitará el procesador a la tarea y se lo cederá a otra que le toque ejecutarse. Cuando le corresponda nuevamente a la tarea que pidió el acceso al recurso compartido, el RTOS comprobará el estado del semáforo, si éste es mayor que cero, lo decrementará y le dará el procesador a la tarea para que se siga ejecutando, si no, volverá a dormir a la tarea hasta el próximo turno y así sucesivamente.</div>
<div>
<br /></div>
<div>
Al final del código de la sección crítica hay que colocar un rtos_signal(sem) para que el RTOS incremente el semáforo permitiendo que otra tarea pueda utilizar el recurso compartido.</div>
<div>
<br /></div>
<div>
El ejemplo de hoy es el siguiente:</div>
<div>
Elabore un programa para un PIC16F877 que permita mantener actualizada la cantidad de botellas que hay en un tramo de cinta transportadora en una embotelladora. La cinta es alimentada desde un almacén de botellas que tiene un robot que incrementa la variable Cantidad cada vez que coloca una botella en la cinta, mientras que dos robots llenadores de cajas, decrementan en 12 la variable cantidad cada vez que toman 12 botellas de la cinta transportadora. Como es de suponer el robot despachador debe llenar la cinta más rápido de lo que los robots llenadores la vacían. En la próxima entrega utilizaremos la sincronización para resolver el problema de que la cinta se quede vacía o se llene demasiado rápido. Como datos adicionales suponga que el robot despachador despacha una botella cada 250ms y que los robots llenadores llenan una caja cada 6 segundos. El robot despachador está conectado a RB0 y cada vez que pone una botella en la cinta transportadora le da un pulso al microcontrolador para indicárselo. Los robots llenadores están conectados uno a RB1 y el otro a RB2 e igualmente dan un pulso al microcontrolador cada vez que despachan una caja. La duración del pulso es de 100ms.</div>
<div>
<br /></div>
<div>
Como es de suponer este problema lo podemos resolver de muchas maneras y lógicamente sin el uso de los RTOS, pero eso se los dejo de tarea. Además el mecanismo de notificación de cada robot es un poco deficiente, pero ese no es el tema de este curso, aunque en su momento pondremos un ejemplo mejor al respecto, cuando rescatemos a las interrupciones del olvido. </div>
<div>
<br /></div>
<div>
Analicemos un poco en detalle el problema: Supongamos que la tarea asociada al robot despachador comienza a ejecutarse, lee el valor de la variable Cantidad, 100 botellas, y se va adormir esperando que el robot le notifique que ha puesto una botella en la cinta, en ese momento el RTOS le da permiso a la tarea del robot llenador 1 para que ejecute su código, ésta se da cuenta que el robot llenó una caja por lo que lee la variable Cantidad y le resta 12 botellas, quedando Cantidad = 88 botellas. Ahora le toca de nuevo a la tarea del robot despachador ejecutarse y como ya se despachó una botella le suma uno al valor previamente leído y actualiza la variable Cantidad, quedando 101 botellas, lo cual es falso.</div>
<div>
<br /></div>
<div>
Este ejemplo puede mejorarse semánticamente y evitarnos el uso de la sección crítica, todo ello gracias a que nuestro RTOS es cooperativo y en este caso, mientras la tarea esté ejecutándose tiene todos los recursos para ella sola hasta que entregue el procesador.</div>
<div>
<br /></div>
<div>
Por lo tanto podemos escribir el código de modo que no haya ningún rtos_yield() intercalado con el código que accede a un recurso compartido, de esta forma la tarea se asegura el uso exclusivo del recurso compartido… a no ser que aparezcan las interrupciones en la palestra y las cosa se complique. Sin embargo en un sistema de tiempo compartido (los hay para PIC, ejemplo de ellos es el FreeRTOS), donde no sabemos cuando el RTOS nos quitará el procesador el uso de secciones críticas es OBLIGATORIO, para evitar problemas como los mostrados, y por eso es importante que dominemos esta técnica.</div>
<div>
<br /></div>
<div>
Por otro lado el uso de Periféricos puede complicar más las cosas que el uso simple de la memoria y puede ocurrir que para ser eficientes estemos obligados a poner un rtos_yield() dentro del código de la sección crítica. Moraleja: aprenda a programar con secciones críticas o no programe con RTOS.</div>
<div>
<br /></div>
<div>
El código:</div>
<div>
Código: C</div>
<div>
<span style="background-color: #cccccc;">#include "D:\Documentos\Projects\RTOS\RTOS.h"</span></div>
<div>
<span style="background-color: #cccccc;">#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)</span></div>
<div>
<span style="background-color: #cccccc;">#use RTOS(timer=0, minor_cycle=10ms)</span></div>
<div>
<span style="background-color: #cccccc;">int8 semaphore; //Este es nuestro semáforo</span></div>
<div>
<span style="background-color: #cccccc;">int16 iCantidad; //Esta es la cantidad de botellas en la estera</span></div>
<div>
<span style="background-color: #cccccc;"> //constituye nuestro recurso compartido</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;">#task (rate=50ms, max=10ms)</span></div>
<div>
<span style="background-color: #cccccc;">void R_Despachador();</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;">#task (rate=50ms, max=10ms)</span></div>
<div>
<span style="background-color: #cccccc;">void R_Llenador1();</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;">#task (rate=50ms, max=10ms)</span></div>
<div>
<span style="background-color: #cccccc;">void R_Llenador2();</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;">void main()</span></div>
<div>
<span style="background-color: #cccccc;">{ </span></div>
<div>
<span style="background-color: #cccccc;"> semaphore = 1; //Solo una tarea puede utilizar el recurso cada vez</span></div>
<div>
<span style="background-color: #cccccc;"> iCantidad = 100; //Inicializamos esta variable para tener algunas botellas en</span></div>
<div>
<span style="background-color: #cccccc;"> //la estera.</span></div>
<div>
<span style="background-color: #cccccc;"> setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);</span></div>
<div>
<span style="background-color: #cccccc;"> rtos_run();</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;">}</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;">void R_Despachador()</span></div>
<div>
<span style="background-color: #cccccc;">{</span></div>
<div>
<span style="background-color: #cccccc;"> int Botellas;</span></div>
<div>
<span style="background-color: #cccccc;"> rtos_wait(semaphore); //Reclamamos el recurso y aquí comienza la secc crítica</span></div>
<div>
<span style="background-color: #cccccc;"> Botellas = iCantidad; //Leemos la cantidad de botellas a una variable temporal</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> if(input(PIN_B0)==1) </span></div>
<div>
<span style="background-color: #cccccc;"> {</span></div>
<div>
<span style="background-color: #cccccc;"> Botellas++; //Ya sabemos que este código no es eficiente pero </span></div>
<div>
<span style="background-color: #cccccc;"> iCantidad = Botellas; //sí es didáctico y por eso lo he utilizado así.</span></div>
<div>
<span style="background-color: #cccccc;"> }</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> rtos_signal(semaphore); //Liberamos el semáforo y aquí se acaba la sec crítica</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> rtos_yield(); // A dormir por otros 100ms para evitar poner dos veces la misma botella</span></div>
<div>
<span style="background-color: #cccccc;">}</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;">void R_Llenador1()</span></div>
<div>
<span style="background-color: #cccccc;">{</span></div>
<div>
<span style="background-color: #cccccc;"> rtos_wait(semaphore);</span></div>
<div>
<span style="background-color: #cccccc;"> if(input(PIN_B1)==1)</span></div>
<div>
<span style="background-color: #cccccc;"> iCantidad -= 12; //Este sí es un código lógico, pero entonces el despachador</span></div>
<div>
<span style="background-color: #cccccc;"> //no nos daría problemas aunque nos vayamos a dormir dentro de</span></div>
<div>
<span style="background-color: #cccccc;"> //la sección crítica.</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> rtos_signal(semaphore);</span></div>
<div>
<span style="background-color: #cccccc;"> rtos_yield();</span></div>
<div>
<span style="background-color: #cccccc;">}</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;">void R_Llenador2()</span></div>
<div>
<span style="background-color: #cccccc;">{</span></div>
<div>
<span style="background-color: #cccccc;"> rtos_wait(semaphore);</span></div>
<div>
<span style="background-color: #cccccc;"> if(input(PIN_B2)==1)</span></div>
<div>
<span style="background-color: #cccccc;"> iCantidad -= 12;</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> rtos_signal(semaphore);</span></div>
<div>
<span style="background-color: #cccccc;"> rtos_yield();</span></div>
<div>
<span style="background-color: #cccccc;">}</span></div>
<div>
</div>
<div>
</div>
<div>
<br /></div>
<div>
Este programa lo simulé en Proteus poniendo en RB0 una fuente digital de tipo pattern con los siguientes parámetros: </div>
<div>
First Edge at (Secs)=1</div>
<div>
Desmarcar el check mark: Equal Mark/Space Timing?</div>
<div>
‘Mark’ Time (Secs) = 100m</div>
<div>
‘Sapce’ Time(Secs) = 150m</div>
<div>
Marcar el check mark: Continuos Secuence of Pulses</div>
<div>
Marcar el check mark: Standard Hig-Low Pulse Train</div>
<div>
Para RB1 y RB2 se utiliza una fuente del mismo tipo con los siguientes parárametros cambiados</div>
<div>
Para RB1:</div>
<div>
First Edge at (Secs)=5</div>
<div>
‘Mark’ Time (Secs) = 100m</div>
<div>
‘Sapce’ Time(Secs) = 5.9</div>
<div>
Para RB2:</div>
<div>
First Edge at (Secs)=7</div>
<div>
‘Mark’ Time (Secs) = 100m</div>
<div>
‘Sapce’ Time(Secs) = 5.9</div>
<div>
Simulen y vean como cada vez que se pasa por rtos_wait() y si el semáforo es mayor que cero, se decrementa y se entra en la sección crítica, si el semáforo es 0 entonces la tarea espera a que esté disponible el recurso (semáforo>0) para ejecutar el código de la sección crítica.</div>
<div>
<br /></div>
</div>
<div>
<div>
<b><span style="font-size: large;">5) En sus marcas, listos e inicio!!!</span></b></div>
<div>
<br /></div>
<div>
Un momento, un momento, no tan rápido que, hay una salida en falso del corredor del carril No. 2.</div>
<div>
En un caso como el anterior diríamos que ha fallado la sincronización de los corredores en el arranque, y la sincronización es el tema que vamos a tratar hoy en nuestro cursillo de los RTOS para uC.</div>
<div>
En el mundo de los uC es frecuente la utilización de demoras para esperar a que ocurran ciertos hechos o eventos, para en consecuencia hacer algo. La duración de estas demoras puede ser conocida, como en el caso de esperar a que una LCD coloque los datos en determinados registros antes de enviarle otro dato, o esperar a que la USART saque un dato que está transmitiendo antes de poder escribir nuevamente en el registro de transmisión; sin embargo también son frecuentes aquellas esperas en las que no sabemos cuanto podemos demorarnos.</div>
<div>
En los casos en que no conocemos cuanto debemos esperar se pueden utilizar las interrupciones, pero en los uC no tenemos interrupciones ilimitadas ni tampoco existe una biblioteca de mecanismos de interrupción disponibles para todos los casos que se nos presentan. Es por estas razones que muchas veces esperamos a la ocurrencia de estos eventos haciendo suposiciones y blandiendo demoras.</div>
<div>
Para la implementación de demoras existen varios mecanismos más o menos eficientes, sin embargo un SO no nos ofrece este tipo de mecanismos que podemos llamar un poco primitivos. Para la implementación de demoras eficientes los SO han creado los mecanismos de sincronización de procesos.</div>
<div>
En la entrega anterior vimos la coordinación, en realidad los autores de los libros más reconocidos en el tema de los SO, han llamado a estos mecanismos y al que veremos hoy, “mecanismos de sincronización de procesos”, pero a mi me gusta distinguir entre aquellos que se dedican especialmente a implementar esperas eficientes para la protección de recursos, de aquellos que se dedican a implementar esperas eficientes para eventos por los cuales un proceso debe esperar antes de continuar su ejecución. Notemos que en ambos casos la tarea o proceso debe esperar, pero no en todos los casos la espera tiene la misma naturaleza, en uno esperamos por un recurso físico al que queremos acceder y que no está disponible, en el otro esperamos a que se produzcan ciertos hechos que determinan el “estado” del sistema.</div>
<div>
Vamos a utilizar como referencia el problema anterior para ver el mecanismo de la sincronización en ejecución. Supongamos ahora que le hemos colocado a nuestros robots una entrada que cuando está en nivel bajo le indica al robot que no coloque o extraiga botellas de la cinta transportadora. Con este mecanismo simple vamos a tratar, por un lado, de evitar que el robot despachador de botellas llene demasiado la cinta y por el otro que los robots llenadores de cajas traten de llenar las cajas cuando no hay suficientes botellas en la cinta transportadora. Es decir, vamos sincronizar el proceso de llenado/vaciado de la cinta transportadora. Las ventajas de esto son evidentes, por ejemplo: si el robot llenador no tiene botellas que poner en la cinta los robots llenadores trabajarán hasta que la cantidad de botellas se lo permita; si los robots llenadores dejan de trabajar, entonces el robot despachador trabajará hasta que llene la cinta transportadora.</div>
<div>
Para lograr lo anterior, vamos a poner que la cantidad máxima de botellas que pueden estar en la cinta es de 100 y que la cantidad mínima de botellas es 24, por lo que cada una de las tareas que atiende a los robots deberá, además de llevar la actualización del total de botellas en la cinta, indicarle a los robots que se detengan cuando la cantidad de botellas en la cinta esté fuera del rango especificado. Además vamos a utilizar el puerto serie para Tx la cantidad de botellas que hay en la cinta en cada momento.</div>
<div>
Las entradas a los robots (salidas de nuestro PIC) las hemos colocado en los pines RB3..RB5, en RB3 al robot despachador, en RB4 al robot llenador1 y en RB5 al robot llenador2</div>
<div>
Para hacer la sincronización de tareas el RTOS de CCS nos ofrece una sola función, aunque parezca poco esta función es bien poderosa, vamos a verla con más detenimiento. La función se llama rtos_await(expr) lo que tienes que pasarle es una expresión lógica que la función evaluará, si esta resulta verdadera entonces continúas la ejecución normal de tu programa, si te devuelve falso, entonces rtos_await() le cederá el procesador al RTOS y la tarea quedará bloqueada hasta que exp se cumpla para entonces continuar en la línea siguiente a la llamada a la función.</div>
<div>
Ahora bien, es cierto que esta función es poderosa y simple, pero eso implica que tenemos que saber donde ponerla, ya que si no evaluamos bien nuestras expresiones o no colocamos la función en el lugar adecuado, estaremos sometiéndonos a riesgos durante la ejecución de nuestro código. Por ejemplo puede ocurrir que alguna tarea se quede bloqueada esperando por siempre a que la expresión lógica se evalúe de verdadera y esto nunca ocurra o que la expresión esté mal diseñada y la tarea no se bloquee cuando haga falta. Bien todos esos problemas los veremos más adelante cuando la señorita Némesis (diosa griega de la venganza y la fortuna) haga acto de presencia para echarnos a perder toda la dicha que los RTOS traen al mundo de la programación con uC.</div>
<div>
He puesto el código fuente y la simulación con Proteus en la siguiente dirección: Código fuente y simulación cuando corran el ejemplo noten como la cantidad de botellas en la cinta va descendiendo hasta que al llegar a las 24 botellas, después la cantidad de botellas en la cinta se mantendrá más o menos sobre las 20 y nunca por debajo de 12. Las compuertas AND de conjunto con las formas de onda hacen la función de los robots.</div>
<div>
<br /></div>
<div>
<span style="background-color: #cccccc;">Código: C++</span></div>
<div>
<span style="background-color: #cccccc;">#include "D:\Documentos\Projects\RTOS\RTOS.h"</span></div>
<div>
<span style="background-color: #cccccc;">#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)</span></div>
<div>
<span style="background-color: #cccccc;">#use RTOS(timer=0, minor_cycle=10ms)</span></div>
<div>
<span style="background-color: #cccccc;">int8 semaphore; //Este es nuestro semáforo</span></div>
<div>
<span style="background-color: #cccccc;">int16 iCantidad; //Esta es la cantidad de botellas en la estera</span></div>
<div>
<span style="background-color: #cccccc;"> //constituye nuestro recurso compartido</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;">#task (rate=50ms, max=10ms)</span></div>
<div>
<span style="background-color: #cccccc;">void R_Despachador();</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;">#task (rate=50ms, max=10ms)</span></div>
<div>
<span style="background-color: #cccccc;">void R_Llenador1();</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;">#task (rate=50ms, max=10ms)</span></div>
<div>
<span style="background-color: #cccccc;">void R_Llenador2();</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;">void main()</span></div>
<div>
<span style="background-color: #cccccc;">{</span></div>
<div>
<span style="background-color: #cccccc;"> semaphore = 1; //Solo una tarea puede utilizar el recurso cada vez</span></div>
<div>
<span style="background-color: #cccccc;"> iCantidad = 120; //Inicializamos esta variable para tener algunas botellas en</span></div>
<div>
<span style="background-color: #cccccc;"> //la estera, normalmente deberiamos tener un sensor que nos reporte</span></div>
<div>
<span style="background-color: #cccccc;"> //en algun momento el total de botellas en la cinta, ya que un</span></div>
<div>
<span style="background-color: #cccccc;"> //robot revisor de llenado o una persona puede retirar botellas</span></div>
<div>
<span style="background-color: #cccccc;"> //de la cinta</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> //Al comenzar todos los robots estan deshabilitados</span></div>
<div>
<span style="background-color: #cccccc;"> output_bit( PIN_B3, 0);</span></div>
<div>
<span style="background-color: #cccccc;"> output_bit( PIN_B4, 0);</span></div>
<div>
<span style="background-color: #cccccc;"> output_bit( PIN_B5, 0);</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);</span></div>
<div>
<span style="background-color: #cccccc;"> rtos_run();</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;">}</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;">void R_Despachador()</span></div>
<div>
<span style="background-color: #cccccc;">{</span></div>
<div>
<span style="background-color: #cccccc;"> //Note como hacemos la sincronizacion fuera de la seccion critica, mas adelante veremos</span></div>
<div>
<span style="background-color: #cccccc;"> //que esto no siempre es posible hacerlo o que las cosas se complican un poco mas</span></div>
<div>
<span style="background-color: #cccccc;"> //de lo que hemos visto hasta ahora.</span></div>
<div>
<span style="background-color: #cccccc;"> rtos_await(iCantidad<100); //Esperemos a que se vacie un poco la cinta</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> output_bit( PIN_B3, 1); //A partir de aqui, si no se podia antes, poner botellas</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> rtos_wait(semaphore); //Reclamamos el recurso y aquí comienza la secc crítica</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> if(input(PIN_B0)==1)</span></div>
<div>
<span style="background-color: #cccccc;"> iCantidad++; //sí es didáctico y por eso lo he utilizado así.</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> if(iCantidad >= 100)</span></div>
<div>
<span style="background-color: #cccccc;"> output_bit( PIN_B3, 0); //Le decimos al robot despachador que no ponga mas botellas</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> rtos_signal(semaphore); //Liberamos el semáforo y aquí se acaba la sec crítica</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> printf("%3.0w \r",iCantidad);</span></div>
<div>
<span style="background-color: #cccccc;"> rtos_yield(); // A dormir por otros 50ms para evitar poner dos veces la misma botella</span></div>
<div>
<span style="background-color: #cccccc;">}</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;">void R_Llenador1()</span></div>
<div>
<span style="background-color: #cccccc;">{</span></div>
<div>
<span style="background-color: #cccccc;"> //El robot debe esperar a que la cinta tenga suficientes botellas para sacar antes</span></div>
<div>
<span style="background-color: #cccccc;"> //de comenzar a trabajar.</span></div>
<div>
<span style="background-color: #cccccc;"> rtos_await(iCantidad>24); //Esperemos a que se llene un poco la cinta</span></div>
<div>
<span style="background-color: #cccccc;"> output_bit( PIN_B4, 1); //A partir de aqui, si no se podia antes, sacar botellas</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> rtos_wait(semaphore);</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> if(input(PIN_B1)==1)</span></div>
<div>
<span style="background-color: #cccccc;"> iCantidad -= 12;</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> if(iCantidad <= 24)</span></div>
<div>
<span style="background-color: #cccccc;"> output_bit( PIN_B4, 0); //Le decimos al robot que no saque mas botellas</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> rtos_signal(semaphore);</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> printf("%3.0w \r",iCantidad);</span></div>
<div>
<span style="background-color: #cccccc;"> rtos_yield(); // A dormir por otros 50ms para evitar poner dos veces la misma botella</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;">}</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;">void R_Llenador2()</span></div>
<div>
<span style="background-color: #cccccc;">{</span></div>
<div>
<span style="background-color: #cccccc;"> rtos_await(iCantidad>24); //Esperemos a que se llene un poco la cinta</span></div>
<div>
<span style="background-color: #cccccc;"> output_bit( PIN_B5, 1); //A partir de aqui, si no se podia antes, sacar botellas</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> rtos_wait(semaphore);</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> if(input(PIN_B2)==1)</span></div>
<div>
<span style="background-color: #cccccc;"> iCantidad -= 12;</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> if(iCantidad <= 24)</span></div>
<div>
<span style="background-color: #cccccc;"> output_bit( PIN_B5, 0); //Le decimos al robot que no saque mas botellas</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> rtos_signal(semaphore);</span></div>
<div>
<span style="background-color: #cccccc;"> </span></div>
<div>
<span style="background-color: #cccccc;"> printf("%3.0w \r",iCantidad);</span></div>
<div>
<span style="background-color: #cccccc;"> rtos_yield();</span></div>
<div>
<span style="background-color: #cccccc;">}</span></div>
<div>
</div>
<div>
<br /></div>
<div>
Hasta ahora solamente hemos visto ventajas del uso de los RTOS, sin embargo el uso de estas herramientas presupone un montón de complicaciones que he tratado de no mostrar hasta el momento, en aras de mostrar lo útil que puede ser un RTOS, pero aún con esas complicaciones el uso de los RTOS sigue siendo una bendición para cualquier desarrollador de sistemas con uC. Simplemente tendremos que ser un poco más cuidadosos con la semántica de nuestros programas y pensar un poco más en la concepción y modelación de las soluciones a nuestros problemas.</div>
<div>
En la próxima entrega vamos a ver el uso de las funciones para el paso de mensajes entre tareas, que es otra de las ventajas que los RTOS traen al mundo de la programación para uC y cuando terminemos de ver todas esas cosas buenas comenzaremos a estudiar las desgracias y cómo enfrentarlas.</div>
</div>
<div>
<br /></div>
<div>
<span class="bbc_size" style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 16pt; line-height: 1.4em;"><b>6) RTOS mail (Comunicación inter-procesos)</b></span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Hasta el momento solamente hemos visto mecanismos que nos permiten simplificar el diseño de nuestros programas, pero hoy vamos a ver una nueva potencialidad de los RTOS que es una cuestión realmente novedosa en cuanto la visión de la programación para uC a la cual estamos acostumbrados.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Cuando hacemos una llamada a una función, es frecuente pasarle algún parámetro para que esta pueda hacer su tarea, mientras la función trabaja, nuestro programa espera pacientemente a que la función retorne y nos devuelva el resultado, que puede ser un valor de retorno, un arreglo cambiado o simplemente el cambio en el estado de algún periférico o salidas del uC.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">El párrafo anterior describe lo que hace nuestro programa cuando llamamos a una función, sin embargo nunca hemos visto que una función le envíe un dato a otra (no en la llamada a la función, sino fuera de ésta) para que cuando le toque ejecutarse tome esos valores y los procese, y si hay que devolver algún resultado entonces que nos envíe un acuse de recibo. Es lógico que un mecanismo como el que acabo de describir no se utilice en las técnicas de programación anterior porque la ejecución secuencial del código presupone que no se requiera de un mecanismo como este.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Lo más cercano al método descrito en el poner datos en algún lugar para que una función lo procese es el uso de las interrupciones, éstas deben procesar rápidamente el evento de interrupción y pude que pongamos el dato en algún lugar y levantemos una bandera para que cuando a la función encargada de procesar los datos le toque ejecutarse lea la bandera, procese los datos y coloque la bandera en el estado que notifica que ya se procesó, no para notificar a otra función sino para notificárselo a ella misma, no vaya a ser que cuando le toque ejecutarse nuevamente procese los mismos resultados nuevamente o haga algo indebido.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Un ejemplo de lo anterior puede se el uso del conversor AD, en algún lugar del programa lo mandamos a convertir; una vez hecha la conversión se produce una interrupción que es atendida en la correspondiente subrutina de atención a esa interrupción; leemos el dato lo ponemos en una variable e incrementamos un contador. Posteriormente le toca ejecutarse a la función que promedia los resultados, ésta comprueba si hay, digamos 200 muestras, si las hay hace el cálculo que pone en otra variable y deja el contador en cero. Este mecanismo es eficaz porque se ha utilizado durante mucho tiempo, pero los RTOS brindan una solución elegante para hacer esto en el contexto de la ejecución de tareas.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Estos mecanismos pueden funcionar también entre funciones pero tendremos el problema de tratar con un montón de estructuras de datos, banderas y contadores, complejas expresiones lógicas a procesar… ¿se acuerdan de eso?</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Ahora imagínense hacer todo lo anterior cuando, en vez de llamadas a funciones metidas dentro de un código que se ejecuta más o menos estructuradamente, lo que tenemos es unas cuantas tareas de las que no tenemos un control de cuando ni como se ejecutarán. Realmente puede ser una verdadera pesadilla hacer un programa productivo, y es por ello que los RTOS nos ofrecen un poderoso mecanismo para hacer eso, y como siempre, este mecanismo también es relativamente simple.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Para hacer lo anterior los RTOS implementan un mecanismo de mensajes. Sí, amigos míos, un RTOS implementa una función similar a la de los correos.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">El funcionamiento de ese mecanismo es simple, cuando una tarea o subrutina de atención a interrupciones necesita notificarle algo a otra tarea llama a una función que pone el dato en la cola de la tarea en cuestión, cuando a la tarea que recibió el mensaje le toca ejecutarse debe, en algún lugar consultar su cola de mensajes, si hay mensajes debe leerlos y procesarlos, como pueden ver este mecanismo es bastante parecido a lo que hacemos habitualmente.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Si yo quiero pasarles un mensaje, este post por ejemplo:</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><ul class="bbc_list" style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">
<li>lo escribo, este es el equivalente a realizar una tarea</li>
<li>lo mando al foro, este es el equivalente a ponerlo en la cola de mensajes del hilo sobre RTOS</li>
<li>ustedes llegan y consultan si hay mensajes nuevos en el hilo, por supuesto llegan cuando su tarea de leer el foro está activa</li>
<li>si hay un mensaje nuevo, normalmente tratarán de leerlo y poner en práctica los nuevos conocimientos</li>
<li>si se sienten impresionados, me escribirán un mensaje a mi correo privado, dándome un acuse de recibo (no hagan esto si no es estrictamente necesario, no vaya a ser que me vuelvan loco)</li>
</ul>
<br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Aquí se ha puesto de manifiesto un ejemplo del sistema de mensajes más simple utilizado por un SO: </span><strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">elaborar</strong><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> y </span><strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">enviar</strong><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> de una parte y </span><strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">consultar si hay un mensaje</strong><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">,</span><strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">procesar</strong><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> y </span><strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">enviar acuse de recibo si es necesario </strong><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">de la otra parte.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Todo esto está muy bien. Pero yo quiero código y ejemplos de verdad. </span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Vale no nos ofusquemos, primero entender bien el concepto, luego ponerlo en práctica. </span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Lo primero que tenemos que hacer es decirle al compilador que le cree una cola de mensajes a aquella tarea a la cual queremos pasarle mensajes, para eso tenemos el parámetro </span><strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">queue</strong><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">, dentro de la directiva </span><span class="bbc_color" style="background-color: #e7eaef; color: green; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"><strong>#task</strong></span><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">, con este parámetro le indicamos al RTOS que reserve memoria y cree una cola de mensajes para la tarea, la declaración de una tarea con cola de mensajes sería como sigue:</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><div class="codeheader" style="background-color: #e7eaef; color: #666666; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small; font-weight: bold; line-height: 17.472px; padding: 0px 0.3em;">
Código: C++</div>
<div class="cpp geshi" style="background: rgb(255, 255, 255); border: 1px solid rgb(170, 170, 170); font-family: monospace; font-size: 13px; line-height: 18px; margin: 1px auto; max-height: 306px; overflow: auto; white-space: pre-wrap; width: 1073.54px; word-wrap: break-word;">
<ol>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#task(rate = 1s, max=20ms, queue=5)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> Tarea1<span style="color: green;">(</span><span style="color: blue;">void</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
</ol>
</div>
<br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">En la declaración de la tarea el parámetro queue = 5, le dice al compilador que cree una cola de 5 bytes para la Tarea1.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Para el envío y recepción de mensajes tenemos las siguientes funciones:</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span class="bbc_color" style="background-color: #e7eaef; color: green; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"><strong>RTOS_MSG_SEND( )<br />RTOS_MSG_POLL( )<br />RTOS_MSG_READ( )</strong></span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"><span class="bbc_color" style="color: green;">RTOS_MSG_SEND(task, byte)</span></strong><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">; permite enviar un byte de datos a la cola de mensajes de una tarea. Esta es la única función del RTOS de CCS que puede llamarse desde fuera de una tarea, lo que permite que desde una subrutina de atención a interrupción se le envíen mensajes a una tarea. El parámetro task es para el nombre de la tarea y byte es un dato de 8 bits (un char o un int8), así que si queremos enviar un float o una estructura tendremos que descomponer antes ese dato en bytes y luego componerlos cuando la cola de mensajes sea leída.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"><span class="bbc_color" style="color: green;">int RTOS_MSG_POLL()</span></strong><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">; es la función que permite a una tarea conocer si tiene mensajes en su cola de mensajes, no se puede llamar desde otra tarea para conocer cuantos mensajes tiene la tarea fulana. Devuelve en un entero la cantidad de bytes ocupados dentro de la cola de mensajes.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><strong style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"><span class="bbc_color" style="color: green;">int8 RTOS_MSG_READ();</span></strong><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> permite leer un byte de la cola de mensajes. Cuando se ejecuta esta función se lee el byte y se saca de la cola, por lo que si el dato se pierde no se podrá recuperar, si se llama a la función y no hay mensajes en la cola se pueden obtener datos falsos.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">En el ejemplo que hemos estado viendo sobre la embotelladora, vamos a incluir un servicio especial para balancear la cantidad de botellas que hay dentro de la cinta transportadora, para ello pondremos una tarea adicional que recibirá de las otras tareas el estado de la cantidad de botellas dentro de la cinta. Si la cinta se está vaciando demasiado rápido, esta tarea se encargará de inhabilitar los robots llenadores de cajas, si se está llenando muy rápido pues entonces se deshabilita al robot que despacha botellas hacia la cinta.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Para lograr esto cada vez que un robot ejecuta la tarea de llenado de cajas o despacho de botellas le notifica a la tarea reguladora la cantidad de botellas que hay en la cinta, con este mecanismo evitamos que la tarea supervisora tenga que leer el recurso compartido iCantidad, y que tenga que sincronizarse con los robots. La cola de mensajes tendrá dos bytes (aunque solo se necesita uno, después explico por que hacen falta dos) donde se reflejará la última escritura realizada por cualquiera de los tres robots. Además, delegaremos en esta tarea la transmisión de la cantidad de botellas que hay en la cinta. La cantidad media de botellas a tener en la cinta es 50.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><div class="codeheader" style="background-color: #e7eaef; color: #666666; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small; font-weight: bold; line-height: 17.472px; padding: 0px 0.3em;">
Código: C++</div>
<div class="cpp geshi" style="background: rgb(255, 255, 255); border: 1px solid rgb(170, 170, 170); font-family: monospace; font-size: 13px; line-height: 18px; margin: 1px auto; max-height: 306px; overflow: auto; white-space: pre-wrap; width: 1054.65px; word-wrap: break-word;">
<ol>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#include "D:\Documentos\Projects\RTOS\RTOS.h"</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#use RTOS(timer=0, minor_cycle=10ms)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">int8</span> semaphore<span style="color: teal;">;</span> <span style="color: #666666;">//Este es nuestro semáforo</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">int8</span> iCantidad<span style="color: teal;">;</span> <span style="color: #666666;">//Esta es la cantidad de botellas en la estera</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//constituye nuestro recurso compartido</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#task (rate=50ms, max=10ms)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> R_Despachador<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#task (rate=50ms, max=10ms)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> R_Llenador1<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#task (rate=50ms, max=10ms)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> R_Llenador2<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#task (rate=1s, max=10ms, queue=2) //la cola tiene 2 byte aunque solamente necesitamos 1</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> Supervisor<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> main<span style="color: green;">(</span><span style="color: green;">)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
semaphore <span style="color: navy;">=</span> <span style="color: #0000dd;">1</span><span style="color: teal;">;</span> <span style="color: #666666;">//Solo una tarea puede utilizar el recurso cada vez</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
iCantidad <span style="color: navy;">=</span> <span style="color: #0000dd;">120</span><span style="color: teal;">;</span> <span style="color: #666666;">//Inicializamos esta variable para tener algunas botellas en</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//la estera, normalmente deberiamos tener un sensor que nos reporte</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//en algun momento el total de botellas en la cinta, ya que un</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//robot revisor de llenado o una persona puede retirar botellas</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//de la cinta</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//Al comenzar todos los robots estan deshabilitados</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
output_bit<span style="color: green;">(</span> PIN_B3, <span style="color: #0000dd;">0</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
output_bit<span style="color: green;">(</span> PIN_B4, <span style="color: #0000dd;">0</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
output_bit<span style="color: green;">(</span> PIN_B5, <span style="color: #0000dd;">0</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
setup_timer_0<span style="color: green;">(</span>RTCC_INTERNAL<span style="color: #000040;">|</span>RTCC_DIV_1<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_run<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> R_Despachador<span style="color: green;">(</span><span style="color: green;">)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//Note como hacemos la sincronizacion fuera de la seccion critica, mas adelante veremos</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//que esto no siempre es posible hacerlo o que las cosas se complican un poco mas</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//de lo que hemos visto hasta ahora.</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_await<span style="color: green;">(</span>iCantidad<span style="color: navy;"><</span><span style="color: #0000dd;">100</span><span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//Esperemos a que se vacie un poco la cinta</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
output_bit<span style="color: green;">(</span> PIN_B3, <span style="color: #0000dd;">1</span><span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//A partir de aqui, si no se podia antes, poner botellas</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_wait<span style="color: green;">(</span>semaphore<span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//Reclamamos el recurso y aquí comienza la secc crítica</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">if</span><span style="color: green;">(</span>input<span style="color: green;">(</span>PIN_B0<span style="color: green;">)</span><span style="color: navy;">==</span><span style="color: #0000dd;">1</span><span style="color: green;">)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
iCantidad<span style="color: #000040;">++</span><span style="color: teal;">;</span> <span style="color: #666666;">//sí es didáctico y por eso lo he utilizado así.</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">if</span><span style="color: green;">(</span>iCantidad <span style="color: navy;">>=</span> <span style="color: #0000dd;">100</span><span style="color: green;">)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
output_bit<span style="color: green;">(</span> PIN_B3, <span style="color: #0000dd;">0</span><span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//Le decimos al robot despachador que no ponga mas botellas</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_msg_send<span style="color: green;">(</span>Supervisor, iCantidad<span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//Enviamos un mensaje con la cant de botellas</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_signal<span style="color: green;">(</span>semaphore<span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//Liberamos el semáforo y aquí se acaba la sec crítica</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_yield<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">// A dormir por otros 50ms para evitar poner dos veces la misma botella</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> R_Llenador1<span style="color: green;">(</span><span style="color: green;">)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//El robot debe esperar a que la cinta tenga suficientes botellas para sacar antes</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//de comenzar a trabajar.</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_await<span style="color: green;">(</span>iCantidad<span style="color: navy;">></span><span style="color: #0000dd;">24</span><span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//Esperemos a que se llene un poco la cinta</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
output_bit<span style="color: green;">(</span> PIN_B4, <span style="color: #0000dd;">1</span><span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//A partir de aqui, si no se podia antes, sacar botellas</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_wait<span style="color: green;">(</span>semaphore<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">if</span><span style="color: green;">(</span>input<span style="color: green;">(</span>PIN_B1<span style="color: green;">)</span><span style="color: navy;">==</span><span style="color: #0000dd;">1</span><span style="color: green;">)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
iCantidad <span style="color: #000040;">-</span><span style="color: navy;">=</span> <span style="color: #0000dd;">12</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">if</span><span style="color: green;">(</span>iCantidad <span style="color: navy;"><=</span> <span style="color: #0000dd;">24</span><span style="color: green;">)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
output_bit<span style="color: green;">(</span> PIN_B4, <span style="color: #0000dd;">0</span><span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//Le decimos al robot que no saque mas botellas</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_msg_send<span style="color: green;">(</span>Supervisor, iCantidad<span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//Enviamos un mensaje con la cant de botellas</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_signal<span style="color: green;">(</span>semaphore<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_yield<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">// A dormir por otros 50ms para evitar poner dos veces la misma botella</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> R_Llenador2<span style="color: green;">(</span><span style="color: green;">)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_await<span style="color: green;">(</span>iCantidad<span style="color: navy;">></span><span style="color: #0000dd;">24</span><span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//Esperemos a que se llene un poco la cinta</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
output_bit<span style="color: green;">(</span> PIN_B5, <span style="color: #0000dd;">1</span><span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//A partir de aqui, si no se podia antes, sacar botellas</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_wait<span style="color: green;">(</span>semaphore<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">if</span><span style="color: green;">(</span>input<span style="color: green;">(</span>PIN_B2<span style="color: green;">)</span><span style="color: navy;">==</span><span style="color: #0000dd;">1</span><span style="color: green;">)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
iCantidad <span style="color: #000040;">-</span><span style="color: navy;">=</span> <span style="color: #0000dd;">12</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">if</span><span style="color: green;">(</span>iCantidad <span style="color: navy;"><=</span> <span style="color: #0000dd;">24</span><span style="color: green;">)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
output_bit<span style="color: green;">(</span> PIN_B5, <span style="color: #0000dd;">0</span><span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//Le decimos al robot que no saque mas botellas</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_msg_send<span style="color: green;">(</span>Supervisor, iCantidad<span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//Enviamos un mensaje con la cant de botellas</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_signal<span style="color: green;">(</span>semaphore<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_yield<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> Supervisor<span style="color: green;">(</span><span style="color: green;">)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">int8</span> iBotellas<span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_await<span style="color: green;">(</span>rtos_msg_poll<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: navy;">></span><span style="color: #0000dd;">0</span><span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//Esperamos a que haya algun mensaje en la cola</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
iBotellas <span style="color: navy;">=</span> rtos_msg_read<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//Leemos el mensaje</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//Lo que hacemos ahora es comprobar la cantidad de botellas que hay en la estera</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//y en funcion de eso habilitamos y deshabilitamos las tareas y los robots que hacen falta</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #666666;">//para controlar la cantidad de botellas en la estera</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">if</span><span style="color: green;">(</span>iBotellas <span style="color: navy;">></span> <span style="color: #0000dd;">50</span><span style="color: green;">)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
output_bit<span style="color: green;">(</span> PIN_B3, <span style="color: #0000dd;">0</span><span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//No despachar mas botellas</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_disable<span style="color: green;">(</span>R_Despachador<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_enable<span style="color: green;">(</span>R_Llenador1<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_enable<span style="color: green;">(</span>R_Llenador2<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">else</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_enable<span style="color: green;">(</span>R_Despachador<span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//No llenar mas cajas</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
output_bit<span style="color: green;">(</span> PIN_B4, <span style="color: #0000dd;">0</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_disable<span style="color: green;">(</span>R_Llenador1<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
output_bit<span style="color: green;">(</span> PIN_B5, <span style="color: #0000dd;">0</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_disable<span style="color: green;">(</span>R_Llenador2<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #0000dd;">printf</span><span style="color: green;">(</span><span style="color: red;">"%3.0w <span style="color: #000099; font-weight: bold;">\r</span>"</span>,iBotellas<span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//Transmitir la cantidad de botellas</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
</ol>
</div>
<br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Este programa se puede simular con el mismo fichero de Proteus que publiqué en el post anterior, noten como la cantidad de botellas en la cinta transportadora se mantiene sobre las 50 botellas. En el caso de la cola de mensajes deben especificar n+1 bytes de los que necesiten, la razón no la conozco pero con 1 byte no funciona, debe ser algún problema de la implementación de CCS o alguna limitación de los PIC que obliga a ello.</span><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #e7eaef; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Bueno espero que les sirva.</span></div>
<div>
<br /></div>
<div>
<span class="bbc_size" style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 16pt; line-height: 1.4em;"><b>7) ¡Interrupciones!</b></span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">La oración anterior me hace parecer súper héroe. Aunque yo no lo sea, pero con un RTOS y la técnica que veremos hoy, puedo considerarme uno de ellos, al menos en la programación de microcontroladores, y después de hoy, todos podemos aspirar a ser un RTOS PIC SÚPER-HÉROE.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">En la entrega anterior estudiamos el paso de mensajes, pero solamente vimos el paso de mensajes entre tareas, esta posibilidad de los RTOS es poderosa y además es el mejor método para pasar información de una tarea a otra, por su sencillez. El paso de mensajes es una necesidad de los SO, porque como expliqué, las tareas no son como las funciones, a las cuales un segmento de código llama y se queda esperando hasta que la función retorna. Entonces como no sabemos en que momento una tarea entrará en su contexto, hay que crear un mecanismo eficiente para que trabaje con los datos que debe servir otra parte del código.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Además de lo anterior, durante todo el cursillo, no hemos visto ni utilizado ninguna interrupción y eso, desde mi punto de vista, no es nada bueno. Los procesos de interrupción nos permiten atender con eficiencia procesos asincrónicos como la conversión analógica, la escritura en memorias EEPROM, las interrupciones externas, la recepción de datos por la USAR, el PSP o el MSSP y también procesos sincrónicos como los que producen los temporizadores.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Pero el uso de un RTOS, nos plantea un dilema con el uso de las interrupciones, ya que en principio cuando utilizamos un RTOS estamos imponiendo que las tareas se van a ejecutar más o menos cada cierto tiempo o que estarán bloqueadas en espera de algo. Por lo tanto, si deseamos que una tarea atienda un proceso asincrónico, ésta debe hacerlo por encuesta, es decir cuando le toque ejecutarse debe comprobar si hay información que procesar. Por otro lado, las interrupciones cuando ocurren, deben ser atendidas en el instante y no cuando al RTOS considere que deben ser atendidas.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Ahora tenemos por un lado una herramienta que nos obliga a utilizar los mecanismos de encuesta, el RTOS, pero que nos ayuda a crear código robusto, eficiente y con velocidad, ventajas nada despreciables. Por otro tenemos un mecanismo para atender procesos que no pueden esperar mucho tiempo en ser atendidos o se corre el riesgo de perder la información, y perder datos es inaceptable para un sistema embebido. Entonces: ¿cómo hacer para aprovechar de las ventajas de ambos?</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Para solucionar este problema los RTOS deben permitir que desde una ISR (subrutina de atención a interrupción) podamos pasarle mensajes a cualquier tarea que lo requiera. Vamos a ver esta ventaja con un ejemplito simple.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Supongamos que tenemos una aplicación que tiene varias tareas, entre ellas hay una dedicada a atender la recepción de datos por el puerto serie, ésta tarea se ejecuta con una frecuencia que permite procesar los datos que llegan desde el puerto serie. Un método para hacerlo sería, que cada vez que a la tarea le toque ejecutarse, ésta compruebe si ha llegado un dato al puerto serie para tomarlo y procesarlo. Eso está bien, pero que pasa si mientras la tarea está esperando su turno de ejecutarse llega más de un dato al puerto serie, por supuesto que se perderán datos y esto si que no podemos permitirlo.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">La solución al problema anterior es separar la atención de la llegada de datos al puerto serie del procesamiento de los datos recibidos, para ello dejamos en manos de una ISR la lectura del registro de datos y el control de los registros de estado del puerto serie y que la tarea se encargue, cada cierto tiempo, de procesar la información recibida.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">El método anterior se puede implementar si el RTOS permite el paso de mensajes desde una ISR hacia una tarea del RTOS, invocando una función adecuada. De esta forma cuando se produzca la interrupción y nos vayamos hasta la ISR, lo que tenemos que hacer es leer el dato y mandarle un mensaje a la tarea, si llega otro dato lo leemos y lo mandamos y así sucesivamente, si la tarea tiene una cola de mensajes suficientemente larga, no debemos perder datos en la recepción por el puerto serie, aún cuando la tarea se ejecute con una frecuencia menor que la de recepción de datos en el puerto serie.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">En el ejemplo de hoy vamos a hacer con RTOS algo parecido a lo que hace la función gets(), con la diferencia de que en vez de quedarnos como tontos esperando a que llegue el carácter de fin de línea o retorno de línea vamos a ceder el procesador cada vez que comprobemos que no ha llegado el carácter de terminación adecuado.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Para la implementación utilizaremos dos PIC16F877, en uno de ellos pondremos un programa que envía una cadena por el puerto serie hasta el otro PIC con una frecuencia de 3 segundos. El PIC que recibe los datos, implementa esta funcionalidad mediante la interrupción de la USART, los cuales pone en la cola de una tarea, la cual va reconstruyendo la cadena, hasta que esta está completa y entonces también la envía por su USART.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Este es el código del PIC que envía la cadena</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><div class="codeheader" style="background-color: #f0f4f7; color: #666666; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small; font-weight: bold; line-height: 17.472px; padding: 0px 0.3em;">
Código: C++</div>
<div class="cpp geshi" style="background: rgb(255, 255, 255); border: 1px solid rgb(170, 170, 170); font-family: monospace; font-size: 13px; line-height: 18px; margin: 1px auto; max-height: 306px; overflow: auto; white-space: pre-wrap; width: 1054.65px; word-wrap: break-word;">
<ol>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#include "D:\Documentos\Projects\RTOS\RTOS.h"</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#use RTOS(timer=0, minor_cycle=10ms)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">int8</span> iBuffer<span style="color: teal;">;</span> <span style="color: #666666;">//Indice en el buffer para ir llenandolo</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#task (rate=3s, max=10ms) //Creamos una cola con 10 bytes utiles</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> Serial<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> main<span style="color: green;">(</span><span style="color: green;">)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
setup_timer_0<span style="color: green;">(</span>RTCC_INTERNAL<span style="color: #000040;">|</span>RTCC_DIV_1<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_run<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> Serial<span style="color: green;">(</span><span style="color: green;">)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #0000dd;">printf</span><span style="color: green;">(</span><span style="color: red;">"Prueba<span style="color: #000099; font-weight: bold;">\n</span>"</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
</ol>
</div>
<br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">y este el del PIC que recibe y retransmite la cadena</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><div class="codeheader" style="background-color: #f0f4f7; color: #666666; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small; font-weight: bold; line-height: 17.472px; padding: 0px 0.3em;">
Código: C++</div>
<div class="cpp geshi" style="background: rgb(255, 255, 255); border: 1px solid rgb(170, 170, 170); font-family: monospace; font-size: 13px; line-height: 18px; margin: 1px auto; max-height: 306px; overflow: auto; white-space: pre-wrap; width: 1054.65px; word-wrap: break-word;">
<ol>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#include "D:\Documentos\Projects\RTOS\RTOS.h"</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#use RTOS(timer=0, minor_cycle=10us)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">char</span> cBuffer<span style="color: green;">[</span><span style="color: #0000dd;">17</span><span style="color: green;">]</span> <span style="color: teal;">;</span> <span style="color: #666666;">//Aqui guardamos el texto a enviar por el puerto serie</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">int8</span> iBuffer<span style="color: teal;">;</span> <span style="color: #666666;">//Indice en el buffer para ir llenandolo</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#task (rate=100us, max=10us, queue = 3) //Creamos una cola con 2 bytes utiles</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> Serial<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> main<span style="color: green;">(</span><span style="color: green;">)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
setup_timer_0<span style="color: green;">(</span>RTCC_INTERNAL<span style="color: #000040;">|</span>RTCC_DIV_1<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
enable_interrupts<span style="color: green;">(</span>GLOBAL<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
enable_interrupts<span style="color: green;">(</span>INT_RDA<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_run<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> Serial<span style="color: green;">(</span><span style="color: green;">)</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">char</span> cDato<span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_await<span style="color: green;">(</span>rtos_msg_poll<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//Esperamos hasta que haya algun dato en cola</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">while</span><span style="color: green;">(</span>rtos_msg_poll<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: green;">)</span> <span style="color: #666666;">//Procesamos la cola completa</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
cDato <span style="color: navy;">=</span> rtos_msg_read<span style="color: green;">(</span><span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
cBuffer<span style="color: green;">[</span>iBuffer<span style="color: green;">]</span> <span style="color: navy;">=</span> cDato<span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
iBuffer<span style="color: #000040;">++</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">if</span><span style="color: green;">(</span>iBuffer <span style="color: navy;">==</span> <span style="color: #0000dd;">16</span> <span style="color: #000040;">||</span> cDato <span style="color: navy;">==</span> <span style="color: red;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span><span style="color: green;">)</span> <span style="color: #666666;">//Si esta toda la cadena la enviamos</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #0000dd;">printf</span><span style="color: green;">(</span><span style="color: red;">"%s<span style="color: #000099; font-weight: bold;">\r</span>"</span>, cBuffer<span style="color: green;">)</span><span style="color: teal;">;</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
iBuffer <span style="color: navy;">=</span> <span style="color: #0000dd;">0</span><span style="color: teal;">;</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: #339900;">#INT_RDA</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: blue;">void</span> fINT_RDA<span style="color: green;">(</span><span style="color: blue;">void</span><span style="color: green;">)</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">{</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
rtos_msg_send<span style="color: green;">(</span>Serial, <span style="color: #0000dd;">getc</span><span style="color: green;">(</span><span style="color: green;">)</span><span style="color: green;">)</span><span style="color: teal;">;</span> <span style="color: #666666;">//Tomamos el dato del buffer y lo ponemos en la cola</span></div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
<span style="color: green;">}</span></div>
</li>
<li style="border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
<li style="background-color: #f9f9f9; border-bottom-color: rgb(239, 239, 239); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: solid; border-left-width: 1px; line-height: 16px; padding: 0px 5px;"><div style="background: none; font-size: 1em; font-stretch: normal; line-height: 1.2em; margin: 0px; padding: 0px; vertical-align: top;">
</div>
</li>
</ol>
</div>
<br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Aquí está el fichero con los programas y la simulación en proteus: </span><a class="bbc_link" href="http://www.4shared.com/file/11925904/598a8453/RTOS_ISR.html" style="background-color: #f0f4f7; border-bottom-color: rgb(168, 182, 207); border-bottom-style: solid; border-bottom-width: 1px; color: #334466; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px; text-decoration: none;" target="_blank">RTOS_ISR</a><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Como verán en la implementación de estos programas he puesto al PIC que retransmite los datos a ejecutar su tarea que procesa los datos recibidos por el puerto serie con una frecuencia mucho mayor que la del PIC que le envía los datos, incluso es mucho más rápida que la velocidad de transmisión recepción de los mensajes, esto me permite tener una cola muy pequeña y que los mensajes no se pierdan.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Yo les aconsejo que jueguen con la frecuencia de ejecución de la tarea, (parámetro rate en la declaración #task) en el PIC que retransmite, y el tamaño de la cola, verán como la cadena a veces se corta, en ocasiones el PIC no retransmite nada. Pero esto les dará una idea de cómo funciona el mecanismo.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Si por ejemplo aumentan la frecuencia de ejecución pueden poner una cola más pequeña, es el código del ejemplo. Si tienen una frecuencia menor, entonces tendrán que poner una cola más grande para que el mensaje quepa completo.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Otra solución a este problema es que la ISR escriba directamente en el Buffer y solamente le mande un mensaje a la tarea cuando se haya recibido el mensaje completo para que esta lo retransmita. Con esto ahorramos memoria RAM, ya que podemos poner una cola muy pequeña, además podemos transferirle a la tarea que atienda los mensajes de error, el procesamiento de comandos y cosas por el estilo. Todo depende de la aplicación y de la imaginación del programador.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Me tomó 1:30 horas escribir el programa y ponerlo a punto, otra hora para escribir el texto y varios días para pensar como enfocarles el problema. Ahora es tarea de ustedes poner todo esto en práctica.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Les propongo que hagan un programa para enviar datos por la USART, similar a printf(), pero más eficiente. Pueden por ejemplo utilizar sprintf(), para poner la cadena en RAM y después que la tarea configure el servicio de interrupciones, mande el primer byte y la ISR envíe el resto, cuando la ISR termine debe notificar a la tarea que ya está en condiciones de enviar más datos, de modo que la tarea le puede crear otra cadena y volver a mandar a transmitir. Notarán que hay que tener unas cuantas cosillas en cuenta, pero es un buen problema para practicar.</span></div>
<div>
<br /></div>
<div>
<span class="bbc_size" style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 16pt; line-height: 1.4em;"><b>8) Introducción a los procesos</b></span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Hasta el momento hemos visto ejemplos de programas utilizando RTOS y les he hablado de los problemas asociados a la programación con RTOS, pero hay un concepto que debemos aclarar antes de continuar, o de otro modo ustedes pueden llegar a confundirse y escribir programas que no funcionan correctamente.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Todo el tiempo han visto que he utilizado el término tarea o proceso para denotar un fragmento de código que hace “algo”, pero no han visto una definición formal sobre esos términos, así como tampoco una explicación de que es una tarea o proceso.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Las razones de la omisión, son más o menos las mismas que para el caso de los problemas asociados a la programación con RTOS. Normalmente estos temas son bastante tediosos de estudiar, programar utilizando SO no es una tarea fácil al principio, aunque una vez que se domina constituye una poderosa herramienta de trabajo que mejora la productividad y el desempeño de cualquier sistema.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Entonces con el objetivo de motivar en ustedes el interés por la programación con RTOS, decidí no proponerles una línea formal de aprendizaje como suele ocurrir en una escuela o libro sobre el tema, sino ir poniendo ejemplos de cómo utilizar un RTOS y luego introducir la parte pesada del asunto.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Hoy vamos a ver, con bastante detalle qué es un proceso o tarea, porque cuando comencemos a ver los ejemplos de coordinación y sincronización de procesos, necesitaremos tener bien claro que es un proceso, para poder comprender esos problemas-ejemplo de los que tanto les he hablado.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><strong style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">¿Cómo se consigue la multiprogramación?</strong><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">La multitarea o multiprogramación es un proceso que intenta crear la ilusión de que la computadora está haciendo varias cosas al mismo tiempo. Pensemos en una PC, normalmente usted puede escribir un documento mientras escucha música, el programa de descargas baja algún archivo de INTERNET y el antivirus se encuentra activo.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Para lograr hacer cada una de las cosas anteriores, tenemos un conjunto de programas, uno por cada tarea, y cada programa “parece” que se ejecuta como si tuviese la computadora para él solo. En realidad cada programa se ejecuta durante un período corto de tiempo y luego el procesador es cedido a otro programa para que se ejecute durante un poco de tiempo, este mecanismo se conoce como multiprogramación (definición estilo UNIX) o multitarea (definición estilo Microsoft).</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Si para una computadora tuviésemos una lista de los programas que está ejecutando y muestreáramos que está haciendo el procesador en un instante de tiempo cualquiera; comprobaríamos que en ese momento está ejecutando una instrucción de alguno de sus programas, pero nunca dos programas a la vez. Más aún, si ese procesador tuviese un pipeline suficientemente grande como para contener varias instrucciones en la cola de ejecución, notaríamos que todas las instrucciones son de un solo programa.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Ahora tomemos un período de tiempo, digamos un segundo, en ese tiempo el procesador debe cambiar de un programa a otro para que se ejecute un pedacito de cada uno y crear la ilusión de que el conjunto se ejecuta de forma concurrente, como si cada programa tuviese un procesador para él solo. Es posible que en ese tiempo el procesador haya cambiado muchas veces de programa, pero si el usuario o sistema conectado a él no nota que sus intereses se han afectado, el objetivo fundamental de la multiprogramación se ha cumplido: crear la ilusión de que el sistema de cómputo tiene varios procesadores, uno por cada programa en ejecución.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Hay sistemas con más de un procesador trabajando de conjunto para ejecutar instrucciones de varios programas, a ese método de ejecución de código en un sistema computacional se le conoce como paralelismo, mientras que a los sistemas con un solo procesador se les conoce como de ejecución seudo paralela.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Como los seres humanos somos muy malos siguiendo la pista a un sistema que cambia constantemente de un lugar a otro, y a veces eso nos trae problemas de cabeza, es que se ha inventado un modelo que permite programar código que pueda ser ejecutado de forma paralela o seudo paralela: el modelo de proceso.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><strong style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">El modelo de procesos:</strong><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Normalmente se considera que un proceso es un programa en ejecución. Sin embargo eso sería limitar el concepto de proceso al programa que se está ejecutando en el instante en que se mira a la CPU.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Más bien un proceso es un programa al que le ha sido asociado un conjunto de datos que crea una CPU virtual. Eventualmente el proceso irá a parar a la CPU, se ejecutará un poco de código y volverá a ser suspendido hasta que le toque nuevamente la CPU, pero cuando el proceso no se está ejecutando en el procesador, su conjunto de datos asociado mantiene el estado del proceso como si estuviese ejecutándose.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Con este modelo podemos seguir la pista a nuestros programas sin preocuparnos mucho por la forma en que la CPU conmuta o cambia de contexto de un proceso a otro, es como si tuviésemos a cada programa ejecutándose en su propia computadora.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Comprender este concepto es muy importante, porque a partir de ahora si un programa se convierte en proceso, además del código del programa (escrito por el programador), el SO le asignará un </span><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">registro de control y estado</em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">, de modo que el proceso tenga su CPU virtual. Y usted como programador que utiliza las funcionalidades del SO para escribir su código, deberá conocer este detalle si quiere que sus código sea productivo y seguro.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><strong style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Estados de proceso</strong><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Ya vimos que a cada programa que se promueve a proceso le es asignado un </span><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">registro de control y estado</em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">. Este registro puede tener varios campos y cada campo puede tomar varios valores, muchas veces al programador no le interesan cuales son los campos de este registro y cuales sus valores porque son de uso interno del SO, pero hay un conjunto reducido de ellos que sí es necesario conocer.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Dentro de los campos del registro de proceso uno de los más importantes para el programador es el de </span><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">estado del proceso</em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">. Este campo sirve para conocer en que situación está el proceso y permite determinar hacia que nuevo estado puede dirigirse éste.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Los estados que puede tomar un proceso son básicamente los siguientes:</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><ul class="bbc_list" style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">
<li>En ejecución</li>
<li>Listo</li>
<li>Suspendido o bloqueado</li>
</ul>
<br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">En ejecución:</em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> corresponde al proceso que en el momento presente está ejecutando el procesador real el sistema.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Listo: </em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">el proceso está listo para ser ejecutado. Este estado permite que el SO pueda planificar al proceso para ser ejecutado en algún momento posterior.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Suspendido o bloqueado:</em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> los procesos van a parar a este estado porque deben esperar a que alguna condición lógica se cumpla para poder continuar ejecutándose, las condiciones pueden ser muchas: esperar por una E/S, a que transcurra algún tiempo, entre otras.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Además de los estados existen un conjunto de transiciones entre los diferentes estados:</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><ul class="bbc_list" style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">
<li>Ejecución -> Suspendido o bloqueado</li>
<li>Ejecución -> Listo</li>
<li>Listo -> Ejecución</li>
<li>Bloqueado -> Listo</li>
</ul>
<br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Ejecución -> Suspendido o bloqueado:</em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> ocurre cuando un proceso debe esperar por una condición lógica, en este caso como el proceso no puede continuar ejecutándose, lo más lógico es que el procesador se dedique a ejecutar otros procesos que estén listos para ejecutarse.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Ejecución -> Listo:</em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> ocurre en los sistemas de tiempo compartido (preentive), en el cual un proceso que estaba ejecutándose es interrumpido porque se terminó su tiempo (slice) de ejecución y debe esperar a que lo vuelvan a planificar para ejecutarse. En este caso el proceso no pasa al estado de bloqueado porque no existe nada que le impida continuar, excepto que el procesador real del sistema debe ejecutar otro proceso para que se cumpla el objetivo de la multiprogramación.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Listo -> Ejecución: </em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">a un proceso que estaba listo para ejecutarse le es cedido el procesador</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Bloqueado -> Listo:</em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> la condición lógica que mantenía al proceso en este estado se ha cumplido y el proceso ya puede ser planificado para ejecutarse.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Ahora he introducido un nuevo elemento en el asunto: la planificación de procesos. Este es un tema importante, aunque a nosotros no nos interesa mucho, porque no diseñamos ningún SO sino que simplemente lo utilizamos.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">El planificador de procesos es un componente del SO que básicamente se encarga de revisar la lista de procesos que están listos para ejecutarse y los pone en una cola de la que otro componente del SO, llamado despachador o dispatcher, los va tomando y poniéndolos en ejecución.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">En un SO puede haber otros componentes encargados de la E/S, la comunicación entre procesos, etc. pero con lo que hemos visto es suficiente para seguir avanzando en nuestro curso.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><strong style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Los procesos con el RTOS de CCS</strong><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Para el RTOS de CCS, los procesos se nombran tareas y es por eso que durante el curso he utilizado indistintamente el término tarea o proceso. Tal y como hemos visto hasta hoy, cuando el RTOS crea una tarea le asigna un registro mediante el cual el RTOS puede controlar la ejecución de la tarea y conocer su estado. Para el programador esta información no está disponible porque realmente no debe acceder directamente a ella, pero como veremos un poco más adelante si se trabaja con esto registros, por supuesto, a través de las funciones que ofrece el propio RTOS.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Para comprender esto mejor veamos cada una de las funciones y directivas del RTOS y el impacto que cada una tiene sobre las tareas:</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span class="bbc_color" style="background-color: #f0f4f7; color: green; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">#TASK:</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Con esta directiva simplemente le decimos al compilador que la función que viene a continuación será una tarea. En el momento de la compilación le será creado el</span><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">registro de control y estado</em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> y se marcará como </span><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">lista</em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">, si la tarea tiene cola se reserva memoria para la cola.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Una tarea no será tenida en cuenta como si fuese una función, por lo tanto no podrá llamar a una “función tipo tarea” como lo hace con cualquier otra función, las tareas son como programas completamente independientes que tienen asociado un </span><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">registro de control y estado</em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> como si tuviese su propio procesador.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Tampoco debe implementarse una tarea como si fuese una función tipo main(), ya que la tarea ejecutará el código desde que comienza hasta que termina, se marca con el estado </span><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">listo </em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">y luego el procesador es cedido al RTOS para que el despachador ponga otra tarea en ejecución. Si la tarea se mantiene en el estado </span><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">listo</em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">, entonces cuando le toque nuevamente su turno en la cola de despachos volverá a ser ejecutada desde el principio, como si hubiese un lazo infinito. Hágase la idea que en vez de un main() con un lazo infinito, tenemos tantos main() como tareas hayamos definido, que se ejecutan de acuerdo a un plan de ejecución.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span class="bbc_color" style="background-color: #f0f4f7; color: green; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">RTOS_AWAIT( ) y RTOS_WAIT( ):</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Estas dos funciones permiten pasar a una tarea del estado </span><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">en ejecución</em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> al estado </span><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">bloqueado </em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">si las condiciones lógicas que permiten continuar ejecutando código no se cumplen y permanecerán en el estado </span><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">bloqueado </em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">hasta que el RTOS detecte que puede continuar ejecutándose las pase al estado </span><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">listo</em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">. Nunca el programador puede pasar una tarea del estado </span><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">bloqueado </em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">a </span><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">listo</em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">, esto es asunto del RTOS.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span class="bbc_color" style="background-color: #f0f4f7; color: green; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">RTOS_DISABLE( )</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Permite al programador, que desde otra tarea, se cambie el estado de una tarea de listo para </span><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">deshabilitada </em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">(un estado nuevo de este RTOS), es necesario utilizar la función </span><span class="bbc_color" style="background-color: #f0f4f7; color: green; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">RTOS_ENABLE( )</span><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> para volver a conmutar del estado </span><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">deshabilitada </em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">al estado anterior en que se encontraba la tarea. Una tarea no puede auto deshabilitarse, este cambio debe hacerse desde una tarea diferente.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span class="bbc_color" style="background-color: #f0f4f7; color: green; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">RTOS_YIELD( ):</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Cede el procesador explícitamente y pasa del estado </span><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">en ejecución </em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">al estado </span><em style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">listo</em><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">. La otra forma en que con este RTOS se hace esa transición es cuando se termina el código de la tarea. Cuando le vuelva a corresponder el turno de ejecución a esta tarea, el despachador la volverá poner en ejecución en la línea posterior al yield().</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Uff, bueno, hasta aquí por hoy, creo que es más que suficiente. Espero que las condiciones de competencia no vuelvan a afectar a la tarea Foro y pueda escribirles pronto.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">El próximo tema será: El problema del productor-consumidor, uno de los más famosos problemas tipo de la programación con SO.</span></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Adjunto nuevamente el link (AGRADECIDO A LA GENTE DE TODOPIC).</div>
<div>
<br /></div>
Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-60878424162999865652016-03-04T05:22:00.000-08:002016-03-04T05:22:42.915-08:00RTOS Sobre CCS (Definiciones)Saludos estimados RTOSBLOGEROS, conseguí este hilo de resumen sobre microcontroladores PIC, empleando CCS.<br />
<strong style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"><span class="bbc_size" style="font-size: 16pt; line-height: 1.4em;">¿Qué es un Sistema Operativo?</span></strong><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Según Tanenbaum, una de las personalidades más reconocidas en el mundo académico de los SO, no es fácil dar una definición definitiva de lo que es un SO. El problema consiste en que los SO tienen la característica de comportarse para el usuario (que puede ser una persona cualquiera, un programador, o un programa de computadora), como un tipo con "doble personalidad", veamos esto con más detenimiento.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><strong style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"><span class="bbc_size" style="font-size: 12pt; line-height: 1.4em;">El SO como máquina extendida</span></strong><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">En esta faceta de la personalidad del SO, la característica destacable es simplificar al programador los detalles del funcionamiento de los dispositivos conectados al sistema. </span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Esta característica se pone también de manifiesto en aplicaciones donde no se usan los SO, un ejemplo típico son las funciones</span><span class="bbc_color" style="background-color: #f0f4f7; color: green; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> output_x()</span><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> e </span><span class="bbc_color" style="background-color: #f0f4f7; color: green; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">input_x()</span><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> del compilador CCS. Un programador puede utilizar estas funciones sin conocer que para que los datos se pongan en los pines o se lean, hay que cambiar varios registros en el uC. Se dice que estas funciones son una abstracción del proceso de E/S en puerto. Esto es bueno porque ayuda a los programadores a desarrollar soluciones más rápidamente y con menor probabilidad de errores ya que si la función está bien escrita es poco probable que falle.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">La función de la máquina extendida es ofrecer al programador una "interfaz" gracias a la cual se utilizan los recursos del sistema, sin tener que profundizar demasiado en los detalles del funcionamiento de sus diferentes componentes. Esta interfaz que el SO ofrece al programador o el usuario, se conoce comúnmente como Llamadas al Sistema o API (Aplication Programmer Interface).</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Sin embargo esta visión de los sistemas operativos es poco aplicable a nuestro entorno, en el sentido en que hoy se clasifican a las llamadas al sistema, ya que en nuestro mundo todo es pequeño en cuanto a capacidad y el crear una máquina extendida poderosa consume recursos que usualmente no tendremos. Entonces en este caso la máquina extendida queda limitada a algunas llamadas a funciones del SO y al uso de las librerías que hasta el momento hemos utilizado habitualmente.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><strong style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"><span class="bbc_size" style="font-size: 12pt; line-height: 1.4em;">El SO como administrador de recursos</span></strong><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">En este caso el SO, se comporta como un </span><strong style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">administrador</strong><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> de nuestros recursos. La ventaja de tener alguien que administre eficientemente los recursos consiste en que el SO ofrezca al usuario un conjunto de reglas para compartir y hacer uso de los recursos disponibles con eficacia y eficiencia.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Un ejemplo de administración de los recursos es el uso de la CPU, en un sistema sin SO, el programador tiene que estar muy pendiente de la implementación de su sistema, porque puede que determinados requisitos temporales en la ejecución de algunas funciones tengan que cumplirse.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">En nuestro caso lo usual es que nos rompamos el coco manipulando interrupciones, poniendo demoras, cambiando contadores y chequeando banderas… ¡Uf solo de pensarlo me dan ganas de llorar! Sin embargo un SO puede hacerse cargo de todos esos temas de manera eficaz y eficiente, incluso ahorrando memoria y tiempo, y nosotros los programadores concentrarnos en la implementación de la solución, más que en la gestión eficiente de nuestros recursos.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Por supuesto que el SO no es mago ni adivino, para ello debe ofrecernos un conjunto de mecanismos, relativamente sencillos, que nos ayuden a "indicarle" o "pedirle" que es lo que queremos hacer.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">En el caso de los uC, las implementaciones de los SO, se caracterizan por potenciar la administración de recursos del SO, por lo que es esta la faceta de personalidad que más a menudo encontraremos en los RTOS.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><strong style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"><span class="bbc_size" style="font-size: 12pt; line-height: 1.4em;">Clasificación de los SO.</span></strong><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">A continuación veremos como se clasifican los SO en cuanto a dos características esenciales</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br />
<ul class="bbc_list" style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">
<li>la administración del recurso fundamental: el procesador</li>
<li>el destino del SO</li>
</ul>
<br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Los SO se pueden clasificar de distintas maneras, pero para abreviar lo más posible, solamente me voy a referir a las ya mencionadas.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">En cuanto a la </span><strong style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">administración del procesador</strong><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;"> existen dos clasificaciones:</span><br />
<ul class="bbc_list" style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">
<li><strong>SO cooperativo (non preemptive)</strong>: en este caso es el programador quién tiene la responsabilidad de entregarle el procesador al núcleo del SO, para que éste lo entregue a la próxima tarea que esté solicitándolo o programada para ejecutarse. Es entonces, muy importante, que las llamadas a funciones que ejecutemos nunca se queden esperando mucho tiempo por determinados eventos, evitar los lazos infinitos y entregar el procesador cuando no lo necesitemos, para que otra tarea o proceso pueda utilizarlo.</li>
<li><strong>SO de tiempo compartido (preemptive)</strong>: En este caso el programador debe contar con los mismos mecanismos que en el anterior, pero el SO tiene la facultad de quitarle el procesador y dárselo a otro si usted se ha excedido en su tiempo o hay alguien que tiene mayor prioridad.</li>
</ul>
<br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">En cuanto al destino hay unas cuantas clasificaciones pero me voy a concentrar en los RTOS. Un RTOS (Sistema Operativo de Tiempo Real) es un sistema operativo concebido para dispositivos pequeños como los uC.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Aunque el concepto de "tiempo real" es muy controversial, la idea es ejecutar determinadas tareas de forma que parece que cada tarea se está ejecutando en un sistema independiente, donde el procesador y el resto de los recursos son sólo para ella.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Los RTOS pueden ser utilizados también para computadoras grandes, pero la idea sigue siendo la misma, ejecutar las tareas cumpliendo estrictamente con los requisitos temporales de cada una, sin violaciones de ninguna índole.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Otro caso de SO, son los de propósito general como UNIX, LINUX, Windows, en este caso a diferencia de los RTOS, las tareas cambian de prioridades en función de satisfacer las exigencias de los humanos que actúan como usuarios, no importa si algunas cosas se ejecutan o no cumpliendo tiempos estrictos.</span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Hasta aquí el comentario de hoy, que ha sido bastante extenso. Todavía no he terminado el esqueleto del "curso". Pero en cuanto lo tenga, lo publico, además voy a mejorar un poco lo que he escrito hasta ahora para publicarlo como documento (PDF). </span><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><br style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;" /><span style="background-color: #f0f4f7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12.48px; line-height: 17.472px;">Y basta ya de muela, que eso cansa (a ustedes y a mis pobres dedos). En la próxima entrega ya tendremos código para ejecutar y ver como funciona un RTOS, comenzaremos con el de CCS y en el futuro veremos si no mudamos para el FreeRTOS o el que desarrolla Darukur, eso lo someteremos a votación en el foro.</span>Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-69186081436637713112016-02-25T11:59:00.002-08:002019-08-23T01:03:45.443-07:00Componentes de un sistema embebido.<div style="text-align: justify;">
Un sistema embebido en principio estaría formando por un microprocesador y un
software que se ejecute sobre este. Sin embargo este software necesitara sin duda un
lugar donde poder guardarse para luego ser ejecutado por el procesador. Esto podría
tomar la forma de memoria RAM o ROM, Todo sistema embebido necesitara en alguna
medida una cierta cantidad de memoria, la cual puede incluso encontrarse dentro del
mismo chip del procesador. Además de esto normalmente un sistema embebido contara
con una serie de salidas y entradas necesarias para comunicarse con el mundo exterior.
Debido a que las tareas realizadas por sistemas embebidos son de relativa sencillez, los
procesadores comunmente usados cuentan con registros de 8 o 16 bits.
En su memoria solo reside el programa destinado a gobernar una aplicación
determinada. Sus líneas de entrada/salida soportan el conexionado de los sensores y
actuadores del dispositivo a controlar y todos los recursos complementarios disponibles
tiene como única finalidad atender a sus requerimientos.
Estas son las únicas características que tienen en común los sistemas embebidos, todo lo
demás será totalmente diferente para cada sistema embebido en particular debido a la
inmensa diversidad de aplicaciones disponibles. </div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhReYoKX4HsiXS2SyzWEAMHU5P9zGUQbr9QRGYa8fJLp40L5RIF1g1TI_3dVGcOLHC9a8aSamOFj3eSef8cHhd9YbIplYtYC-G7kuyozI0XwJ7-_btsRN-89Dt58A0rNJ6zlFDX9h3b7gTv/s1600/partes_emmbe.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhReYoKX4HsiXS2SyzWEAMHU5P9zGUQbr9QRGYa8fJLp40L5RIF1g1TI_3dVGcOLHC9a8aSamOFj3eSef8cHhd9YbIplYtYC-G7kuyozI0XwJ7-_btsRN-89Dt58A0rNJ6zlFDX9h3b7gTv/s1600/partes_emmbe.jpg" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Arquitectura básica mas empleada </div>
<div style="text-align: justify;">
Un PC embebido posee una arquitectura semejante a la de un PC. Brevemente éstos son
los elementos básicos: </div>
<div style="text-align: justify;">
Microprocesador </div>
<div style="text-align: justify;">
Es el encargado de realizar las operaciones de cálculo principales del sistema. Ejecuta
código para realizar una determinada tarea y dirige el funcionamiento de los demás
elementos que le rodean, a modo de director de una orquesta. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Memoria </div>
<div style="text-align: justify;">
En ella se encuentra almacenado el código de los programas que el sistema puede
ejecutar así como los datos. Su característica principal es que debe tener un acceso de
lectura y escritura lo más rápido posible para que el microprocesador no pierda tiempo
en tareas que no son meramente de cálculo. Al ser volátil el sistema requiere de un
soporte donde se almacenen los datos incluso sin disponer de alimentación o energía. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Caché
Memoria </div>
<div style="text-align: justify;">
más rápida que la principal en la que se almacenan los datos y el código
accedido últimamente. Dado que el sistema realiza microtareas, muchas veces
repetitivas, la caché hace ahorrar tiempo ya que no hará falta ir a memoria principal si el
dato o la instrucción ya se encuentra en la caché. Dado su alto precio tiene un tamaño
muy inferior (8 – 512 KB) con respecto a la principal (8 – 256 MB). </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Disco duro </div>
<div style="text-align: justify;">
En él la información no es volátil y además puede conseguir capacidades muy elevadas.
A diferencia de la memoria que es de estado sólido éste suele ser magnético. Pero su
excesivo tamaño a veces lo hace inviable para PCs embebidos, con lo que se requieren
soluciones como discos de estado sólido. Existen en el mercado varias soluciones de
esta clase (DiskOnChip, CompactFlash, IDE Flash Drive, etc.) con capacidades
suficientes para la mayoría de sistemas embebidos (desde 2 hasta mas de 1 GB). El
controlador del disco duro de PCs estándar cumple con el estándar IDE y es un chip
más de la placa madre. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Disco flexible </div>
<div style="text-align: justify;">
Su función es la de un disco duro pero con discos con capacidades mucho más pequeñas
y la ventaja de su portabilidad. Siempre se encuentra en un PC estándar pero no así en
un PC embebido. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
BIOS-ROM
BIOS (Basic Input & Output System, sistema básico de entrada y salida) </div>
<div style="text-align: justify;">
es código que
es necesario para inicializar el ordenador y para poner en comunicación los distintos
elementos de la placa madre. La ROM (Read Only Memory, memoria de sólo lectura no
volátil) es un chip donde se encuentra el código BIOS. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
CMOS-RAM </div>
<div style="text-align: justify;">
Es un chip de memoria de lectura y escritura alimentado con una pila donde se
almacena el tipo y ubicación de los dispositivos conectados a la placa madre (disco
duro, puertos de entrada y salida, etc.). Además contiene un reloj en permanente
funcionamiento que ofrece al sistema la fecha y la hora. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Chip Set
Chip </div>
<div style="text-align: justify;">
que se encarga de controlar las interrupciones dirigidas al microprocesador, el
acceso directo a memoria (DMA) y al bus ISA, además de ofrecer temporizadores, etc.
Es frecuente encontrar la CMOS-RAM y el reloj de tiempo real en el interior del Chip
Set. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Entradas y salidas al sistema</div>
<div style="text-align: justify;">
<br /></div>
Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-13854097539330475812016-02-25T11:52:00.000-08:002016-02-25T11:52:53.680-08:00Definición formal de sistema embebido.<div style="text-align: justify;">
Se entiende por sistemas embebidos a una combinación de hardware y software de
computadora, sumado tal vez a algunas piezas mecánicas o de otro tipo, diseñado para
tener una función específica. Es común el uso de estos dispositivos pero pocos se dan
cuenta que hay un procesador y un programa ejecutándose que les permite funcionar. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Esto ofrece un contraste con la computadora personal, que si bien también esta formada
por una combinación de hardware y software mas algunas piezas mecánicas (discos
rígidos, por ejemplo). Sin embargo la computadora personal no es diseñada para un uso
especifico. Si no que es posible darle muchos usos diferentes.
Muchas veces un sistema embebido es un componente de un sistema mucho mas
grande, como por ejemplo los sistemas de frenos o el sistema de inyección de
combustible, en automóviles actuales son sistemas embebidos. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Esta combinación de software y hardware puede ser reemplazada en muchos casos por
un circuito integrado que realice la misma tarea. Pero una de las ventajas de los sistemas
embebidos es su flexibilidad. Ya que a la hora de realizar alguna modificación resulta
mucho mas sencillo modificar una líneas de código al software del sistema embebido
que reemplazar todo el circuito integrado.
Un uso muy común de los sistemas embebidos es en los sistemas de tiempo real,
entendiéndose por sistemas en tiempo real a aquellos sistemas en los que el control del
tiempo es vital para el correcto funcionamiento. Los sistemas en tiempo real necesitan
realizar ciertas operaciones o cálculos en un limite de tiempo. Donde ese limite de
tiempo resulta crucial. Un ejemplo claro de un sistema de tiempo real es el control de
trafico aéreo. </div>
<br />
<b>Algo de historia</b><br />
<b><br /></b>
<br />
<div style="text-align: justify;">
El primer sistema embebido reconocido fue el sistema de guía de Apolo desarrollado
por el laboratorio de desarrollo del MIT para las misiones Apolo hacia la luna. Cada
vuelo hacia la luna tenía dos de estos sistemas. La función era manejar el sistema de
guía inercial de los módulos de excursión lunar. En un comienzo fue considerado como
el elemento que más riesgo presentaba en el proyecto Apolo. Este sistema de cómputo
fue el primero en utilizar circuitos integrados y utilizaba una memoria RAM magnética,
con un tamaño de palabra de 16 bits. El software fue escrito en el lenguaje ensamblador
propio y constituía en el sistema operativo básico, pero capaz de soportar hasta ocho
tareas simultáneas.
El primer sistema embebido producido en masa, fue el computador guía del misil
norteamericano Minuteman II en 1962. El principal aspecto de diseño del computador
del Minuteman, es que además de estar construido con circuitos integrados, permitía
reprogramar los algoritmos de guía del misil para la reducción de errores, y permitía
realizar pruebas sobre el misil ahorrando así el peso de los cables y conectores. </div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXOSjh1mu8bzWnl2HJUgiUuZVScJR-uZ4PjUwGj5JChJ3ZWhvxyLjFWvKvUjWY2kn-KiBJSohl1YwUPef0UkY4pHGW8UutMx8i_Yt8z8RxcxwbcNPkcZ1SRDTJJVSh8bdxC9HGrn_i5BVb/s1600/apolo_emmbebido.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="516" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXOSjh1mu8bzWnl2HJUgiUuZVScJR-uZ4PjUwGj5JChJ3ZWhvxyLjFWvKvUjWY2kn-KiBJSohl1YwUPef0UkY4pHGW8UutMx8i_Yt8z8RxcxwbcNPkcZ1SRDTJJVSh8bdxC9HGrn_i5BVb/s640/apolo_emmbebido.jpg" width="640" /></a></div>
<div style="text-align: justify;">
<br /></div>
Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-27793377606165662572016-02-25T11:35:00.005-08:002016-02-25T11:36:29.413-08:00Técnicas Digitales II Cortex™ M3Excelente LINK sobre sistema enmbebidos sobre ARM CORTEX M3.<br />
<br />
RESUMEN<br />
El procesador ARM Cortex™-M3
<br />
ARM® y arquitectura ARM
Set de instrucciones
<br />
Thumb®-2 Instruction Set Architecture (ISA)
<br />
Alg g una imágenes de Cortex™-M3
<br />
Aplicaciones del procesador Cortex™-M3
<br />
Temas a profundizar
<br />
Lecturas adicionales <br />
<a href="https://www.blogger.com/goog_1039403950"><br /></a>
<a href="http://laboratorios.fi.uba.ar/lse/seminario/material-1erC2010/Tecnicas_Digitales_II-R4052-2010-Cortex_M3-Introduccion.pdf">http://laboratorios.fi.uba.ar/lse/seminario/material-1erC2010/Tecnicas_Digitales_II-R4052-2010-Cortex_M3-Introduccion.pdf</a><br />
<br />Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-44923689277700220922016-02-25T11:28:00.000-08:002016-02-25T11:37:56.732-08:00FREERTOS (Con ejercicios)<div style="padding-left: 20px;">
<b style="font-family: Roboto, sans-serif;">(EXCELENTE ENLACE </b><span style="font-family: "roboto" , sans-serif;"><b>http://mcgilbertobarron.com/freeRTOS.php)</b></span></div>
<div style="font-family: Roboto, sans-serif; padding-left: 20px;">
<b>Descripción:</b><br />
Un sistema operativo en tiempo real es un segmento de codigo con un juego de APs que un usuario puede utilizar para desarrollar aplicaciones.</div>
<div style="font-family: Roboto, sans-serif; padding-left: 20px;">
<b>Caracteristicas: </b><br />
•FreeRTOS nunca realiza una operación no determinista (el paso de una lista unida, una sección crítica o una interrupción).<br />
•El temporizador de software es muy eficiente, no usa ningún tiempo del CPU a no ser que un temporizador en realidad necesite tratamiento. Los temporizadores de software no contienen variables que tienen que ser contadas debajo de 0.<br />
•Las listas de tareas Bloqueadas no consumen un tiempo periódico.<br />
•El modelo de uso de coleta de FreeRTOS logra combinar la simplicidad con la flexibilidad a los atributos que son normalmente son exclusivos.<br />
•La reutilización de código obtenida radicalmente reduce en general el tamaño de código, que al mismo tiempo ayuda a realizar pruebas.</div>
<div style="font-family: Roboto, sans-serif; padding-left: 20px;">
<b>Principales objetivos:</b><br />
•Proveer un rtos sencillo de utilizar<br />
•Tamaño de codigo reducido<br />
•Robusto</div>
<br style="font-family: Roboto, sans-serif;" />
<div style="font-family: Roboto, sans-serif; padding-left: 20px;">
La mayoría de los sistemas operativos se caracterizan por dar soporte a las siguiente areas:<br />
<br />
•Determinismo<br />
•Sensibilidad<br />
•Control del usuario<br />
•Fiabilidad<br />
•Tolerancia a los fallos<br />
<br />
<b>Determinismo:</b><br />
Un sistema operativo es determinista si realiza las operaciones en instantes fijos y determinados o en intervalos de tiempo predeterminados. Cuando hay varios procesos compitiendo por el mismo recurso, no será por completo determinista. Para que el sistema sea determinista se tiene que tener en cuenta dos puntos: la velocidad con la que pueda responder a las interrupciones; y si el sistema posee suficiente capacidad para gestionar las peticiones en tiempos definidos.<br />
<br />
<b>Sensibilidad:</b><br />
Esta característica la determina el tiempo que tarda un RTOS en reconocer una interrupción, después de reconocerla depende de “La cantidad de tiempo necesaria para iniciar la gestión de la interrupción y empezar la ejecución de la rutina de servicio a la interrupción (Interrupt Service Routine ISR)”. Si la ejecución de ISR requiere un cambio de proceso el tiempo será mayor afectando drásticamente la sensibilidad. En conjunto, el determinismo y la sensibilidad conforman el tiempo de respuesta a sucesos externos.<br />
<br />
<b>Control de usuario:</b><br />
Esta característica es mayor en un RTOS que en un sistema de tiempo compartido, en el segundo caso, el usuario no puede asignar prioridades, decidir sobre algoritmos de planificación o que procesos pueden estar residentes en la memoria.<br />
<br />
<b>Fiabilidad:</b><br />
Un RTOS controla sucesos que tienen lugar en el entorno y su propia escala de tiempo, las pérdidas o degradaciones en el sistema , pueden tener consecuencias en el proceso controlado.<br />
<br />
<b>Tolerancia a fallos:</b><br />
Un RTOS se diseña para responder ante varias formas de fallo. Éste intentará corregir el problema o minimizar sus efectos antes de proseguir con la ejecución. Se asocia la Estabilidad a la Tolerancia de Fallos, se considera un sistema estable, cuando en los casos en los que es imposible cumplir todos los plazos de ejecución de tareas se cumplan al menos los de las más críticas y de mayor prioridad. </div>
<br style="font-family: Roboto, sans-serif;" />
<div style="font-family: Roboto, sans-serif; padding-left: 20px;">
<b>FreeRTOS:</b><br />
El Rtos FreeRTOS es un sistema operativo en tiempo real desarrollado profesionalmente con estrictas normas de calidad. Es robusto y brinda soporte a los usuarios mediante un foro de ayuda.Su licencia es gratuita y puede ser utilizado para desarrollar aplicaciones comerciales.</div>
<br style="font-family: Roboto, sans-serif;" />
<h2 style="font-family: Roboto, sans-serif; margin-top: 0px; text-align: center;">
Ejercicios del FreeRTOS</h2>
<div style="font-family: Roboto, sans-serif; padding-left: 20px;">
<span style="background-color: #cccccc;">Descarga los ejercicios del FreeRTOS del siguiente enlace <a href="http://mcgilbertobarron.com/zip/source-code-for-LPC17xx-edition-examples.zip" style="color: white;">Ejercicios</a></span></div>
<div style="font-family: Roboto, sans-serif; padding-left: 20px;">
<span style="background-color: #cccccc;">Descarga los ejercicios del FreeRTOS del siguiente enlace para la version 7 del LPCXpresso Ide <a href="https://www.dropbox.com/s/38p80b6lkgzta6h/source-code-for-LPC17xx-edition-examples%20%282%29.zip" style="color: white;">Ejercicios</a></span></div>
<div style="font-family: Roboto, sans-serif; padding-left: 20px;">
<span style="background-color: #cccccc;">Descarga el archivo FreeRTOSPlus del siguiente enlace <a href="https://www.dropbox.com/s/0h0w1ppf939p51b/FreeRTOSPlus.zip?dl=0" style="color: white;">FreeRTOSPlus</a></span></div>
<div style="font-family: Roboto, sans-serif; padding-left: 20px;">
<b>Otros RTOS:</b><br />
µC/OS-II<br />
Es portable, ROMable, escalable preventivo, kernel determinístico multitareas en tiempo real para microprocesadores, microcontroladores y DSPs.</div>
Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-26807371663449576192016-02-25T11:25:00.001-08:002016-02-25T11:25:33.902-08:00RTOS mas básico no se puede!<div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #333333; font-family: Verdana, Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
Un Sistema Operativo de tiempo Real (RTOS) es una colección de recursos de software que provee al desarrollador de sistemas embebidos el esqueleto o estructura básica del software sobre las cuales se va a implementar una solución específica. El RTOS permite mejorar la eficiencia de los sistemas embebidos ya que simplifica enormemente el manejo de las tareas o procesos. Un RTOS siempre incluye un Kernel el cual es un programa relativamente pequeño pero bastante confiable que corre casi independientemente del resto de las tareas; el cual es el encargado de administrar las secuencias de las actividades a ser ejecutadas por la CPU.<span id="more-466" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"></span></div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #333333; font-family: Verdana, Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
Un sistema embebido esta generalmente compuesto por secuencias de código comúnmente llamadas “tareas”. El Kernel cambia la ejecución de las actividades (para los sistemas embebidos generalmente emplean “single cores” de CPU por lo cual solo puede se ejecutar una sola tarea específica en un momento de tiempo determinado) dependiendo de las demandas dadas por Kernel secuenciador. El Kernel también incluye una colección de recursos con el fin de intercambiar mensajes entre las diversas tareas así como también para sincronizar actividades dentro del sistema embebido. Gracias a estos recursos, se evita el uso de variables globales en el sistema (las cuales son peligrosas debido a que literalmente “explotan” con el uso de multitareas).</div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #333333; font-family: Verdana, Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
El RTOS, al igual que los programas, debe usar los recursos de memoria RAM de la CPU. La cantidad de memoria utilizada por el sistema operativo se conoce a menudo como “footprint” (huella) y por lo general esta dada en Kbytes. Con el fin de ahorrar recursos de memoria, los RTOS generalmente incluyen únicamente los servicios indispensables que el usuario necesita. La mayoría de ellos permiten ser configurados extensivamente para satisfacer las necesidades específicas del diseñador. Los RTOS también tienen otros recursos adicionales como: administrador de archivos del sistema, interfaz gráfica del usuario (GUI), protocolos de comunicaciones (conjunto de librerías para TCP/IP, USB, etc.), ayudas de depuración y otros módulos adicionales que son empleados según la aplicación que se desee desarrollar.</div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #333333; font-family: Verdana, Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
Un aspecto importante a considerar de los sistemas operativos de tiempo real es su capacidad de ser determinísticos; esto es, responder a tareas específicas dentro de periodos de tiempo determinados. El RTOS generalmente garantiza respuestas en tiempo real a eventos reales lo cual es posible mediante control de la ejecución de las tareas a niveles de microsegundo (dependiendo de la CPU), de allí su nombre “tiempo real”.</div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #333333; font-family: Verdana, Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
Una diferencia fundamental de los RTOS con los sistemas operativos de escritorio para computadores es que una vez iniciado este, el sistema operativo toma control de la máquina tan pronto como es encendida y luego de esto permite la inicialización de las aplicaciones. Esto es, las aplicaciones y el sistema operativos en los computadores de escritorio son compilados y enlazados de manera separada. Por otro lado, en los sistemas embebidos, el RTOS y la aplicación son generalmente compilados al mismo tiempo y están mucho mas atados el uno de la otra. En un RTOS todo es diferente, cada actividad desarrollada por la CPU puede ser segregada a su propia Tarea, la cual esta bajo la supervisión del Kernel, por ejemplo, una tarea puede manejar la visualización en el display mientras que otra puede estar controlando las comunicaciones (TCP por ejemplo) y una tercera puede estar realizando algún tipo de procesamiento con los datos. En general, el manejador de interrupciones maneja cierto número de interrupciones. Las tareas pueden ser creadas, programadas para ser ejecutadas en un momento específico; de igual manera pueden ser borradas o re-creadas en el futuro (del flujo del programa) según la necesidad. Todos estos mecanismos simplifican ampliamente la labor del ingeniero programador, ya que en vez de usar retardos codificados en software, los ciclos de la CPU nunca son desperdiciados, y la designación de tareas puede ser mas sencilla en vez de emplear código “espagueti” intentando coordinar múltiples tareas las cuales la mayoría de veces no se relacionan las unas con las otras.</div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #333333; font-family: Verdana, Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
Cuando utilizar un RTOS?</div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #333333; font-family: Verdana, Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
En general, cuando un sistema embebido requiere la ejecución de múltiples actividades independientes, un RTOS es la solución preferida debido a su robustez, alta confiabilidad y código simplificado. Por ejemplo, si nuestro sistema requiere manejar datos de múltiples fuentes, manejar varias salidas mientras que al mismo tiempo realiza cómputos y procesamiento; el RTOS es la solución ideal. Debido a la creciente complejidad de los protocolos de comunicación (CAN, TCP y USB por ejemplo) se requiere a menudo el manejo de múltiples tareas y complejos arbitramientos los cuales pueden beneficiarse ampliamente con el uso de un RTOS.</div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #333333; font-family: Verdana, Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
Abajo se mencionan algunos Sistemas Operativos de Tiempo Real – RTOS que son de código-abierto y no-comerciales, los cuales se pueden emplear y modificar con el fin de hacer su sistema embebido más robusto y poderoso</div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #333333; font-family: Verdana, Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
– FreeRTOS</div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #333333; font-family: Verdana, Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
– µC/OS-II Kernel de Micrium</div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #333333; font-family: Verdana, Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
– FreeOSEK</div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #333333; font-family: Verdana, Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
– Tnkernel</div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #333333; font-family: Verdana, Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
– eCos</div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #333333; font-family: Verdana, Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
– CooCox CoOS</div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #333333; font-family: Verdana, Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
– TinyOS</div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #333333; font-family: Verdana, Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
– PICos18</div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #333333; font-family: Verdana, Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
– AvrX</div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #333333; font-family: Verdana, Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
– RTEMS</div>
</div>
Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-18980555787615127392016-02-24T09:38:00.001-08:002016-02-24T09:38:17.877-08:00RTOS tutorial basico.<div style="text-align: justify;">
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;"><span class="">En esta sección se ofrece un tutorial sobre cómo escribir aplicaciones que utilizan un RTOS en microcontroladores de memoria limitada. </span>Si usted está buscando un turorial FreeRTOS específica o un tutorial más completo sobre el uso de un RTOS en un sistema embebido, entonces los </span><a href="http://shop.freertos.org/FreeRTOS_tutorial_books_and_reference_manuals_s/1825.htm" style="background-color: white; color: #0000ee; font-family: arial; font-size: 14px; line-height: 21px; text-decoration: none;" target="_blank">libros FreeRTOS</a><span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;"> será un recurso más valioso.</span><span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">Esta parte del sitio web presenta cuatro contrastantes soluciones de diseño a una aplicación en tiempo real incrustado hipotético.</span><span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;"> </span><span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">La idoneidad de cada solución se juzga para ordenadores integrados con diferentes capacidades de memoria RAM, ROM y procesamiento.</span><span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;"> </span><span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">Además se evalúa la simplicidad y facilidad de mantenimiento correspondiente de cada diseño. </span><span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">Esta no es la intención de presentar una lista exhaustiva de los posibles diseños, sino una guía para las formas en que el kernel en tiempo real FreeRTOS puede ser utilizado.</span></div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px; text-align: justify;">
Cabe señalar que esta sección fue escrito hace varios años - cuando FreeRTOS se utilizó principalmente en muy pequeñas microcontroladores. Desde ese momento se ha vuelto más común el uso de FreeRTOS en microcontroladores mucho más grandes que no están tan restringidos en la ROM y RAM que proporcionan.</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px; text-align: justify;">
<img src="http://www.freertos.org/tutorial/syscontext.gif" /></div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px; text-align: justify;">
La aplicación se ejecutará en una placa computadora incorporada que debe controlar una planta manteniendo al mismo tiempo las dos interfaces de usuario locales y remotos.</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
Se representa anteriormente, el sistema consta de:</div>
<ol style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<li>Un ordenador incorporado dentro de un terminal de control.</li>
<li>Dos sensores en red de bus de campo.</li>
<li>La planta siendo controlado (podría ser cualquier cosa, motor, calentador, etc.). Esto está conectado en la misma red de bus de campo.</li>
<li>Un teclado de matriz que se analizará con la finalidad general de IO.</li>
<li>Dos indicadores LED.</li>
<li>Una pantalla LCD.</li>
<li>Un servidor web incorporado al que un equipo de monitorización remota puede adjuntar.</li>
<li>Una interfaz RS232 a una utilidad de configuración que se ejecuta en un PDA.</li>
</ol>
<div>
<h2 style="background-color: white; color: #1a3065; font-family: arial; font-size: 22px; line-height: 21px;">
<span class="">Requisitos de software de primer nivel</span></h2>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">Aquí estamos interesados en los requerimientos de secuencia y temporización, en lugar de los requerimientos funcionales exactos.</span><div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /></div>
<h3 style="background-color: white; color: #1a3065; font-family: arial; font-size: 18px;">
Control de la planta</h3>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">Cada ciclo de control se realice la siguiente secuencia:</span><ol style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<li>Transmitir una trama en el bus de campo para solicitar los datos de los sensores conectados en red.</li>
<li>Espere a recibir los datos de ambos sensores.</li>
<li>Ejecutar el algoritmo de control.</li>
<li>Transmitir una orden a la planta.</li>
</ol>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">La función de control del ordenador incorporado transmitirá una solicitud cada 10 ms exactamente, y el comando resultante se transmitirá dentro de 5 ms de esta solicitud. El algoritmo de control depende de la sincronización exacta, por lo que es de suma importancia que se cumplan estos requisitos de tiempo. El tiempo de t de control pudiera dar o no convergencia al sistema de control base.</span></div>
<div>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;"><br /></span></div>
<div>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;"><b>CONTROL tx 10ms Rx 5ms</b></span></div>
<div>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;"><h3 style="color: #1a3065; font-size: 18px; line-height: normal;">
Interfaz del operador local</h3>
<div style="text-align: justify;">
El teclado y la pantalla LCD pueden ser utilizados por el operador para seleccionar, ver y modificar los datos del sistema. La interfaz de operador funcionará mientras la planta está siendo controlado.</div>
Para asegurar que no se pierdan las pulsaciones de teclas del teclado deberá ser escaneado por lo menos cada 15 ms. La pantalla LCD se actualizará en un plazo de 50 ms de un ser tecla pulsada.<br />
Nótese que durante el diseño del sistema solo se estan indicando tipo receta de cocina requerimientos de tiempo e importancia de dichos esquemas dentro del sistema.<br />
<br />
<b>PANTALLA t actualización: 50ms</b><br />
<b>TECLADO t escaneo: 15ms</b><br />
<span style="color: #1a3065; font-size: 18px; line-height: normal;"><br /></span>
<span style="color: #1a3065; font-size: 18px; line-height: normal;">LED</span><br />
<span style="color: #1a3065; font-size: 18px; line-height: normal;"><br /></span>
El LED se utiliza para indicar el estado del sistema. Un LED verde intermitente indicará que el sistema está funcionando como se esperaba. Un LED rojo intermitente indicará una condición de falla.<br />
<div style="text-align: justify;">
El LED correcta se encenderá y se apagará una vez cada segundo. Esta tasa de encendido se mantiene entre 50 ms.</div>
<br />
<b>LED On-Off: 50ms</b><br />
<br />
<h3 style="color: #1a3065; font-size: 18px; line-height: normal;">
Interfaz RS232 PDA</h3>
La interfaz RS232 PDA será capaz de ver y acceder a los mismos datos que la interfaz de operador local, y aplicar las mismas restricciones de tiempo - ignorando cualquier tiempos de transmisión de datos.<br />
<b><br /></b>
<b>TXRX RS232 (BAUDIOS): 9600bps</b><br />
<br />
<h3 style="color: #1a3065; font-size: 18px; line-height: normal;">
Interfaz de TCP / IP</h3>
El servidor web incorporado deberá atender las peticiones HTTP dentro de un segundo. </span></div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /></div>
<h1 style="background-color: white; color: #1a3065; font-family: arial; font-size: 27px; line-height: 30px;">
<span class="">Solución # 1 SIN RTOS </span><small style="font-size: 16px;">¿Por qué utilizar un kernel RTOS?</small><br /><small style="font-size: 16px;"></small></h1>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /><b><a href="http://www.freertos.org/tutorial/index.html" style="color: #0000ee; text-decoration: none;" title="Anterior"><<<</a> | <a href="http://www.freertos.org/tutorial/solution2.html" style="color: #0000ee; text-decoration: none;" title="Siguiente">>>></a></b></div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
Véase también el artículo FAQ " <a href="http://www.freertos.org/FAQWhat.html#WhyUseRTOS" style="color: #0000ee; text-decoration: none;">¿Por qué utilizar un RTOS?</a> ".</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
</div>
<h2 style="background-color: white; color: #1a3065; font-family: arial; font-size: 22px; line-height: 21px;">
Sinopsis</h2>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
Muchas aplicaciones pueden ser producidos sin el uso de un núcleo RTOS y esta página describe un enfoque que podría ser tomada.</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
A pesar de que la aplicación en este caso es probable que sea demasiado complejo para este tipo de enfoque de la página se incluye para destacar tanto los posibles problemas y proporcionar un contraste con los siguientes diseños de software basada RTOS.</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
</div>
<h2 style="background-color: white; color: #1a3065; font-family: arial; font-size: 22px; line-height: 21px;">
Implementación</h2>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
Esta solución utiliza un enfoque de bucle infinito tradicional, por lo que cada componente de la aplicación es representada por una función que se ejecuta hasta su finalización.</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
Lo ideal sería que un temporizador de hardware se utiliza para programar la función de control de la planta momento crítico. Sin embargo, tener que esperar a la llegada de datos y el complejo cálculo realizado hacen la función de control inadecuado para la ejecución dentro de una rutina de servicio de interrupción.</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /></div>
<h3 style="background-color: white; color: #1a3065; font-family: arial; font-size: 18px;">
Concepto de la Operación</h3>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
La frecuencia y el orden en el que los componentes se denominan en el bucle infinito se pueden modificar para introducir algo de priorización. Un par de tales alternativas de secuenciación se proporcionan en el ejemplo siguiente.</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /></div>
<h3 style="background-color: white; color: #1a3065; font-family: arial; font-size: 18px;">
Configuración del planificador</h3>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
El planificador RTOS no se utiliza.</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /></div>
<h3 style="background-color: white; color: #1a3065; font-family: arial; font-size: 18px;">
Evaluación</h3>
<table border="0" style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;" summary=""><tbody>
<tr><td><span style="font-family: arial;"><img src="http://www.freertos.org/tutorial/good.gif" style="max-width: 100%;" /></span></td><td><span style="font-family: arial;">tamaño pequeño código.</span></td></tr>
<tr><td><span style="font-family: arial;"><img src="http://www.freertos.org/tutorial/good.gif" style="max-width: 100%;" /></span></td><td><span style="font-family: arial;">No depende de código fuente terceros.</span></td></tr>
<tr><td><span style="font-family: arial;"><img src="http://www.freertos.org/tutorial/good.gif" style="max-width: 100%;" /></span></td><td><span style="font-family: arial;">Sin memoria RAM RTOS, ROM o procesamiento de arriba.</span></td></tr>
<tr><td><span style="font-family: arial;"><img src="http://www.freertos.org/tutorial/bad.gif" style="max-width: 100%;" /></span></td><td><span style="font-family: arial;">Difícil atender a los requisitos de tiempo complejas.</span></td></tr>
<tr><td><span style="font-family: arial;"><img src="http://www.freertos.org/tutorial/bad.gif" style="max-width: 100%;" /></span></td><td><span style="font-family: arial;">No escala bien sin un gran aumento de la complejidad.</span></td></tr>
<tr><td><span style="font-family: arial;"><img src="http://www.freertos.org/tutorial/bad.gif" style="max-width: 100%;" /></span></td><td><span style="font-family: arial;">Timing difícil de evaluar o mantener debido a las interdependencias entre las diferentes funciones.</span></td></tr>
</tbody></table>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /></div>
<h3 style="background-color: white; color: #1a3065; font-family: arial; font-size: 18px;">
Conclusión</h3>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
El enfoque de bucle simple es muy bueno para pequeñas aplicaciones y aplicaciones con requisitos de tiempo flexibles - pero puede llegar a ser complejos, difíciles de analizar y difícil de mantener si se amplía a los sistemas más grandes.</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
</div>
<hr style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;" />
<h2 style="background-color: white; color: #1a3065; font-family: arial; font-size: 22px; line-height: 21px;">
Ejemplo</h2>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
Este ejemplo es una aplicación parcial de la aplicación hipotética introducido previamente.</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /></div>
<h3 style="background-color: white; color: #1a3065; font-family: arial; font-size: 18px;">
La función de control de la planta</h3>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
La función de control puede ser representado por el siguiente pseudo código:<span style="font-family: courier;"></span></div>
<pre style="font-size: 13px;">PlantControlCycle (void)
{
TransmitRequest ();
WaitForFirstSensorResponse ();
(datos si ya ha recibido el primer sensor)
{
WaitForSecondSensorResponse ();
(datos si ya ha recibido segundo sensor)
{
PerformControlAlgorithm ();
TransmitResults ();
}
}
}
</pre>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /></div>
<h3 style="background-color: white; color: #1a3065; font-family: arial; font-size: 18px;">
Las funciones de interfaz humana</h3>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<span style="font-family: courier;"></span>Esto incluye el teclado, pantalla LCD, comunicaciones RS232 y el servidor web incorporado.</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
El siguiente pseudo código representa una estructura de bucle infinito simple para el control de estas interfaces.<span style="font-family: courier;"></span></div>
<pre style="background-color: white; color: #202020; font-size: 13px;"><span style="font-family: courier;">int main (void)
{
Inicializar ();
para( ;; )
{
ScanKeypad ();
UpdateLCD ();
ProcessRS232Characters ();
ProcessHTTPRequests ();
}
<span style="color: green;">// Nunca debe llegar hasta aquí.</span>
return 0;
}
</span></pre>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
Esto supone dos cosas: En primer lugar, las comunicaciones IO es amortiguada por las rutinas de servicio de interrupción de modo periféricos no requieren votación. En segundo lugar, la función de llamadas individuales dentro del bucle ejecutar lo suficientemente rápido como para que se cumplan todos los requisitos máximos de tiempo.</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
</div>
<hr style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;" />
<h2 style="background-color: white; color: #1a3065; font-family: arial; font-size: 22px; line-height: 21px;">
La programación de la función de control de la planta</h2>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
La longitud de la función de control significa que no puede simplemente ser llamado desde una interrupción de 10 ms temporizador.</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
Añadiéndolo al bucle infinito requeriría la introducción de algún tipo de control temporal. Por ejemplo ... :<span style="font-family: courier;"></span></div>
<pre style="background-color: white; color: #202020; font-size: 13px;"><span style="font-family: courier;"><span style="color: green;">// Bandera utiliza para marcar el momento en que una
// Ciclo de control debe comenzar (exclusión mutua
// Cuestiones que se ignoran para este ejemplo).</span>
int TimerExpired;
<span style="color: green;">// Rutina de servicio de interrupción del temporizador. Esta
// Está configurado para ejecutar cada 10 ms.</span>
TimerInterrupt vacío (vacío)
{
TimerExpired = true;
}
<span style="color: green;">// Principal () todavía contiene el bucle infinito -
// Dentro de la cual una llamada al control de la planta
// Función se ha añadido.</span>
int main (void)
{
Inicializar ();
para( ;; )
{
<span style="color: green;">// Girar hasta que es hora para la siguiente
// Ciclo.</span>
si (TimerExpired)
{
PlantControlCycle ();
TimerExpired = false;
ScanKeypad ();
UpdateLCD ();
<span style="color: green;">// Los LEDs podrían utilizar una cuenta de
// El número de interrupciones, o una
// Diferente temporizador.</span>
ProcessLEDs ();
<span style="color: green;">// Comms tampones deben ser grandes
// Suficiente para mantener el valor de 10 ms
// Datos.</span>
ProcessRS232Characters ();
ProcessHTTPRequests ();
}
<span style="color: green;">// El procesador se puede poner a dormir
// Aquí siempre es despertado por cualquier
// interrumpir.</span>
}
<span style="color: green;">// Nunca debe llegar hasta aquí.</span>
return 0;
}
</span></pre>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
... Pero esto no es una solución aceptable:</div>
<ul style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<li>Un retraso o fallo en los resultados de bus de campo en un aumento del tiempo de ejecución de la función de control de la planta. Los requisitos de tiempo de las funciones de la interfaz lo más probable es ser violada.</li>
<li>La ejecución de todas las funciones de cada ciclo también podría resultar en una violación de la sincronización del ciclo de control.</li>
<li>Fluctuación en el tiempo de ejecución puede causar ciclos se puede perder. Por ejemplo, el tiempo de ejecución de <tt>ProcessHTTPRequests ()</tt> podría ser insignificante cuando no se han recibido solicitudes HTTP, pero bastante largo cuando se servía una página.</li>
<li>No es muy fácil de mantener - que depende de cada función que se ejecuta dentro del tiempo máximo.</li>
<li><span class="">Los tampones de comunicación solamente se limpian una vez por ciclo que requiere su longitud a ser más grandes de lo que sería necesario.</span></li>
</ul>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /></div>
<hr style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;" />
<h2 style="background-color: white; color: #1a3065; font-family: arial; font-size: 22px; line-height: 21px;">
estructuras alternativas</h2>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
Dos factores pueden ser identificados que limitan la idoneidad de la estructura de bucle sencillo descrito hasta ahora.</div>
<ol style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<li>La duración de cada llamada a la funciónPermitiendo que cada función para ejecutar en su totalidad lleva demasiado tiempo. Esto se puede prevenir mediante el fraccionamiento de cada función en un número de estados.Sólo un estado se ejecuta cada llamada. El uso de la función de control como un ejemplo:<span style="font-family: courier;"></span><br />
<pre style="font-size: 13px; line-height: normal;"><span style="font-family: courier;"><span style="color: green;">// Define los estados para la función del ciclo de control.</span>
typdef enumeración eCONTROL_STATES
{<span class="">
ESTART, </span><span style="color: green;"><span class="">// Iniciar nuevo ciclo.</span></span><span class="">
eWait1, </span><span style="color: green;"><span class="">// Espera a que la primera respuesta del sensor.</span></span><span class="">
eWait2 </span><span style="color: green;"><span class="">// esperar a la segunda respuesta del sensor.</span></span>
eControlStates};
PlantControlCycle (void)
{
eControlState raíces estática = ESTART;
interruptor (raíces)
{
ESTART caso:
TransmitRequest ();
Estate = eWait1;
romper;
eWait1 caso;
(datos si ya ha recibido el primer sensor)
{
Estate = eWait2;
}
<span style="color: green;">// ¿Cómo están los tiempos de espera para ser manipulados?</span>
romper;
eWait2 caso;
(datos si ya ha recibido el primer sensor)
{
PerformControlAlgorithm ();
TransmitResults ();
Estate = ESTART;
}
<span style="color: green;">// ¿Cómo están los tiempos de espera para ser manipulados?</span>
romper;
}
}
</span></pre>
Esta función ahora es estructuralmente más compleja, e introduce nuevos problemas de agenda. El código en sí será más difícil de entender cuando se agregan los estados adicionales - por ejemplo, para manejar las condiciones de tiempo de espera y de error.</li>
<li>La granularidad del temporizadorUn temporizador de intervalo más corto dará más flexibilidad.<br />
La implementación de la función de control como una máquina de estados (una al hacerlo haciendo cada llamada más corta) puede permitir que se llama a partir de una interrupción del temporizador. El intervalo del temporizador tendrá que ser lo suficientemente corto como para asegurar la función se vuelve a llamar a una frecuencia que cumpla con los requisitos de tiempo. Esta opción está plagado de problemas de tiempo y mantenimiento.<br />
Alternativamente, la solución bucle infinito podría modificarse para llamar a diferentes funciones en cada bucle - con la función de control de alta prioridad se llama con más frecuencia:<span style="font-family: courier;"></span><br />
<pre style="font-size: 13px; line-height: normal;"><span style="font-family: courier;">int main (void)
{
int contador = -1;
Inicializar ();
<span style="color: green;">// Cada función se implementa como un estado
// Máquina de modo está garantizado para ejecutar
// Rápidamente - pero debe ser llamado con frecuencia.
// Nota la frecuencia del temporizador se ha planteado.</span>
para( ;; )
{
si (TimerExpired)
{
Contador ++;
interruptor (Contador)
{
caso 0: ControlCycle ();
ScanKeypad ();
romper;
Caso 1: UpdateLCD ();
romper;
Caso 2: ControlCycle ();
ProcessRS232Characters ();
romper;
Caso 3: ProcessHTTPRequests ();
<span style="color: green;">// Volver a empezar</span>
Contador = -1;
romper;
}
TimerExpired = false;
}
}
<span style="color: green;">// Nunca debe llegar hasta aquí.</span>
return 0;
}
</span></pre>
Más información se puede introducir por medio de contadores de eventos, por lo que la funcionalidad de prioridad más bajo sólo se llama si se ha producido un evento que requiere servicio:<span style="font-family: courier;"><pre style="font-size: 13px; line-height: normal;"> para( ;; )
{
si (TimerExpired)
{
Contador ++;
<span style="color: green;">// Procesar el ciclo de control cada otro bucle.</span>
interruptor (Contador)
{
caso 0: ControlCycle ();
romper;
Caso 1: contador = -1;
romper;
}
<span style="color: green;">// Proceso de sólo una de las otras funciones. único proceso
// Una función si hay algo que hacer. EventStatus ()
// Comprueba si hay eventos desde la última iteración.</span>
interruptor (EventStatus ())
{
EVENT_KEY caso: ScanKeypad ();
UpdateLCD ();
romper;
EVENT_232 caso: ProcessRS232Characters ();
romper;
EVENT_TCP caso: ProcessHTTPRequests ();
romper;
}
TimerExpired = false;
}
}
</pre>
</span>Proceso de sucesos en esta forma reducirá los ciclos de CPU desperdiciados pero el diseño sigue exhibirán fluctuación en la frecuencia con la que se ejecuta el ciclo de control.</li>
</ol>
<div>
<h1 style="background-color: white; color: #1a3065; font-family: arial; font-size: 27px; line-height: 30px;">
Solución # 2 CON RTOS <small style="font-size: 16px;">Un sistema completamente Preferente</small><br /><small style="font-size: 16px;"></small></h1>
<br style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;" /><h2 style="background-color: white; color: #1a3065; font-family: arial; font-size: 22px; line-height: 21px;">
Sinopsis</h2>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">Esta es una solución multitarea preferente tradicional. Se hace un uso completo de los servicios RTOS sin tener en cuenta a la memoria y el procesador resultante por encima. Hay una partición simplista de la funcionalidad requerida para una serie de tareas autónomas.</span><div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
</div>
<hr style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;" />
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
</div>
<h2 style="background-color: white; color: #1a3065; font-family: arial; font-size: 22px; line-height: 21px;">
Implementación</h2>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">Una tarea separada se crea para cada parte del sistema que puede ser identificado como siendo capaz de existir de forma aislada, o que tienen un requisito de tiempo particular.</span><div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
</div>
<div align="center" style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<img src="http://www.freertos.org/tutorial/tasks1.gif" style="max-width: 100%;" /><br /><small><b>Solución # 2 funciones tareas y prioridades</b></small></div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
Las tareas se bloqueará hasta que un evento indica que se requiere un procesamiento. Eventos o bien puede ser externo (como pulsación de una tecla), o interno (por ejemplo, un temporizador expira). Este enfoque orientado a eventos significa que no hay tiempo de CPU se desperdicia votación para eventos que no han ocurrido.</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
Las prioridades se asignan a tareas de acuerdo a sus requerimientos de tiempo. El más estricto el requisito de tiempo mayor será la prioridad (no todas las evaluaciones de asignación de prioridad son que simplista).</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /></div>
<h3 style="background-color: white; color: #1a3065; font-family: arial; font-size: 18px;">
Concepto de la Operación</h3>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">La tarea de mayor prioridad que es capaz de ejecutar (no está bloqueado) es la tarea garantizada por el RTOS para obtener el tiempo de procesador. El núcleo se suspenda inmediatamente la ejecución de una tarea debería estar disponible una tarea de mayor prioridad.</span><div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
Esta programación se realiza automáticamente, sin el conocimiento explícito, el diseño o los comandos dentro del código fuente de la aplicación. Sin embargo, es responsabilidad de los diseñadores de aplicaciones para garantizar que las tareas se asignan una prioridad adecuada.</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
Cuando ninguna tarea es capaz de ejecutar la tarea ociosa ejecutará. La tarea de inicio cuenta con la opción de colocar el procesador en modo ahorro de energía.</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /></div>
<h3 style="background-color: white; color: #1a3065; font-family: arial; font-size: 18px;">
Configuración del planificador</h3>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">El programador está configurado para una operación preventiva. La frecuencia del núcleo garrapata debe fijarse en el valor más lento que proporciona la granularidad de tiempo requerido.</span><div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /></div>
<h3 style="background-color: white; color: #1a3065; font-family: arial; font-size: 18px;">
Evaluación</h3>
<table border="0" style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;" summary=""><tbody>
<tr><td><span style="font-family: arial;"><img src="http://www.freertos.org/tutorial/good.gif" style="max-width: 100%;" /></span></td><td><span style="font-family: arial;">, Segmentados, de diseño simple de mantener flexibles, con pocas interdependencias.</span></td></tr>
<tr><td><span style="font-family: arial;"><img src="http://www.freertos.org/tutorial/good.gif" style="max-width: 100%;" /></span></td><td><span style="font-family: arial;">La utilización del procesador se conecta automáticamente a partir de una tarea a otra en función de las necesidades más urgentes sin ninguna acción explícita requerida dentro del código fuente de la aplicación.</span></td></tr>
<tr><td><span style="font-family: arial;"><img src="http://www.freertos.org/tutorial/good.gif" style="max-width: 100%;" /></span></td><td><span style="font-family: arial;">La estructura orientada a eventos asegura que ningún tiempo de CPU se desperdicia votación para eventos que no han ocurrido. Procesamiento sólo se realiza cuando hay trabajo que necesitaba ser hecho.</span></td></tr>
<tr><td><span style="font-family: arial;"><img src="http://www.freertos.org/tutorial/indif.gif" style="max-width: 100%;" /></span></td><td><span style="font-family: arial;">El consumo de energía puede reducirse si la tarea ociosa coloca el procesador en modo ahorro de energía (sueño), pero también puede ser desperdiciado como la interrupción de la garrapata a veces se despierta el procesador innecesariamente.</span></td></tr>
<tr><td><span style="font-family: arial;"><img src="http://www.freertos.org/tutorial/indif.gif" style="max-width: 100%;" /></span></td><td><span style="font-family: arial;">La funcionalidad del núcleo utilizará los recursos de procesamiento. El alcance de esta dependerá de la frecuencia kernel garrapata elegido.</span></td></tr>
<tr><td><span style="font-family: arial;"><img src="http://www.freertos.org/tutorial/bad.gif" style="max-width: 100%;" /></span></td><td><span style="font-family: arial;">Esta solución requiere una gran cantidad de tareas, cada una de las cuales requieren su propia pila, y muchos de los cuales requiere una cola en la que se pueden recibir eventos. Por lo tanto, esta solución utiliza una gran cantidad de memoria RAM.</span></td></tr>
<tr><td><span style="font-family: arial;"><img src="http://www.freertos.org/tutorial/bad.gif" style="max-width: 100%;" /></span></td><td><span style="font-family: arial;">contexto frecuente el cambio entre las tareas de la misma prioridad será un desperdicio de ciclos de procesador.</span></td></tr>
</tbody></table>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /></div>
<h3 style="background-color: white; color: #1a3065; font-family: arial; font-size: 18px;">
Conclusión</h3>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">Esto puede ser una buena solución proporciona la RAM y capacidad de procesamiento disponible.La partición de la aplicación en tareas y la prioridad asignada a cada tarea requiere una cuidadosa consideración.</span><div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
</div>
<hr style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;" />
<h2 style="background-color: white; color: #1a3065; font-family: arial; font-size: 22px; line-height: 21px;">
Ejemplo</h2>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">Este ejemplo es una aplicación parcial de la aplicación hipotética introducido previamente. se utiliza la API FreeRTOS.</span><div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /><a href="https://www.blogger.com/null" name="pcf" style="color: #0000ee;"></a></div>
<h3 style="background-color: white; color: #1a3065; font-family: arial; font-size: 18px;">
Control de tareas planta</h3>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">Esta tarea implementa toda la funcionalidad de control. Tiene requerimientos críticos de tiempo y por lo tanto se le da la más alta prioridad en el sistema:</span><span style="background-color: white; color: #202020; font-family: courier; font-size: 14px; line-height: 21px;"><pre style="font-size: 13px; line-height: normal;">#define CYCLE_RATE_MS 10
#define MAX_COMMS_DELAY 2
PlantControlTask anular (pvParameters void *)
{
TickType_t xLastWakeTime;
Tipo de datos datos1, datos2;
InitialiseTheQueue ();
<span style="color: green;">// UN</span>
xLastWakeTime = xTaskGetTickCount ();
<span style="color: green;">// B</span>
para( ;; )
{
<span style="color: green;">// C</span>
vTaskDelayUntil (y xLastWakeTime, CYCLE_RATE_MS);
<span style="color: green;">// Solicitar datos de los sensores.</span>
TransmitRequest ();
<span style="color: green;">// D</span>
si (xQueueReceive (xFieldBusQueue, y Datos1, MAX_COMMS_DELAY))
{
<span style="color: green;">// E</span>
si (xQueueReceive (xFieldBusQueue, y Datos2, MAX_COMMS_DELAY))
{
PerformControlAlgorithm ();
TransmitResults ();
}
}
}
<span style="color: green;">// Nunca se tiene aquí!</span>
}
</pre>
</span><span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">Haciendo referencia a las etiquetas dentro del fragmento de código anterior:</span><ol style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;" type="A">
<li><tt>xLastWakeTime</tt> es inicializado. Esta variable se utiliza con el <tt>vTaskDelayUntil ()</tt> la función de API para controlar la frecuencia a la que realiza la función de control.</li>
<li>Esta función se ejecuta como una tarea autónoma por lo que nunca debe salir.</li>
<li><tt>vTaskDelayUntil ()</tt> le dice al núcleo que esta tarea debe comenzar a ejecutar exactamente 10 ms después de la hora almacenada en <tt>xLastWakeTime</tt> . Hasta que se alcanza esta vez la tarea de control bloqueará. Como esta es la tarea de mayor prioridad dentro del sistema se garantiza que comience a ejecutar de nuevo exactamente en el momento correcto. Será adelantarse a cualquier tarea de menor prioridad que le pasa a estar en ejecución.</li>
<li>Hay un tiempo finito entre los datos que se solicitan de los sensores conectados en red y que están recibiendo datos. Los datos que llegan en el bus de campo se coloca en el<tt>xFieldBusQueue</tt> por una rutina de servicio de interrupción, la tarea de control, por tanto, puede hacer una llamada de bloqueo en la cola para esperar a que los datos estén disponibles. Al igual que antes, ya que es la tarea de mayor prioridad en el sistema está garantizado para continuar con la ejecución inmediata de datos está disponible.</li>
<li>Como 'D', a la espera de los datos del segundo sensor.</li>
</ol>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">Un valor de retorno de 0 desde xQueueReceive () indica que no hay datos llegaron dentro del plazo de bloque especificado. Esta es una condición de error la tarea debe manejar. Esta y otras funciones de gestión de errores se ha omitido por simplicidad.</span><div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /></div>
<h3 style="background-color: white; color: #1a3065; font-family: arial; font-size: 18px;">
Embedded Web Server Tarea</h3>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">La tarea del servidor web incorporado puede ser representado por el siguiente pseudo código.Esto sólo se utiliza el tiempo de procesador cuando hay datos disponibles, pero tomará un tiempo variable y relativamente largo para completar. Por lo tanto, se le da una prioridad baja para evitar que afectar de forma adversa la sincronización de las tareas de control de planta, RS232 o escaneo teclado.</span><span style="background-color: white; color: #202020; font-family: courier; font-size: 14px; line-height: 21px;"><pre style="font-size: 13px; line-height: normal;">WebServerTask vacío (pvParameters void *)
{
Datos DataTypeA;
para( ;; )
{
<span style="color: green;">// Bloque de datos hasta que llega. xEthernetQueue es llenado por el
// Ethernet rutina de servicio de interrupción.</span>
si (xQueueReceive (xEthernetQueue, y bases de datos, max_delay))
{
ProcessHTTPData (datos);
}
}
}
</pre>
</span><span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;"></span><div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /></div>
<h3 style="background-color: white; color: #1a3065; font-family: arial; font-size: 18px;">
Interfaz RS232</h3>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">Esto es muy similar en estructura a la tarea del servidor Web incorporado. Se da una prioridad media para asegurarse de que no afecta negativamente en la planificación de la tarea de control de la planta.</span><span style="background-color: white; color: #202020; font-family: courier; font-size: 14px; line-height: 21px;"><pre style="font-size: 13px; line-height: normal;">RS232Task anular (pvParameters void *)
{
Datos DataTypeB;
para( ;; )
{
<span style="color: green;">// Bloque de datos hasta que llega. xRS232Queue es llenado por el
// Rutina de servicio de interrupción RS232.</span>
si (xQueueReceive (xRS232Queue, y bases de datos, max_delay))
{
ProcessSerialCharacters (datos);
}
}
}
</pre>
</span><span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;"></span><div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /></div>
<h3 style="background-color: white; color: #1a3065; font-family: arial; font-size: 18px;">
Teclado exploración de la tarea</h3>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">Esta es una tarea cíclica simple. Se da una prioridad media como sus requisitos de tiempo son similares a la tarea RS232.</span><div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
El tiempo de ciclo se ajusta mucho más rápido que el límite especificado. Esto es para tener en cuenta el hecho de que no puede obtener el tiempo de procesador de inmediato a petición - y una vez que la ejecución puede conseguir se anticipó por la tarea de control de la planta.</div>
<div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<span style="font-family: courier;"></span></div>
<pre style="background-color: white; color: #202020; font-size: 13px;"><span style="font-family: courier;">DELAY_PERIOD #define 4
KeyScanTask anular (pvParmeters void *)
{
charla clave;
TickType_t xLastWakeTime;
xLastWakeTime = xTaskGetTickCount ();
para( ;; )
{
<span style="color: green;">// Espera a que el próximo ciclo.</span>
vTaskDelayUntil (y xLastWakeTime, DELAY_PERIOD);
<span style="color: green;">// La ejecución del teclado.</span>
si (KeyPressed (& Key))
{
UpdateDisplay (Key);
}
}
}
</span></pre>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">Si la temporización global del sistema eran tales que este se podría hacer la tarea de prioridad más bajo entonces la llamada a vTaskDelayUntil () podría ser eliminado por completo. La función de exploración clave sería luego ejecutar continuamente siempre que todas las tareas de mayor prioridad se bloquearon - tomar efectivamente el lugar de la tarea vacía.</span><div style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">
<br /></div>
<h3 style="background-color: white; color: #1a3065; font-family: arial; font-size: 18px;">
Tarea LED</h3>
<span style="background-color: white; color: #202020; font-family: arial; font-size: 14px; line-height: 21px;">Esta es la más simple de todas las tareas.</span><span style="background-color: white; color: #202020; font-family: courier; font-size: 14px; line-height: 21px;"><pre style="font-size: 13px; line-height: normal;">DELAY_PERIOD #define 1000
LEDTask vacío (pvParmeters void *)
{
TickType_t xLastWakeTime;
xLastWakeTime = xTaskGetTickCount ();
para( ;; )
{
<span style="color: green;">// Espera a que el próximo ciclo.</span>
vTaskDelayUntil (y xLastWakeTime, DELAY_PERIOD);
<span style="color: green;">// Flash del LED apropiado.</span>
si (SystemIsHealthy ())
{
FlashLED (VERDE);
}
más
{
FlashLED (RED);
}
}
}</pre>
</span></div>
Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-59031669997009022772016-02-24T07:32:00.000-08:002016-02-24T07:32:13.983-08:00ChibiOS para el IDE Arduino<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span class="" style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Un sistema operativo en tiempo real es una pieza bastante complicado de software, incluso con una pequeña RTOS - debido a la forma en que se mete con varios detalles de bajo nivel de ejecución del código, tales como pilas y las interrupciones. </span><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Es por lo tanto no es poca cosa cuando todo se puede hacer como una biblioteca de complemento estándar para el IDE de Arduino.</span></span></div>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Pero eso es exactamente lo que ha sido hecho por </span><a href="http://code.google.com/p/rtoslibs/" style="border: 0px; color: #990000; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Bill Greiman</span></a><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> con </span><a href="http://www.chibios.org/dokuwiki/doku.php" style="border: 0px; color: #990000; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">ChibiOS</span></a><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> , en forma de una biblioteca llamada "ChibiOS_AVR" (también hay una versión ARM para la debida y Teensy).</span></div>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<em style="border: 0px; font-family: inherit; font-size: 15.3472px; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Así que vamos a continuar donde lo dejé </span></span><a href="http://jeelabs.org/2013/05/24/blinking-in-real-time/index.html" style="border: 0px; color: #990000; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">ayer</span></span></a><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> e instalar esta cosa para su uso con JeeNodes, eh?</span></span></em></div>
<ul style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin: 0px 0px 1.1em 1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px 0px 0px 1em; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">descargar una copia de </span><code style="border: 0px; font-family: 'Courier New', Courier, monospace; font-size: 14.5798px; font-style: inherit; font-weight: inherit; line-height: 1.1; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">ChibiOS20130208.zip</code><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> de </span><a href="http://code.google.com/p/rtoslibs/downloads/list" style="border: 0px; color: #990000; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">esta página</span></a><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> en Google Code</span></li>
<li style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px 0px 0px 1em; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">descomprimirá y el interior encontrará una carpeta llamada </span><code style="border: 0px; font-family: 'Courier New', Courier, monospace; font-size: 14.5798px; font-style: inherit; font-weight: inherit; line-height: 1.1; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">ChibiOS_AVR</code></li>
<li style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px 0px 0px 1em; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">moverlo </span><em style="border: 0px; font-family: inherit; font-size: 15.3472px; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">dentro de</em><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> la </span><code style="border: 0px; font-family: 'Courier New', Courier, monospace; font-size: 14.5798px; font-style: inherit; font-weight: inherit; line-height: 1.1; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">bibliotecas</code><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> carpeta en su carpeta de bocetos IDE (al lado de JeeLib, etc)</span></li>
<li style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px 0px 0px 1em; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">También puede ser que desee mover </span><code style="border: 0px; font-family: 'Courier New', Courier, monospace; font-size: 14.5798px; font-style: inherit; font-weight: inherit; line-height: 1.1; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">ChibiOS_ARM</code><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> y </span><code style="border: 0px; font-family: 'Courier New', Courier, monospace; font-size: 14.5798px; font-style: inherit; font-weight: inherit; line-height: 1.1; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">SdFat</code><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> junto a él, para su uso posterior</span></li>
<li style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px 0px 0px 1em; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">otras cosas en ese archivo ZIP son un archivo README y la documentación HTML</span></li>
<li style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px 0px 0px 1em; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">eso es todo, ahora relanzar el IDE de Arduino para que sea reconocer las nuevas bibliotecas</span></li>
</ul>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Eso es realmente todo lo que hay que hacer. </span><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">La carpeta ChibiOS_AVR también contiene una docena de ejemplos, cada uno de los cuales es digno de mirar en y probar. </span><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Tenga en cuenta que no hay ningún LED en un JeeNode estándar, y que el LED azul del USB JeeNode SMD y JeeNode está en el pin 9 y tiene una polaridad inversa ( "0" a su vez en "1" apagarlo ).</span></span></div>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Nota: Estoy usando esto con Arduino IDE 1.5.2, pero también debería funcionar con 1.0.x IDE</span></div>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Las cosas simples son todavía </span><em style="border: 0px; font-family: inherit; font-size: 15.3472px; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">relativamente</em><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> simple con un RTOS, pero estar preparados para hacer frente a toda una serie de nuevos conceptos y técnicas cuando realmente comienza a sumergirse en un montón de maneras de hacer las tareas e interrumpe el trabajo en conjunto -. </span><em style="border: 0px; font-family: inherit; font-size: 15.3472px; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Exclusiones mutuas, semáforos, eventos, colas, buzones ...</em></div>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Por suerte, ChibiOS viene con una gran cantidad de documentación, incluyendo algunos generales </span><a href="http://www.chibios.org/dokuwiki/doku.php?id=chibios:documents#guides_and_articles" style="border: 0px; color: #990000; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">guías y de cómo-a</span></a><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> . </span><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">La documentación AVR-específica se puede encontrar </span></span><a href="http://chibios.sourceforge.net/docs/kernel_avr_gcc_rm/index.html" style="border: 0px; color: #990000; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">aquí</span></a><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">(al igual que en ese archivo ZIP que acaba de descargar).</span></div>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">No estoy seguro de que este es el mejor lugar para ello, pero he puesto el ejemplo de ayer en </span><a href="https://github.com/jcw/jeelib/blob/master/examples/RTOS/chiBlink/chiBlink.ino" style="border: 0px; color: #990000; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">JeeLib</span></a><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> por ahora.</span></div>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Me gustaría ir a la RTOS y ChibiOS un poco más en las próximas semanas, aunque sólo sea para ver cómo la comunicación inalámbrica y los modos de suspensión de baja potencia se pueden montar en ese país.</span></div>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Solo un dato por ahora: la </span><em style="border: 0px; font-family: inherit; font-size: 15.3472px; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">latencia de cambio de contexto</em><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> de ChibiOS en una ATmega328 @ 16 MHz parece ser alrededor de 15 mu s. </span><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">O, para decirlo de otra manera: se puede cambiar entre múltiples tareas durante </span></span><em style="border: 0px; font-family: inherit; font-size: 15.3472px; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">sesenta mil veces</em><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> por segundo. </span><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Trago.</span></span></div>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">TUTORIAL</span></span></div>
<h3 style="background-color: white; color: #574800; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 1.4em; margin: 0.8em 0px 0px; text-align: justify;">
1 El muestreo usando el ADC</h3>
<figure class="right small" style="background-color: white; color: #888888; float: right; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; height: auto; margin: 0px 0px 0px 10px; text-align: right; width: 193.609px;"><img class="cropped" data-action="zoom" src="http://www.playembedded.org/ddforum/ext/playembedded/file.php?mode=view&id=63" style="border-radius: 8px; border: 1px solid rgb(238, 238, 238); cursor: -webkit-zoom-in; display: block; height: auto; max-height: 100%; max-width: 100%; transition: 0.2s ease-in-out; width: 193.609px;" /><figcaption style="color: #332e78; font-size: 11.7px; font-style: italic; text-align: inherit;">Fig.1 - Potenciómetro diagrama.</figcaption></figure><div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">Un </span><a href="http://en.wikipedia.org/wiki/Analog-to-digital_converter" style="color: black; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-weight: bold; line-height: normal; text-align: justify; text-decoration: none;" target="_blank">análogo al convertidor digital de</a><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;"> es un dispositivo que convierte una cantidad física continua (por lo general de tensión) a un número digital que representa la amplitud de la cantidad.</span><br style="color: #888888; content: "A" !important; display: block !important; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; margin-bottom: 1.5em !important; text-align: justify;" /><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">En esta demostración, estamos muestreando voltaje a través de un</span><a href="http://en.wikipedia.org/wiki/Potentiometer" style="color: black; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-weight: bold; line-height: normal; text-align: justify; text-decoration: none;" target="_blank">potenciómetro</a><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;"> para establecer su posición. Un potenciómetro es un mando de tres pines que proporciona una resistencia variable entre WA y WB pasadores (Fig.1). Cantidad de resistencia entre A y B es constante, pero girando el eje del potenciómetro, cambiamos la cantidad de resistencia a cada lado de W.</span><br style="color: #888888; content: "A" !important; display: block !important; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; margin-bottom: 1.5em !important; text-align: justify;" /><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">Conexión de A a 3 V, B a GND (o viceversa) y la tensión de muestreo entre W y GND que podría medir la posición del limpiaparabrisas: según </span><a href="http://en.wikipedia.org/wiki/Voltage_divider" style="color: black; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-weight: bold; line-height: normal; text-align: justify; text-decoration: none;" target="_blank">divisor de voltaje</a><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;"> , el voltaje muestreado sería proporcional a la cantidad de resistencia entre W y el pasador conectado a GND.</span></span></div>
<h3 style="background-color: white; color: #574800; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 1.4em; margin: 0.8em 0px 0px; text-align: justify;">
2 ADC en ChibiOS</h3>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">STM32 tiene más de un ADC. Como siempre, tuvimos que permitirá subsistema ADC en </span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-style: italic; line-height: normal; text-align: justify;">halconf.h</span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;"> y controlador adecuado en </span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-style: italic; line-height: normal; text-align: justify;">mcuconf.h</span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;"> .</span><br style="color: #888888; content: "A" !important; display: block !important; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; margin-bottom: 1.5em !important; text-align: justify;" /><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">Cada ADC tiene más de un canal. Podríamos tomar muestras de estos canales que eligen una secuencia personalizada. Con el fin de hacer que teníamos que configurar algún registro ADC aunque</span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-style: italic; line-height: normal; text-align: justify;">ADCConversionGroup</span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;"> . Por otra parte, podríamos configurar la frecuencia de muestreo y el modo. Nuestro grupo de conversión es:</span></span></div>
<div class="medium" id="pe_codebox" style="background-color: white; border-radius: 8px; border: 1px solid rgb(238, 238, 238); color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 11.7px; height: 200px; margin: 5px 0px 20px; overflow: auto; padding: 5px; text-align: justify;">
<pre><code class="c hljs cpp" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: #4d4d4c; display: block; overflow-x: auto; padding: 0px 0.5em 0.5em;"><span class="hljs-comment" style="color: #8e908c;">/ *
* Grupo de conversión ADC.
* Modo: tampón circular, 10 muestras de 1 canal, SW activa.
* Canales: IN0.
* / </span>
<span class="hljs-keyword" style="color: #8959a8;">Static </span> <span class="hljs-keyword" style="color: #8959a8;">const</span> ADCConversionGroup my_conversion_group = {
FALSO, <span class="hljs-comment" style="color: #8e908c;">/ * NO CIRCULAR * /</span>
MY_NUM_CH, <span class="hljs-comment" style="color: #8e908c;">/ * NUMB DE CH * / </span>
<span class="hljs-literal" style="color: #f5871f;">NULL</span> , <span class="hljs-comment" style="color: #8e908c;">/ * NO ADC RETROLLAMADA * / </span>
<span class="hljs-literal" style="color: #f5871f;">NULL</span> , <span class="hljs-comment" style="color: #8e908c;">/ * NO ADC ERROR RETROLLAMADA * / </span>
<span class="hljs-number" style="color: #f5871f;">0</span> , <span class="hljs-comment" style="color: #8e908c;">/ * CR1 * /</span>
ADC_CR2_SWSTART, <span class="hljs-comment" style="color: #8e908c;">/ * CR2 * / </span>
<span class="hljs-number" style="color: #f5871f;">0</span> , <span class="hljs-comment" style="color: #8e908c;">/ * * SMPR1 /</span>
ADC_SMPR2_SMP_AN0 (ADC_SAMPLE_3), <span class="hljs-comment" style="color: #8e908c;">/ * * SMPR2 /</span>
ADC_SQR1_NUM_CH (MY_NUM_CH), <span class="hljs-comment" style="color: #8e908c;">/ * SQR1 * / </span>
<span class="hljs-number" style="color: #f5871f;">0</span> , <span class="hljs-comment" style="color: #8e908c;">/ * * SQR2 /</span>
ADC_SQR3_SQ1_N (ADC_CHANNEL_IN0) <span class="hljs-comment" style="color: #8e908c;">/ * SQR3 * /</span>
};</code></pre>
</div>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">Estamos muestreando de forma no circular, de un solo canal ( </span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-style: italic; line-height: normal; text-align: justify;">ADC_CHANNEL_IN0</span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;"> ). La frecuencia de muestreo es igual a tres ciclos de reloj principal ( </span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-style: italic; line-height: normal; text-align: justify;">ADC_SAMPLE_3</span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;"> ), (Para más información ver para los registros de ADC en Manual de referencia).</span><br style="color: #888888; content: "A" !important; display: block !important; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; margin-bottom: 1.5em !important; text-align: justify;" /><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">Hemos desactivado el dos de devolución de llamada de ADC. La primera de ellas se produce durante el muestreo dos veces (en el medio y en el final del grupo de conversión); el segundo se produce en caso de error ADC.</span><br style="color: #888888; content: "A" !important; display: block !important; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; margin-bottom: 1.5em !important; text-align: justify;" /><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">En principal tuvimos para configurar nuestra pasador. <span class="">En hilo de ADC que empezamos, el muestreo de un tampón de n elementos y hacer que significa en los datos con el fin de eliminar el ruido.</span></span></span></div>
<div class="medium" id="pe_codebox" style="background-color: white; border-radius: 8px; border: 1px solid rgb(238, 238, 238); color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 11.7px; height: 200px; margin: 5px 0px 20px; overflow: auto; padding: 5px; text-align: justify;">
<pre><code class="c hljs cpp" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: #4d4d4c; display: block; overflow-x: auto; padding: 0px 0.5em 0.5em;"><span class="hljs-function" style="color: #4271ae;"><span class="hljs-keyword" style="color: #8959a8;">estática</span> msg_t <span class="hljs-title" style="color: #3e999f;">Thd2 </span><span class="hljs-params" style="color: #f5871f;">( <span class="hljs-keyword" style="color: #8959a8;">void</span> * arg)</span> </span> {
<span class="hljs-keyword" style="color: #8959a8;">unsigned</span> II;
( <span class="hljs-keyword" style="color: #8959a8;">Vacío</span> ) arg;
chRegSetThreadName ( <span class="hljs-string" style="color: #718c00;">"controlador Led"</span> );
<span class="hljs-comment" style="color: #8e908c;">/ *
* Activa el conductor ADC1.
* /</span>
AdcStart (y ADCD1, <span class="hljs-literal" style="color: #f5871f;">NULL</span> );
<span class="hljs-keyword" style="color: #8959a8;">mientras que</span> (TRUE) {
adcConvert (y ADCD1, y my_conversion_group, sample_buff, MY_SAMPLING_NUMBER); <span class="hljs-comment" style="color: #8e908c;">. / * Hacer media de los valores muestreados * /</span>
media = <span class="hljs-number" style="color: #f5871f;">0</span> ;
<span class="hljs-keyword" style="color: #8959a8;">para</span> (ii = <span class="hljs-number" style="color: #f5871f;">0</span> ; ii <MY_NUM_CH * MY_SAMPLING_NUMBER; ii ++) {
<span class="hljs-comment" style="color: #8e908c;"></span><span class="hljs-number" style="color: #f5871f;"></span><span class="hljs-keyword" style="color: #8959a8;"></span><span class="hljs-number" style="color: #f5871f;"></span>
media + = sample_buff [ii];
}
decir / = MY_NUM_CH * MY_SAMPLING_NUMBER;
lastvalue = ( <span class="hljs-keyword" style="color: #8959a8;">float</span> ) significa * <span class="hljs-number" style="color: #f5871f;">3</span> / <span class="hljs-number" style="color: #f5871f;">4096</span> ;
flag = true;
}
<span class="hljs-keyword" style="color: #8959a8;">volver </span> <span class="hljs-number" style="color: #f5871f;">0</span> ;
}</code></pre>
</div>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">Tenga en cuenta que podemos utilizar el ADC en modo continuo utilizando otro API: </span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-style: italic; line-height: normal; text-align: justify;">adcStartConversion ()</span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;"> .Recuerde siempre que teníamos a la dimensión muestras de tampón correctamente para evitar un desbordamiento:</span></span></span></div>
<div class="auto" id="pe_codebox" style="background-color: white; border-radius: 8px; border: 1px solid rgb(238, 238, 238); color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 11.7px; height: auto; margin: 5px 0px 20px; overflow: auto; padding: 5px; text-align: justify;">
<pre><code class="c hljs cpp" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: #4d4d4c; display: block; overflow-x: auto; padding: 0px 0.5em 0.5em;"><span class="hljs-keyword" style="color: #8959a8;">estática </span> <span class="hljs-keyword" style="color: #8959a8;">adcsample_t</span> sample_buff [MY_NUM_CH * MY_SAMPLING_NUMBER];</code></pre>
</div>
<h3 style="background-color: white; color: #574800; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 1.4em; margin: 0.8em 0px 0px; text-align: justify;">
3 de atenuación mediante PWM</h3>
<figure class="right small" style="background-color: white; color: #888888; float: right; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; height: auto; margin: 0px 0px 0px 10px; text-align: right; width: 193.609px;"><img class="cropped" data-action="zoom" src="http://www.playembedded.org/ddforum/ext/playembedded/file.php?mode=view&id=65" style="border-radius: 8px; border: 1px solid rgb(238, 238, 238); cursor: -webkit-zoom-in; display: block; height: auto; max-height: 100%; max-width: 100%; transition: 0.2s ease-in-out; width: 193.609px;" /><figcaption style="color: #332e78; font-size: 11.7px; font-style: italic; text-align: inherit;">La figura 2 -Relation entre el ciclo de trabajo y el valor medio.</figcaption></figure><div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">La </span><a href="http://en.wikipedia.org/wiki/Pulse-width_modulation" style="color: black; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-weight: bold; line-height: normal; text-align: justify; text-decoration: none;" target="_blank">modulación por ancho de pulso</a><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;"> es una técnica utilizada para codificar un mensaje en una señal pulsante. Es un tipo de modulación. Aunque esta técnica de modulación puede utilizarse para codificar la información para su transmisión, su uso principal es permitir el control de la potencia suministrada a los aparatos eléctricos, especialmente a las cargas inerciales tales como motores.</span><br style="color: #888888; content: "A" !important; display: block !important; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; margin-bottom: 1.5em !important; text-align: justify;" /><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">Por otra parte, podemos usar PWM a desvanecerse la intensidad del LED.Esto es posible gracias principio de que </span><a href="http://en.wikipedia.org/wiki/Pulse-width_modulation#Principle" style="color: black; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-weight: bold; line-height: normal; text-align: justify; text-decoration: none;" target="_blank">el valor medio de PWM</a><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;"> es proporcional a su </span><a href="http://en.wikipedia.org/wiki/Duty_cycle" style="color: black; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-weight: bold; line-height: normal; text-align: justify; text-decoration: none;" target="_blank">ciclo de trabajo</a><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;"> .</span></span></div>
<h3 style="background-color: white; color: #574800; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 1.4em; margin: 0.8em 0px 0px; text-align: justify;">
4 PWM en ChibiOS</h3>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">Simplificando, PWM es una onda cuadrada que se caracteriza por un período fijo y un ciclo de trabajo variable.La mejor manera de darse cuenta de que está utilizando un contador de tiempo. La fijación de la frecuencia del temporizador, (de ahí período), podríamos definir periodo PWM y ciclo de trabajo como múltiplo del temporizador cuántica. Tenga en cuenta que la frecuencia del temporizador debe ser varios órdenes de magnitud mayor que la frecuencia de PWM con el fin de tener una buena resolución ciclo de trabajo.</span><br style="color: #888888; content: "A" !important; display: block !important; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; margin-bottom: 1.5em !important; text-align: justify;" /><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">En este punto, debe quedar claro que la frecuencia del campo de </span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-style: italic; line-height: normal; text-align: justify;">PWMConfig</span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;"> se denomina temporizador relacionado y que hay un temporizador para cada PWM. . Dado que cada temporizador como algo más que un canal que podría generar más de PWM con el mismo periodo pero diferente ciclo de trabajo</span><br style="color: #888888; content: "A" !important; display: block !important; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; margin-bottom: 1.5em !important; text-align: justify;" /><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">del controlador PWM tiene devoluciones de llamada: una es común a cada canal y se produce cada periodo, otros son de canal en función y se producen cuando los interruptores de salida PWM, por lo tanto, depende de ciclo de trabajo. Esta es la </span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-style: italic; line-height: normal; text-align: justify;">PWMConfig</span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;"> verde usado desvaneciendo LED de intensidad:</span></span></div>
<div class="medium" id="pe_codebox" style="background-color: white; border-radius: 8px; border: 1px solid rgb(238, 238, 238); color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 11.7px; height: 200px; margin: 5px 0px 20px; overflow: auto; padding: 5px; text-align: justify;">
<pre><code class="c hljs cpp" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: #4d4d4c; display: block; overflow-x: auto; padding: 0px 0.5em 0.5em;"><span class="hljs-keyword" style="color: #8959a8;">estática</span> PWMConfig pwmcfg = {
<span class="hljs-number" style="color: #f5871f;">1000000</span> , <span class="hljs-comment" style="color: #8e908c;">/ * 1 MHz de frecuencia de reloj PWM. * / </span>
<span class="hljs-number" style="color: #f5871f;">1000</span> , <span class="hljs-comment" style="color: #8e908c;">/ * Período Inicial de PWM de 1 ms. * /</span>
pwmpcb,
{
{PWM_OUTPUT_ACTIVE_HIGH, pwmc1cb},
{PWM_OUTPUT_DISABLED, <span class="hljs-literal" style="color: #f5871f;">NULL</span> },
{PWM_OUTPUT_DISABLED, <span class="hljs-literal" style="color: #f5871f;">NULL</span> },
{PWM_OUTPUT_DISABLED, <span class="hljs-literal" style="color: #f5871f;">NULL</span> }
},
<span class="hljs-number" style="color: #f5871f;">0</span> ,
<span class="hljs-number" style="color: #f5871f;">0</span>
};</code></pre>
</div>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><br style="color: #888888; content: "A" !important; display: block !important; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; margin-bottom: 1.5em !important; text-align: justify;" /><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">Tenga en cuenta que la frecuencia del temporizador es de 1 MHz y que PWM periodo inicial es de 1000 es decir temporizador cuántica 1ms. </span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-style: italic; line-height: normal; text-align: justify;">Pwmpcb</span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;"> es el período de devolución de llamada y </span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-style: italic; line-height: normal; text-align: justify;">pwmc1cb</span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;"> es la devolución de llamada del canal 1; Por otra parte, el primer canal está activo y la salida es alta durante un período de tiempo proporcional al ciclo de trabajo, en lugar de otros canales están desactivados.</span><br style="color: #888888; content: "A" !important; display: block !important; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; margin-bottom: 1.5em !important; text-align: justify;" /><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">Como todos los pilotos, PWM debe iniciarse antes de usarlo. PWM API permite iniciar la elección de los canales de ciclo de trabajo, así como el período de PWM cambio, canal desactivado y dejar de conducir. Con el fin de LED se desvanecen apenas comenzamos el conductor antes de lazo de hilo y permitir que continuamente cambiando de canal ciclo de trabajo (en nuestro caso elegimos el ciclo de trabajo proporcional a durar valor muestreado).</span></span></div>
<div class="medium" id="pe_codebox" style="background-color: white; border-radius: 8px; border: 1px solid rgb(238, 238, 238); color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 11.7px; height: 200px; margin: 5px 0px 20px; overflow: auto; padding: 5px; text-align: justify;">
<pre><code class="c hljs cpp" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: #4d4d4c; display: block; overflow-x: auto; padding: 0px 0.5em 0.5em;"><span class="hljs-function" style="color: #4271ae;"><span class="hljs-keyword" style="color: #8959a8;">estática</span> msg_t <span class="hljs-title" style="color: #3e999f;">Thd1 </span> <span class="hljs-params" style="color: #f5871f;">( <span class="hljs-keyword" style="color: #8959a8;">void</span> * arg)</span> </span> {
( <span class="hljs-keyword" style="color: #8959a8;">vacío</span> ) arg;
chRegSetThreadName ( <span class="hljs-string" style="color: #718c00;">"controlador Led"</span> );
pwmStart (y PWMD1, y pwmcfg); <span class="hljs-keyword" style="color: #8959a8;">mientras que</span> (TRUE) {
<span class="hljs-keyword" style="color: #8959a8;"></span>
porcentaje = lastvalue * <span class="hljs-number" style="color: #f5871f;">10.000</span> / <span class="hljs-number" style="color: #f5871f;">3</span> ;
<span class="hljs-keyword" style="color: #8959a8;">si</span> (porcentaje < <span class="hljs-number" style="color: #f5871f;">100</span> ) {
porcentaje = <span class="hljs-number" style="color: #f5871f;">0</span> ;
pwmDisableChannel (y PWMD1, <span class="hljs-number" style="color: #f5871f;">0</span> );
palClearPad (GPIOA, GPIOA_LED_GREEN);
}
<span class="hljs-keyword" style="color: #8959a8;">otra cosa </span> <span class="hljs-keyword" style="color: #8959a8;">si</span> (porcentaje> <span class="hljs-number" style="color: #f5871f;">9900</span> ) {
porcentaje = <span class="hljs-number" style="color: #f5871f;">10000</span> ;
pwmDisableChannel (y PWMD1, <span class="hljs-number" style="color: #f5871f;">0</span> );
palSetPad (GPIOA, GPIOA_LED_GREEN);
}
<span class="hljs-keyword" style="color: #8959a8;">otra cosa</span> {
pwmEnableChannel (y PWMD1, <span class="hljs-number" style="color: #f5871f;">0</span> , PWM_PERCENTAGE_TO_WIDTH (y PWMD1, porcentaje));
}
chThdSleepMilliseconds ( <span class="hljs-number" style="color: #f5871f;">1</span> );
}
<span class="hljs-keyword" style="color: #8959a8;">volver</span> RDY_OK;
}</code></pre>
</div>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><br style="color: #888888; content: "A" !important; display: block !important; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; margin-bottom: 1.5em !important; text-align: justify;" /><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">LED verde no está conectado directamente a nuestra salida del temporizador y utilizamos las devoluciones de llamada para hacer una PWM de software. Cuando el ciclo de trabajo es del 0% o 100% entre uno </span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-style: italic; line-height: normal; text-align: justify;">pwmpcb</span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;"> y</span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-style: italic; line-height: normal; text-align: justify;">pwmc1cb</span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;"> devoluciones de llamada no podría ocurrir: que explica los controles sobre los bordes del ciclo de trabajo.</span></span></div>
<div class="auto" id="pe_codebox" style="background-color: white; border-radius: 8px; border: 1px solid rgb(238, 238, 238); color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 11.7px; height: auto; margin: 5px 0px 20px; overflow: auto; padding: 5px; text-align: justify;">
<pre><code class="c hljs cpp" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: #4d4d4c; display: block; overflow-x: auto; padding: 0px 0.5em 0.5em;"><span class="hljs-function" style="color: #4271ae;"><span class="hljs-keyword" style="color: #8959a8;">estática </span> <span class="hljs-keyword" style="color: #8959a8;">vacío </span> <span class="hljs-title" style="color: #3e999f;">pwmpcb </span><span class="hljs-params" style="color: #f5871f;">(PWMDriver * pwmp)</span> </span> {
( <span class="hljs-keyword" style="color: #8959a8;">vacío</span> ) pwmp;
<span class="hljs-keyword" style="color: #8959a8;">si</span> (porcentaje)
palSetPad (GPIOA, GPIOA_LED_GREEN);
} <span class="hljs-function" style="color: #4271ae;"><span class="hljs-keyword" style="color: #8959a8;">Static </span></span><span class="hljs-function" style="color: #4271ae;"><span class="hljs-keyword" style="color: #8959a8;">void </span></span><span class="hljs-function" style="color: #4271ae;"><span class="hljs-title" style="color: #3e999f;">pwmc1cb </span></span><span class="hljs-function" style="color: #4271ae;"><span class="hljs-params" style="color: #f5871f;">(PWMDriver * pwmp)</span></span> { ( <span class="hljs-keyword" style="color: #8959a8;">vacío</span> ) pwmp;
<span class="hljs-function" style="color: #4271ae;"><span class="hljs-keyword" style="color: #8959a8;"></span> <span class="hljs-keyword" style="color: #8959a8;"></span> <span class="hljs-title" style="color: #3e999f;"></span><span class="hljs-params" style="color: #f5871f;"></span> </span>
<span class="hljs-keyword" style="color: #8959a8;"></span>
palClearPad (GPIOA, GPIOA_LED_GREEN);
}</code></pre>
</div>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">Recuerde que antes de usar PWM para permitir subsistema en </span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-style: italic; line-height: normal; text-align: justify;">halconf.h</span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;"> y asignar temporizador en </span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; font-style: italic; line-height: normal; text-align: justify;">mcuconf.h</span><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">.</span></span></div>
<h3 style="background-color: white; color: #574800; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 1.4em; margin: 0.8em 0px 0px; text-align: justify;">
5 La rueda de color</h3>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">La conducción de un LED RGB utilizamos tres canales de la misma PWM. Rueda de colores evitar que más de dos uniones se afinan juntos: esto porque encender el tercer cambio de color de unión hacia la saturación perdedora blanco.</span></span></span></div>
<div class="medium" id="pe_codebox" style="background-color: white; border-radius: 8px; border: 1px solid rgb(238, 238, 238); color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 11.7px; height: 200px; margin: 5px 0px 20px; overflow: auto; padding: 5px; text-align: justify;">
<pre><code class="c hljs cpp" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: #4d4d4c; display: block; overflow-x: auto; padding: 0px 0.5em 0.5em;"><span class="hljs-keyword" style="color: #8959a8;">mientras que</span> (TRUE) {
tmp = lastvalue * <span class="hljs-number" style="color: #f5871f;">90</span> ;
ii = tmp / <span class="hljs-number" style="color: #f5871f;">90</span> ;
jj = tmp% <span class="hljs-number" style="color: #f5871f;">90</span> ;
<span class="hljs-keyword" style="color: #8959a8;">si</span> (== ii <span class="hljs-number" style="color: #f5871f;">0</span> ) {
porcentaje [ <span class="hljs-number" style="color: #f5871f;">0</span> ] = <span class="hljs-number" style="color: #f5871f;">10.000</span> * <span class="hljs-built_in" style="color: #f5871f;">sin</span> (jj * <span class="hljs-number" style="color: #f5871f;">3,14</span> / <span class="hljs-number" style="color: #f5871f;">180</span> );
porcentaje [ <span class="hljs-number" style="color: #f5871f;">1</span> ] = <span class="hljs-number" style="color: #f5871f;">0</span> ;
porcentaje [ <span class="hljs-number" style="color: #f5871f;">2</span> ] = <span class="hljs-number" style="color: #f5871f;">10.000</span> * <span class="hljs-built_in" style="color: #f5871f;">cos</span> (jj * <span class="hljs-number" style="color: #f5871f;">3,14</span> / <span class="hljs-number" style="color: #f5871f;">180</span> );
}
<span class="hljs-keyword" style="color: #8959a8;">otra cosa </span> <span class="hljs-keyword" style="color: #8959a8;">si</span> (ii == <span class="hljs-number" style="color: #f5871f;">1</span> ) {
porcentaje [ <span class="hljs-number" style="color: #f5871f;">0</span> ] = <span class="hljs-number" style="color: #f5871f;">10.000</span> * <span class="hljs-built_in" style="color: #f5871f;">cos</span> (jj * <span class="hljs-number" style="color: #f5871f;">3,14</span> / <span class="hljs-number" style="color: #f5871f;">180</span> );
porcentaje [ <span class="hljs-number" style="color: #f5871f;">1</span> ] = <span class="hljs-number" style="color: #f5871f;">10.000</span> * <span class="hljs-built_in" style="color: #f5871f;">sin</span> (jj * <span class="hljs-number" style="color: #f5871f;">3,14</span> / <span class="hljs-number" style="color: #f5871f;">180</span> );
porcentaje [ <span class="hljs-number" style="color: #f5871f;">2</span> ] = <span class="hljs-number" style="color: #f5871f;">0</span> ;
}
<span class="hljs-keyword" style="color: #8959a8;">otra cosa </span> <span class="hljs-keyword" style="color: #8959a8;">si</span> (ii == <span class="hljs-number" style="color: #f5871f;">2</span> ) {
porcentaje [ <span class="hljs-number" style="color: #f5871f;">0</span> ] = <span class="hljs-number" style="color: #f5871f;">0</span> ;
porcentaje [ <span class="hljs-number" style="color: #f5871f;">1</span> ] = <span class="hljs-number" style="color: #f5871f;">10.000</span> * <span class="hljs-built_in" style="color: #f5871f;">cos</span> (jj * <span class="hljs-number" style="color: #f5871f;">3,14</span> / <span class="hljs-number" style="color: #f5871f;">180</span> );
porcentaje [ <span class="hljs-number" style="color: #f5871f;">2</span> ] = <span class="hljs-number" style="color: #f5871f;">10.000</span> * <span class="hljs-built_in" style="color: #f5871f;">sin</span> (jj * <span class="hljs-number" style="color: #f5871f;">3,14</span> / <span class="hljs-number" style="color: #f5871f;">180</span> );
...
}</code></pre>
</div>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><br style="color: #888888; content: "A" !important; display: block !important; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; margin-bottom: 1.5em !important; text-align: justify;" /></span></div>
<h3 style="background-color: white; color: #574800; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 1.4em; margin: 0.8em 0px 0px; text-align: justify;">
6 Nuestro circuito</h3>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">El circuito que hicimos para conducir el LED RGB es la siguiente:</span></span></span></div>
<figure class="right verybig" style="background-color: white; color: #888888; float: right; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; height: auto; margin: 0px 0px 0px 10px; text-align: right; width: 645.391px;"><img class="cropped" data-action="zoom" src="http://www.playembedded.org/ddforum/ext/playembedded/file.php?mode=view&id=64" style="border-radius: 8px; border: 1px solid rgb(238, 238, 238); cursor: -webkit-zoom-in; display: block; height: auto; max-height: 100%; max-width: 100%; transition: 0.2s ease-in-out; width: 645.391px;" /><figcaption style="color: #332e78; font-size: 11.7px; font-style: italic; text-align: inherit;">Fig.3 - El muestreo y el circuito de regulación de luz.</figcaption></figure><div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><br style="color: #888888; content: "A" !important; display: block !important; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; margin-bottom: 1.5em !important; text-align: justify;" /></span></div>
<h3 style="background-color: white; color: #574800; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 1.4em; margin: 0.8em 0px 0px; text-align: justify;">
7 Proyecto utilizado en este tutorial</h3>
<div style="background-color: white; border: 0px; font-family: Georgia, serif; font-size: 15.3472px; line-height: 21.4861px; margin-bottom: 1.1em; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; font-family: inherit; font-size: 15.3472px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="color: #888888; font-family: 'Helvetica Neue', Helvetica, 'Verdana sans-serif'; font-size: 13px; line-height: normal; text-align: justify;">Este código ha sido probado utilizando ChibiOS / RT 3.0.x.</span></span></span></div>
Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-23477914090694678092016-02-24T07:26:00.001-08:002016-02-24T07:26:40.498-08:00RTuinOS 1.0: Sistema operativo en tiempo real (RTOS) para Arduino.<span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Revisando en la red me he conseguido con este proyecto interesante RTuinOS; </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">sus comentarios son bienvenidos. Abajo copio el enlace en SPANGLISH!.</span><br />
<span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;"><br /></span>
<span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;"> </span><a class="bbc_link" href="http://forum.arduino.cc/index.php?topic=184593.0" style="background: none rgb(245, 245, 245); border-bottom-color: rgb(168, 182, 207); border-bottom-style: solid; border-bottom-width: 1px; box-sizing: border-box; color: #00787c; font-family: 'TyponineSans Regular 18'; font-size: 14.6994px; line-height: 20.5792px; text-decoration: none;" target="_blank"><span style="box-sizing: border-box;">"RTuinOS 1.0: Segundo lanzamiento del sistema operativo en tiempo real (RTOS) para Arduino"</span></a><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;"> en este foro para más detalles. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">O visite GitHub para obtener una</span><a class="bbc_link" href="https://github.com/PeterVranken/RTuinOS" style="background: none rgb(245, 245, 245); border-bottom-color: rgb(168, 182, 207); border-bottom-style: solid; border-bottom-width: 1px; box-sizing: border-box; color: #00787c; font-family: 'TyponineSans Regular 18'; font-size: 14.6994px; line-height: 20.5792px; text-decoration: none;" target="_blank"><span style="box-sizing: border-box;">descarga</span></a><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;"> . </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">PS Mientras tanto, resultó que la descarga del archivo de instalación a través de este </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">post no es fiable. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">De vez en cuando, la operación se anula y se informa de un </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">archivo no válido. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">La razón no está clara. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Para evitar el problema de descargar, me </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">coloqué el archivo de instalación de RTuinOS en GitHub, consulte</span><a class="bbc_link" href="https://github.com/PeterVranken/RTuinOS/blob/master/RTuinOS-0.9.1.zip" style="background: none rgb(245, 245, 245); border-bottom-color: rgb(168, 182, 207); border-bottom-style: solid; border-bottom-width: 1px; box-sizing: border-box; color: #00787c; font-family: 'TyponineSans Regular 18'; font-size: 14.6994px; line-height: 20.5792px; text-decoration: none;" target="_blank"><span style="box-sizing: border-box;">https://github.com/PeterVranken/RTuinOS/blob/master/RTuinOS-0.9.1.zip</span></a><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;"> . </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Usted tiene que seguir este enlace y y Haga clic en "crudo" para iniciar el archivo de </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">descarga. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Introducción </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Arduino ( </span><a class="bbc_link" href="http://www.arduino.cc/" style="background: none rgb(245, 245, 245); border-bottom-color: rgb(168, 182, 207); border-bottom-style: solid; border-bottom-width: 1px; box-sizing: border-box; color: #00787c; font-family: 'TyponineSans Regular 18'; font-size: 14.6994px; line-height: 20.5792px; text-decoration: none;" target="_blank"><span style="box-sizing: border-box;">www.arduino.cc</span></a><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;"> ) es una fuente abierta popular y hardware abierto micro </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">plataforma de controladores para diversos fines, ubicados principalmente en tiempo de ocio </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">proyectos. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Arduino viene junto con un sencillo de usar de desarrollo integrado </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">medio ambiente, que contiene la cadena completa herramienta para escribir código fuente, </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">para navegar a través de muestras y bibliotecas, para compilar y enlazar el software </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">y para subirlo a la pizarra y parpadeará ella. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">El proyecto RTuinOS añade el </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">paradigma de la programación de un sistema operativo en tiempo real al mundo de Arduino. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Sistemas operativos en tiempo real, o RTOS, simplificar firmemente la ejecución </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">de aplicaciones técnicas que suelen hacer las cosas de bastante regulares</span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">manera, como la comprobación de entradas y el establecimiento de salidas en consecuencia cada (fijo) </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">fracción de un segundo. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Por ejemplo, el controlador de temperatura para una </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">instalación de calefacción podría ser diseñado de esta manera. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Sensores de temperatura, </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">que informan de la habitación se evalúan las temperaturas y el quemador y tal vez</span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">algunas válvulas se controlan para producir la temperatura objetivo deseada. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Por otra parte, el uso de un sistema de tiempo real, el programa podría casualmente y </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">actualizar periódicamente una pantalla para proporcionar información - en la misma o cualquier otra </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">tasa. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Programación basada regular, el tiempo puede hacerse sin la necesidad de CPU </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">que consume esperando bucles tal como se utiliza en la implementación de la biblioteca de Arduino </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">demora y delayMicroseconds funciones. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Los sistemas operativos en tiempo real </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">se caracteriza por el uso profesional de micro controladores. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">RTuinOS es un pequeño sistema operativo en tiempo real (RTOS) para el Arduino </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">medio ambiente. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Es fácil de utilizar, y encaja en el Arduino existente </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">entorno de código. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Se añade el concepto de hilos de ejecución seudo-paralelo </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">a los bocetos. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">El dibujo tradicional Arduino tiene dos puntos de entrada; </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">la configuración de la función, </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">que es el lugar para poner el código de inicialización necesaria para ejecutar el </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">boceto y la función de bucle, que se llama periódicamente. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">La frecuencia de </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">bucle no es determinista sino que depende del tiempo de ejecución del código </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">dentro del bucle. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Usando RTuinOS, las dos funciones mencionadas siguen existiendo y continuar </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">a tener el mismo significado.</span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Sin embargo, como parte de la inicialización del código de </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">configuración puede definir una serie de tareas que tienen propiedades individuales. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">La </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">propiedad más relevante de una tarea es una función de código C, que se convierte en el</span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">papel de la tarea llamada. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Una vez que entra en el bucle tradicional Arduino, todas </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">de estas funciones de trabajo se ejecutan en paralelo entre sí y a la </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">ejecución repetida de bucle de función. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Decimos, el lazo se convierte en la tarea de inactividad de </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">la RTOS. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Una característica de RTuinOS es que el comportamiento de una tarea no está totalmente</span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">predeterminado en tiempo de compilación. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">RTuinOS apoya regulares, por control de tiempo </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">tareas, así como las puramente controlada de eventos. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Las tareas pueden ser preventivo o </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">comportarse de forma cooperativa. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">La programación de tareas se puede hacer usando intervalos de tiempo y un </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">patrón de round robin. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Además, muchos de estos modos se pueden mezclar. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Una tarea es </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">per se no regular, su código de la aplicación decide lo que pasa y esto</span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">puede ser decidido contexto o situación de dependencia. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Esta flexibilidad se </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">logra mediante la idea básica de tener un programador controlado evento, donde </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">RTOS típicos casos de uso son compatibles, proporcionando eventos de acuerdo, por ejemplo </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">absoluta de punto-a-tiempo-alcanzado. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Si el código de la tarea decide esperar siempre </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">por el mismo absoluta de punto-a-tiempo-alcanzado caso, entonces se convierte en una </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">tarea regular. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Sin embargo, la situación depende de la misma tarea podría decidir </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">esperar a que un evento de aplicación enviado - y renunciar a su comportamiento normal. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">En </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">muchas implementaciones RTOS la característica básica de una tarea se determina </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">en tiempo de compilación, en RTuinOS esto se hace en parte en tiempo de compilación y en parte </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">en tiempo de ejecución.</span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">RTuinOS se proporciona como un archivo de código fuente única que se compila </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">junto con su otro código, que ahora se convierte en una aplicación RTuinOS. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">En el caso más sencillo, si no se define ninguna tarea, su aplicación </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">se parecen mucho a un dibujo tradicional: a implementar su configuración y </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">su función de bucle; </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">el anterior se ejecutará una vez al comienzo y el </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">último en repetidas ocasiones. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">RTuinOS por sí sola no puede ser compilado, es necesario que haya una aplicación. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">RTuinOS se organiza como un paquete que combina el archivo de origen RTuinOS </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">con algunos ejemplos de aplicaciones que son el casos de prueba al mismo tiempo. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">el código fuente de cada aplicación de la muestra se lleva a cabo en una carpeta separada, </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">llamada tc <nn>. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Cualquiera de ellos puede ser seleccionado para la compilación. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Puede añadir </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">más carpetas, explotación, el código fuente de las aplicaciones RTuinOS. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Un </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">punto de partida de la carpeta de la aplicación puede ser una copia de cualquiera de las </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">carpetas tc <nn>. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">La compilación siempre es el mismo. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Ejecute el archivo MAKE, </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">donde el nombre de la carpeta (que no tiene por qué ser tc <nn>) es una </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">opción en la línea de comandos.</span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Consulte el manual para más. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">El documento más relevante para leer es el manual de RTuinOS, que se encuentra como</span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">manual.pdf. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">El manual presenta el concepto básico de RTuinOS y da </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">una visión general de sus características y limitaciones: </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Capítulo 2 se explican los principios básicos de funcionamiento. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Algunas centrales </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">consideraciones de la implementación se destacan, pero la correspondiente </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">documentación de la aplicación es el propio código. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Se comenta</span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">utilizando doxygen ( </span><a class="bbc_link" href="http://www.doxygen.org/" style="background: none rgb(245, 245, 245); border-bottom-color: rgb(168, 182, 207); border-bottom-style: solid; border-bottom-width: 1px; box-sizing: border-box; color: #00787c; font-family: 'TyponineSans Regular 18'; font-size: 14.6994px; line-height: 20.5792px; text-decoration: none;" target="_blank"><span style="box-sizing: border-box;">www.doxygen.org</span></a><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;"> etiquetas); </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">la documentación doxygen compilado </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">es parte de este proyecto.</span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Sólo contiene la documentación de los mundiales </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">objetos de RTuinOS; </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">para comprender plenamente la aplicación tendrá </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">a inspeccionar el código fuente en sí, por favor refiérase a [1], [2], [3]. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Capítulo 3 listas y documentos de todos los elementos de API RTuinOS '. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Capítulo 4 explica cómo escribir un pozo -trabajando RTuinOS-aplicación. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">El </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">capítulo comienza con una breve receta, lo que garantiza el éxito muy pronto. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">Aquí es </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">donde puede comenzar a leer si ya está familiarizado con el concepto </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">de un RTOS. </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">El manual se cierra con el capítulo 5, lo que da una visión general de las posibles </span><span style="background-color: whitesmoke; box-sizing: border-box; color: #222222; font-family: "typoninesans regular 18"; font-size: 14.6994px; line-height: 20.5792px;">mejoras y todavía faltan y características quizás más tarde liberados.</span>Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-10157825696583448822014-04-14T12:30:00.001-07:002014-05-26T20:56:01.109-07:00FreeRTOS (Completo)<h2>
<b>1.-Preparando el ambiente: como crear un proyecto con FreeRtos. </b></h2>
<h3>
<b>Bajo PIC18F (C18)</b></h3>
Cumpliendo con la tarea que prometimos que era utilizar un RTOS que este
disponible sobre un gran numero de microcontroladores, iniciamos el
curso con un tutorial paso a paso para crear un proyecto con FREERTOS para PIC18, ya que es el microcontrolador de mayor llegada para mucha gente. Luego una vez madurado pasaremos a una arquitectura ARM sobre el mismo RTOS de manera de aprovechar todo lo hecho o por hacer. Armar
el ambiente de trabajo para tu RTOS puede que no sea una tarea simple
la primera vez, ya que hay que tener en cuenta muchas cosas que son solo
dependientes de la arquitectura utilizada, asi que aqui te daremos una
mano para pasarlo lo mas pragmatico y rapidamente posible.<br />
Las imagenes son orientativas, no se incluiran todas las posibles.<br />
<b><br /></b>
<ul style="margin-bottom: 0; margin-top: 0;">
<li>1.Crear un proyecto con "proyect Wizard" eligiendo el PIC18F a utilizar<br /><img alt="" border="0" src="http://img204.imageshack.us/img204/8795/freertosmplabc1801ys3.tif" /> </li>
<li>2.Elegir el C18 como compilador C ANSI 89.</li>
<li>3.Se deben agregar al proyecto bajo "sources" las fuentes del mismo<br /> list.c<br /> queue.c<br /> task.c<br /> Si se va a utilizar corutinas ->croutine.c<br /><img alt="" border="0" src="http://img185.imageshack.us/img185/9443/freertosmplabc1805bn0.tif" /><img alt="" border="0" src="http://img55.imageshack.us/img55/8707/freertosmplabc1806dg9.tif" /></li>
<li>4.Deben agregar al proyecto bajo "portable"<br /> a. heap_x.c donde x es 1,2 o 3 dependiendo del modelo de memoria en \MemMang<br /> 1 es un modelo de memoria estatico, una vez tomada la memoria no se puede devolver.<br /> 2 es un modelo dinamico pero sin reodenamiento.<br /> 3 es un modelo completo de manejo de memoria.<br /> b. port.c dependiente del dispositivo que en este caso es \MPLAB\PIC18F</li>
<li>5.Se
debe agregar el archivo linker dpte del micro modificado para disponer
de un espacio de heap lineal mas grande, puedes comparar el original de
microchip con el provisto para entender como se modifica.<br /><img alt="" border="0" src="http://img174.imageshack.us/img174/2628/freertosmplabc1808ge8.tif" /></li>
<li>6.En opciones del compilador, se debe configurar:<br /> a.Bajo categoria general, en Nivel de diagnostico poner "Errors, warnings and messages" que es similar a la directiva -w3<br /> b.Bajo Memory model, usar stack model Multi bank (directiva -Ls)<br /> c.Bajo Optimization seleccionar custom y deshabilitar procedural abstraction (directiva -Opa-)<br /> d.bajo macro definition del C18 se debe agregar las siguientes directivas:<br /> MPLAB_PIC18F_PORT<br /> -nw 2074 -nw 2066<br /> Tiene que quedar la directiva total en "-w3 -DMPLAB_PIC18F_PORT -D-nw 2074 -nw 2066 -Ls -Opa-"<br /><img alt="" border="0" src="http://img181.imageshack.us/img181/2759/freertosmplabc1809eo6.tif" /></li>
<li>7.Debes agregar los path a las fuentes del FreeRTOS(\INCLUDE) en el "include search path" del C18.<br />
Aunque tiene que ver con la instalacion del C18, debes tenes en el
proyecto los path a los includes del C18 y a las librerias.<br /><img alt="" border="0" src="http://img58.imageshack.us/img58/7674/c1822zo8.png" /><img alt="" border="0" src="http://img101.imageshack.us/img101/4279/c1833lk9.png" /></li>
<li>8.Se
debe agregar el archivo FreeRTOSConfig.h con los parametros de
configuracion del sistema operativo, puedes usar como ejemplo el
provisto aqui.</li>
<li>9.Debes agregar tu archivo con el main con la configuracion de arranque ejecucion de tus tareas y del Scheduler.</li>
</ul>
<i>Nota
importante: Para que compile este ejemplo debes comentar en port.c las
llamadas a vSerialRxISR y vSerialTxISR en el servicio de interrupciones
ya que el ejemplo no agrega el modulo de serial.</i><br />
<br />
El ejemplo
tiene paths a los archivos en duro osea que deben ser modificados por
los path de donde se encuentra tu compilador, tu MPLAB y el FreeRTOS.<br />
Se
pueden hacer path relativos al path actual de tu proyecto, eso es si tu
ubicas tu proyecto dentro del arbol de archivos de FreeRtos.<br />
<br />
Como nota adicional la unica tarea cargada no hace mas que demorar 10 ticks y volverse a dormir...<br />
No era el objetivo de este post mostrar las capacidades del RTOS, eso queda para otros post.<br />
Agregado:<br />
Para
poder manterner path a los archivos de tu proyecto y del source, es
preferible ubicar tu proyecto dentro del arbol de directorios de
FreeRTOS.<br />
Yo cree una carpeta al mismo nivel que los demos de manera de utilizar path relativos y hacerlo mas flexible en su adaptacion.<br />
<br />
<b><br />\Demo<br />\License<br />\Projects</b><--Carpeta agregada<br />
<b>\Source<br />\TraceCon</b><br />
<span style="color: red;"><b>Nota Importante: manejo del port</b></span><br />
Es importante remarcar ciertos aspectos del uso del RTOS FreeRTOS con el compilador C18.<br />
Este
compilador como todos los que manejan arquitecturas de 8 bits
limitadas, aboga por la eficiencia en velocidad, tamaño de codigo de
programa y uso de memoria RAM.<br />
Por ende algunas limitaciones tiene:<br />
Aunque
el modelo permite reentrancia, no la realiza a traves de manejo de
memoria en el stack sino que genera una estructura de datos adicional
estatica, es mas rapido pero escapa del estandar.<br />
Ademas para
mantener la integridad en calculos matematicos en variables atomizables
(por ejemplo enteros en 32 bits que llegan 4 bytes) maneja en una
posicion fija buen numero de posiciones de memoria.<br />
<br />
Con respecto
al FREERTOS, este requiere una gran area de memoria lineal para manejar
su queue (cola), el problema es que el C18 maneja bancos de 256 bytes
por lo que se debe modificar el archivo linker script para unir varias
de estas secciones, pero lo importante es NO UNIRLAS TODAS ya que el
compilador todavia necesita utilizar algunas de estas secciones para sus
propositos.<br />
El tamaño de esta queue se declara en el archivo FreeRTOSConfig.h y se llama configTOTAL_HEAP_SIZE.<br />
<br />
<b>Por ende las siguientes modificaciones al modelo son requeridas:</b><br />
<ul style="margin-bottom: 0; margin-top: 0;">
<li>Modificar el archivo lkr (EJ: 18f2620.lkr) uniendo varias secciones de ram en una sola (pero no todas)</li>
<li>Modificar en el port para C18 (port.c) el numero de datos usados por matematica que se deben guardar en el stack.<br />Para esto se debe mirar el archivo .map que genera en la misma carpeta de proyecto y contar cuantos bytes<br />consume MATH_DATA y .tmpdata juntas este numero menos uno es el valor a poner en portCOMPILER_MANAGED_MEMORY_SIZE.</li>
<li>Agregar tantas lineas de :<br />MOVFF POSTINC0, PREINC1<br />y<br />MOVFF POSTDEC1, POSTDEC0<br />en la parte de salvar y restaurar contexto respectivamente, como el numero que tenemos en portCOMPILER_MANAGED_MEMORY_SIZE.</li>
</ul>
<br />
<h3>
<b> </b><b>AT91SAM7S</b><b> </b></h3>
<div style="text-align: justify;">
De la misma manera que se realizo para el Tutorial paso a paso para crear un proyecto con FreeRtos para PIC18F en este caso pasamos a un microcontrolador mas importante como el AT91SAM7S.<br />
En
este caso simplemente recomiendo utilizar el cascaron que brindo aqui
ya que es funcional y de aqui solo hay que agregar las fuentes para cada
caso especifico. Una cosa a dejar en claro es: porque si todos
los micros basados en ARM tienen la misma arquitectura, los ports
(adaptaciones para el RTOS), son diferentes? Esto se debe a que
aunque la arquitectura del procesador sea la misma, difieren las
implementaciones de los perifericos (timers que son usados por el RTOS
para el context switch, sistema de interrupciones, etc) y tambien es
totalmente diferente el tipo de compilador usado por cada IDE (KEIL,
IAR, GCC, etc) con lo que cada uno requerira un tunning especifico.<br />
<br />
En
el caso de KEIL no posee un port avalado por FREERTOS para la linea
SAM7S con lo que utilizamos uno NO AVALADO pero totalmente funcional.<br />
Es en realidad para un AT91SAM7X pero es exactamente lo mismo ya que las diferencias la maneja la libreria de KEIL.<br />
<br />
Lo que si hay que agregar en el header file portable.h ubicado en FreeRTOS\Source\include\ la siguiente linea:<b><br /></b></div>
<div class="codeheader">
</div>
<div class="codeheader">
Código:</div>
<div class="code">
<pre style="display: inline; margin-top: 0;"><span style="background-color: #cccccc;">#ifdef KEIL_SAM7
#include "..\..\Source\portable\Keil\SAM7\portmacro.h"
#endif</span></pre>
</div>
Igual agrego el archivo para mayor conveniencia.<br />
<br />
Con esto hariamos uso al port de SAM7 para KEIL que debemos ubicar en el path del include (./Source/portable/Keil/SAM7/).<br />
Estas librerias son:<br />
<ul style="margin-bottom: 0; margin-top: 0;">
<li>portISR.c</li>
<li>portasm.s</li>
<li>port.c</li>
</ul>
<br />
De esta manera le de decimos al FREERTOS que si tiene soporte para el sistema en cuestion.<br />
<br />
A continuacion muestro una imagen del espacio de trabajo:<br />
<img alt="" border="0" src="http://img124.imageshack.us/img124/7061/workplacefk9.png" /><br />
<br />
Tenemos
las fuentes particulares del proyecto (en este caso solo main.c y el
assembler de arranque), el codigo del port especifico para este micro y
las funciones propias del RTOS. Si desearamos modificar opciones del build debemos utilizar el modulo de opciones de build: El
que tiene la varita es el de "options for target", aqui modificamos el
tipo de micro a usar, las posiciones de memoria a usar, el tipo de
debug, los path al codigo C/C++ y ASM, etc.El que tiene 3 cajitas de colores permite sacar o agregar modulos c/c++/h/asm al proyecto, ademas de documentacion. La
tarea de prueba levanta 4 instancias de la tarea blinkear led y cada
una captura 1 de los 4 leds disponibles de la placa de desarrollo de
ATMEL.<br />
El archivo zip tiene la carpeta raiz del proyecto con lo que no se van a perder para instalarlo en el directorio de FreeRTOS.<br />
<br />
<h3>
<b>ARM7_LPC2106_Keil_GCC</b></h3>
<div class="post">
Hola gente del Foro, siguiendo mi post anterior <a href="http://www.sistemasembebidos.com.ar/forum/index.php?topic=780.msg3402#msg3402" target="_blank">ARM Toolchains</a>
y luego de mucho peludear por la Web para hacer compilar primero una
demo para ARM-GCC pero desde la IDE de Keil (uVision), logré, luego
después de más peludeo, hacer compilar uno de los ports de FreeRTOS
"ARM7_LPC2106_GCC" (o sea un port de FreeRTOS para NXP LPC2106 usando el
GNU C Compiler [es decir GCC]) usando, al igual que antes, el Keil
uVision como IDE. A este nuevo toolchain lo llamé <b>"ARM7_LPC2106_Keil_GCC"</b>
el cual adjunto. Para configurar el Keil uVision me ayudé mucho con
otro port de FreeRTOS pero para el Keil "ARM7_LPC2129_Keil_RVDS", con el
compilador que viene junto con él, es decir el RVDS (RealView
Development Suite).<br />
Por qué Keil? bueno porque, como expliqué en el
post anterior, es el UNICO que soporta el programador que ya tengo
(ULink), por otro lado si bien no lo puedo asegurar, toda la parte de
debug y simulación debe de estar muy bien soportada teniendo en cuenta
que Keil forma parte de ARM desde hace un tiempo.<br />
Para qué armé este
Toolchain? Bueno, siempre fui partidario de usar plataformas abiertas y
además de un modo u otro GNU y FreeRTOS de un modo u otro llegan a todos
lados.<br />
Qué hay que tener en cuenta al armar un Toolchain como este?
Como puse mas arriba el Toolchain que armé es la suma del
source/makefile del port "ARM7_LPC2106_GCC" mirando al mismo tiempo la
configuración del IDE del uVision en el port "ARM7_LPC2129_Keil_RVDS".
En principio lo que se hace es armar las carpetas del port para GCC
copiando solo Sources(.c), Headers(.h), Startup Code(.s) y Linker
Script(.ld), y luego crear el proyecto con el Keil ya configurado para
compilar con GCC para luego traspasar las directivas del precompilador y
los path a las librerías que se pueden sacar del makefile. Si no
entienden cómo funciona el makefile lo que pueden hacer es compilarlo
(aparte en una carpeta específica para GCC) primero con el GCC, es decir
escribir 'make'. Esto es muy importante porque antes de hacer funcionar
el GCC con el IDE del Keil sería bueno asegurarse que funciona solito,
es decir, como fue concebido. En mi caso, para 'robar' los parámetros
que el makefile le pasa al compilador y al linker usé un viejo truco de
DOS (ahora 'Simbolo de sistema' en Windows) que es enviar la salida por
defecto (CON) de cualquier aplicación de consola a un archivo de esta
forma: "make > make_out.txt". Ésto nos ejecuta el 'make' pero en
lugar de mostarnos el resultado de lo que va haciendo en la
consola(pantalla), lo graba en el archivo 'make_out.txt'. En este port
en particular había varias formas de compilarlo (Debug(RAM)/Target(ROM) y
ARM/Thumb, es decir 4 combinaciones) preparadas en archivos batch de
DOS(.bat), yo usé 'ROM_ARM.bat' y acá les pego el resultado:<br />
(<i><span style="text-decoration: underline;">NOTA</span>: le quité la opción <b>-fno-dwarf2-cfi-asm</b> al makefile porque no compila con el nuevo GNU-ARM</i>)<br />
<div class="codeheader">
Código:</div>
<div class="code" style="overflow: scroll;">
<pre style="display: inline; margin-top: 0;">C:\!Raul\SourcesPruebas\ARM7_LPC2106_GCC\Demo\ARM7_LPC2106_GCC>set USE_THUMB_MODE=NO
C:\!Raul\SourcesPruebas\ARM7_LPC2106_GCC\Demo\ARM7_LPC2106_GCC>set DEBUG=
C:\!Raul\SourcesPruebas\ARM7_LPC2106_GCC\Demo\ARM7_LPC2106_GCC>set OPTIM=-O3
C:\!Raul\SourcesPruebas\ARM7_LPC2106_GCC\Demo\ARM7_LPC2106_GCC>set RUN_MODE=RUN_FROM_ROM
C:\!Raul\SourcesPruebas\ARM7_LPC2106_GCC\Demo\ARM7_LPC2106_GCC>set LDSCRIPT=lpc2106-rom.ld
C:\!Raul\SourcesPruebas\ARM7_LPC2106_GCC\Demo\ARM7_LPC2106_GCC>make
arm-elf-gcc -c -Wall -Wextra -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wunused -D RUN_FROM_ROM -D GCC_ARM7 -I. -I../../Source/include -I../Common/include -mcpu=arm7tdmi -Tlpc2106-rom.ld -O3 -fomit-frame-pointer -fno-strict-aliasing ../../Source/portable/GCC/ARM7_LPC2000/portISR.c -o ../../Source/portable/GCC/ARM7_LPC2000/portISR.o
(...para el resto de los .c es lo mismo...)
arm-elf-gcc -Wall -Wextra -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wunused -D RUN_FROM_ROM -D GCC_ARM7 -I. -I../../Source/include -I../Common/include -mcpu=arm7tdmi -Tlpc2106-rom.ld -O3 -fomit-frame-pointer -fno-strict-aliasing ../../Source/portable/GCC/ARM7_LPC2000/portISR.o serial/serialISR.o main.o serial/serial.o ParTest/ParTest.o ../Common/Minimal/integer.o ../Common/Minimal/flash.o ../Common/Minimal/PollQ.o ../Common/Minimal/comtest.o ../Common/Minimal/flop.o ../Common/Minimal/semtest.o ../Common/Minimal/dynamic.o ../Common/Minimal/BlockQ.o ../../Source/tasks.o ../../Source/queue.o ../../Source/list.o ../../Source/portable/MemMang/heap_2.o ../../Source/portable/GCC/ARM7_LPC2000/port.o -nostartfiles boot.s -Xlinker -ortosdemo.elf -Xlinker -M -Xlinker -Map=rtosdemo.map
arm-elf-objcopy rtosdemo.elf -O ihex rtosdemo.hex</pre>
</div>
De donde se rescata:<br />
<ul style="margin-bottom: 0; margin-top: 0;">
<li><b>Preprocesor Symbols:</b><br /><ul style="margin-bottom: 0; margin-top: 0;">
<li>RUN_FROM_ROM</li>
<li>GCC_ARM7</li>
</ul>
</li>
<li><b>Include Paths:</b><br /><ul style="margin-bottom: 0; margin-top: 0;">
<li>.</li>
<li>../Common/include</li>
<li>../../Source/include</li>
<li>../../Source/portable/GCC/ARM7_LPC2000</li>
</ul>
</li>
<li><b>Misc Controls:</b><br /><ul style="margin-bottom: 0; margin-top: 0;">
<li>-fomit-frame-pointer</li>
<li>-fno-strict-aliasing</li>
</ul>
</li>
<li><b>Optimization:</b><br /><ul style="margin-bottom: 0; margin-top: 0;">
<li>-O3</li>
</ul>
</li>
<li><b>Linker Script File:</b><br /><ul style="margin-bottom: 0; margin-top: 0;">
<li>lpc2106-rom.ld</li>
</ul>
</li>
</ul>
Una
vez asegurados de que el GCC funciona bien solito y volviendo al tema
de la configuración del uVision, no nos debemos olvidar de adjuntar el
Linker Script y el Startup propio del GCC. Les muestro los parámetros
mas relevantes agregados por pestaña:<br />
<br />
<div align="center">
<img alt="" border="0" src="http://img338.imageshack.us/img338/9791/buildtoolbar.gif" /></div>
<br />
En "<b>Options for Target</b>":<br />
<div align="center">
<img alt="" border="0" src="http://img338.imageshack.us/img338/2860/26834407.gif" /><br />
<br />
<img alt="" border="0" src="http://img266.imageshack.us/img266/4761/assembler.gif" /><br />
<br />
<img alt="" border="0" src="http://img62.imageshack.us/img62/5922/linker.gif" /></div>
<br />
En "Setup File Extensions, Books and <b>Environment</b>":<br />
<div align="center">
<br /></div>
Esto compila en Keil uVision sin errores y sin warnings como muestro acá:<br />
<div class="codeheader">
Código:</div>
<div class="code">
<pre style="display: inline; margin-top: 0;">Build target 'RTOSDemo_ARM'
assembling boot.s...
compiling ParTest.c...
compiling main.c...
compiling serial.c...
compiling serialISR.c...
compiling tasks.c...
compiling list.c...
compiling queue.c...
compiling port.c...
compiling heap_2.c...
compiling portISR.c...
compiling flash.c...
compiling comtest.c...
compiling BlockQ.c...
compiling dynamic.c...
compiling PollQ.c...
compiling semtest.c...
compiling flop.c...
compiling integer.c...
linking...
creating hex file...
"RTOSDemo.elf" - 0 Error(s), 0 Warning(s).</pre>
</div>
Claro
que 'del dicho al hecho hay un gran trecho' y todo ésto si bien compila
no está probado sobre en un target real, es decir, una placa de
desarrollo. En teoría debería ser igual de efectivo que el port original
para GCC (por razones obvias), pero se los comento para que lo tengan
en cuenta.<br />
Lo que rescato de todo ésto es que tengo un buen
simulador/debugger (Keil uVision) en un entorno abierto muy portable
(ARM-GCC + FreeRTOS). No quedo atado con ésto ni a compiladores
propietarios (Keil RealView, IAR C/C++ Compiler, etc) ni a RTOS
propietarios (Keil RTX, IAR PowerPack, Rowley CTL, etc).<br />
<h2>
2.-Configurar el modo de funcionamiento del sistema Operativo</h2>
<div style="text-align: justify;">
Una gran variedad de parametros estan disponibles para configurar este versatil sistema operativo en tiempo real. Muchos
de ellos estan pensados para impactar de manera positiva en el tamaño
del codigo o en la velocidad de respuesta del mismo o inclusive como va a
funcionar. Todos estos parametros estan ubicados en el header
file llamado "FreeRTOSConfig.h" (se incluye como ejemplo un config para
PIC18F)</div>
<div class="codeheader">
Código:</div>
<div class="code">
<pre style="display: inline; margin-top: 0;"><span style="background-color: #cccccc;">/*
FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
***************************************************************************
* *
* SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, *
* and even write all or part of your application on your behalf. *
* See http://www.OpenRTOS.com for details of the services we provide to *
* expedite your project. *
* *
***************************************************************************
***************************************************************************
Please ensure to read the configuration and relevant port sections of the
online documentation.
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
#include <p18cxxx.h>
/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*----------------------------------------------------------*/
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 20000000 )
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 4 )
#define configMINIMAL_STACK_SIZE ( 105 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) 3600 )
#define configMAX_TASK_NAME_LEN ( 4 )
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 1
#define configIDLE_SHOULD_YIELD 1
/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */
#define INCLUDE_vTaskPrioritySet 0
#define INCLUDE_uxTaskPriorityGet 0
#define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskCleanUpResources 0
#define INCLUDE_vTaskSuspend 0
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#endif /* FREERTOS_CONFIG_H */</span></pre>
</div>
<br />
Los parametros son:<br />
<br />
<b>configUSE_PREEMPTION:</b><br />
Se configura con 1 que funcione como un RTOS preventivo y con 0 como un RTOS cooperativo<br />
<br />
<b>configUSE_TICK_HOOK</b><br />
Se configura con 1 si se desea utilizar un tick externo al provisto por el proyecto 0 si se usa el propio del port.<br />
<br />
<b>configCPU_CLOCK_HZ</b><br />
Se configura la velocidad del reloj del sistema (es un parametro que se le pasa para referencia del RTOS)<br />
<br />
<b>configTICK_RATE_HZ</b><br />
Se
configura cada cuanto se desea que se genere un tick de sistema, si es
muy alto se tiene mucha definicion pero mucho overhead.<br />
El valor de referencia es 1000<br />
<br />
<b>configMAX_PRIORITIES</b><br />
Es el numero maximo de prioridades a utilizar, cuanto mas grande mas memoria se consume.<br />
Se debe tener en cuenta que varias tareas pueden tener la misma prioridad (metodo de round robin para tareas de = prioridad).<br />
<br />
<b>configMINIMAL_STACK_SIZE</b><br />
Tamaño de la pila minimo, se debe tratar de no tocar del valor de referencia de la demo.<br />
<br />
<b>configTOTAL_HEAP_SIZE</b><br />
Tamaño
de la cola de memoria disponible para el RTOS. De aqui se alimenta el
sistema operativo para su manejo (colas, semaforos, mutex, etc).<br />
<br />
<b>configMAX_TASK_NAME_LEN</b><br />
Esta es la longitud maxima de nombre de la tarea<br />
<br />
<b>configUSE_TRACE_FACILITY</b><br />
Utilizado para trazabilidad.<br />
<br />
<b>configUSE_16_BIT_TICKS</b><br />
Tamaño
de los registros de conteo de Ticks, impacta directamente en el tiempo
total posible a contar, en la memoria utilizada para tal fin y el
overhead generado por conteos con mas longitud de palabra.<br />
Depende mucho de la arquitectura del micro (8, 16 o 32 bits)<br />
<br />
<b>configIDLE_SHOULD_YIELD</b><br />
Util solo si el RTOS esta configurado en modo preventivo y se usa la tarea IDLE.<br />
Afecta al funcionamiento de las tareas en IDLE, su eficiencia y overhead.<br />
<br />
<b>configUSE_USE_MUTEXES</b><br />
Si se setea en 1 se utilizan <a href="http://en.wikipedia.org/wiki/Mutual_exclusion" target="_blank">MUTEXES</a><br />
<br />
<b>configUSE_RECURSIVE_MUTEXES</b><br />
SI se setea en 1 se pueden usar MUTEXES recursivos<br />
<br />
<b>configUSE_COUNTING_SEMAPHORES</b><br />
Si se setea en 1 los semaforos no seran binarios sino que contaran numero de ocurrencias a costo de mas memoria.<br />
<br />
<b>configUSE_ALTERNATIVE_API</b><br />
Si
se setea en 1 se utilizan APIs alternativas que tienen menor costo en
peso de codigo y velocidad a costa de usarlas con consideraciones.<br />
<br />
<b>configCHECK_FOR_STACK_OVERFLOW</b><br />
Si se setea en 1 se checkea por overflow del stack.<br />
<br />
<b>configUSE_CO_ROUTINES</b><br />
Si
se setea en 1 se utilizaran corutinas (debe incluirse la source
corutine.c) para manejo cooperativo (puede ser mixto con preventivo)<br />
<br />
<b>configMAX_CO_ROUTINE_PRIORITIES</b><br />
Numero de prioridades de las corutinas<br />
<br />
<b>configKERNEL_INTERRUPT_PRIORITY</b><br />
Solo
disponible para PIC24/DSPIC y Cortex M3 processors, se puede configurar
las prioridades de las interrupciones y como afectan al RTOS.<br />
<br />
<b>PARAMETROS INCLUDE</b><br />
Esto
es una funcionalidad muy buena del RTOS, permite anular del proceso de
BUILD (compilacion), a toda funcion que no se desea con solo poner la
definicion con su nombre de la siguiente forma.<br />
<br />
<span style="background-color: #cccccc;">#define INCLUDE_vTaskDelete 1 <i>Aqui se incluye en el proceso de build a la tarea "borrar Tarea"</i><br />#define INCLUDE_vTaskDelete 0 <i>Aqui se excluye del proceso de build a la tarea "borrar Tarea"</i></span></div>
<h2>
3.-Tipos de variables y convencion de nombres</h2>
Aunque se pueden utilizar los tipos de
variables que provee tu compilador, y a manera de unificar entre diferentes plataformas, el FREERTOS utiliza tipos de variables propios
que no son mas que definiciones de tipo que son actualizados en tiempo
de compilacion. De esta manera, el codigo que se realiza para un compilador "X" funciona en otro compilador "Y".<br />
<br />
Los tipos estandar son:<br />
<b>portCHAR</b> Es un char, una palabra entera de 8 bits o un caracter ASCII estandar<br />
<b>portFLOAT</b> Es un numero con punto flotante de precision simple<br />
<b>portDOUBLE</b> Es un numero con punto flotante de precision doble<br />
<b>portLONG</b> Es un entero de 32 bits<br />
<b>portSHORT</b> Es un entero de 16 bits<br />
<b>portSTACK_TYPE</b> es el tipo de datos y tamaño consumidos por el stack de memoria<br />
<br />
Hay dos tipos de variables muy fuertemente unidos a la arquitectura del micro:<br />
<b>portBASE_TYPE</b> Es el tipo de variable entera basica atada al tipo de procesador, el que genera menos overhead.<br />
<b>portTickType</b> Es configurable en longitud (16 o 32 bits) dependiendo de lo elegido en la Configuracion del RTOS<br />
<br />
<b>Convencion de nombres</b><br />
Las
aplicaciones que desarrolles bajo el RTOS deberian cumplir con las
reglas de nombres que se establecen para una mejor lectura y comprension
del codigo.<br />
Los nombres de las funciones utilizan el metodo <a href="http://es.wikipedia.org/wiki/CamelCase" target="_blank">lower camelcase</a> donde el primer caracter hace referencia al tipo de variable que se retorna.<br />
<br />
Si se retorna <b>void</b> lleva al principio <b>v</b><br />
Si se retorna <b>char</b> lleva al principio <b>c</b><br />
Si se retorna <b>short</b> lleva al principio <b>s</b><br />
Si se retorna <b>long</b> lleva al principio <b>l</b><br />
Si se retorna <b>double</b> lleva al principio <b>d</b><br />
Si se retorna variables <b>enumeradas</b> lleva al principio <b>e</b><br />
Si se retorna otros tipos (por ej <b>estructuras</b>) lleva al principio <b>x</b><br />
Si se retorna un <b>puntero</b> a un tipo de datos se pone adicionalmente <b>p</b> (ej: ps es puntero a un short)<br />
<br />
Adicionalmente, si la variable es sin signo (<b>unsigned</b>) se pone delante una <b>u</b>.<br />
Si son funciones <b>privadas</b>, adicionalmente se pone <b>prv</b><br />
Siempre se hace referencia en el nombre al modulo en donde se han definido (por ejemplo <b>vTaskDelete</b> esta en el modulo <b>task.c</b>). <br />
<br />
<h2>
<b>4.-Inicializacion del RTOS, creacion y destruccion de tareas</b></h2>
<div class="post">
Una vez que tenemos el ambiente de desarrollo listo, solo nos queda agregar en el programa principal (main) las llamadas a las <a href="http://es.wikipedia.org/wiki/Application_Programming_Interface" target="_blank">APIs</a> que se encargan de:<br />
<ul style="margin-bottom: 0; margin-top: 0;">
<li>Inicializar la memoria del sistema</li>
<li>Ejecutar el Scheduler o administrador de tareas</li>
<li>Ejecutar las tareas padre.</li>
</ul>
<br />
<div style="text-align: justify;">
Para la inicializacion de la memoria se llama a la funcion <b>vPortInitialiseBlocks()</b> que depende directamente del port y del modelo de memoria utilizado. Para ejecutar el Sheduler y comenzar el proceso de administracion se llama a la funcion <b>vTaskStartScheduler</b>,
esta funcion tambien se encarga de la configuracion previa del
periferico encargado para el tick del sistema y de las interrupciones.<br />
Si tuvo exito en su arranque no retorna nunca mas a menos que se llame a la funcion <b>vTaskEndScheduler</b> que permite continuar la ejecucion justo en el punto en donde se ejecuto vTaskStartScheduler.</div>
<br />
1.Para ejecutar una tarea especifica se llama a la funcion <b>xTaskCreate</b> que toma los siguientes parametros en el mismo orden:<br />
<br />
pvTaskCode Puntero al nombre de la tarea.<br />
pcName Un nombre auto descriptivo de la tarea para ayudar en el
proceso de debug. la longitud max se define con configMAX_TASK_NAME_LEN.<br />
usStackDepth Es el tamaño del stack de tareas definido como el nro
de variables que el stack puede almacenar, no el nro de bytes.<br />
pvParameters puntero a los parametros que va a recibir la tarea.<br />
uxPriority La prioridad con la que va a correr la tarea (depende del nro de prioridades que se configuro)<br />
pvCreatedTask Se usa para pasar el manejador por la cual la tarea puede ser referenciada.<br />
<br />
Devuelve un indicador de exito (pdPASS) o fracaso (un error code) en la creacion de la tarea.<br />
<br />
Ejemplo:<br />
<div class="codeheader">
<span style="background-color: #cccccc;">Código:</span></div>
<div class="code">
<pre style="display: inline; margin-top: 0;"><span style="background-color: #cccccc;">void main( void )
{
xTaskHandle xHandle;
/* Inicializo Hardware. */
vPortInitialiseBlocks();
/* Arranco la tarea */
xTaskCreate( vTareaDePrueba, ( const portCHAR * const ) "Prueba", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 2, Handle );
/* Arranco el scheduler. */
vTaskStartScheduler();
}</span></pre>
</div>
<br />
2. Para destruir una tarea y recuperar la memoria que utilizaba en la cola, se debe llamar a la funcion <b>vTaskDelete</b> donde el unico parametro que se le pasa es el el manejador a la tarea.<br />
<br />
<div class="codeheader">
Código:</div>
<div class="code">
<pre style="display: inline; margin-top: 0;"><span style="background-color: #cccccc;">void vDestruirMiTarea( void )
{
vTaskDelete( xHandle );
}</span></pre>
</div>
<br />
<b>Tareas Suicidas:</b><br />
Agregue un pequeño ejemplo en donde se arranca una tarea que crea tiene como funcion crear otra tarea y se autodestruye.<br />
La segunda realiza la misma tarea que la primera aunque no comparte codigo en comun.</div>
<br />
<h2>
<b>5.-Consideraciones para Multiples instancias de la misma tarea </b></h2>
<br />
De la misma manera que en un Sistema Operativo clasico, ya podemos generar multiples instancias del codigo de una sola funcion. Cada
una de ellas tendra, gracias al RTOS, una porcion de los recursos del
micro, para alojar sus datos y ejecutarse correctamente. Los recursos
que pidamos a traves del RTOS seran instanciados con su tarea
especifica, pero que pasa con las variables declaradas en la funcion?<br />
<b>Son instanciadas en conjunto con la tarea!!</b>,
cada Tarea poseera sus propias posiciones de memoria para sus
variables. Esto lo podemos constatar mirando la ubicacion de dichas
variables en el mapa de memoria. En el siguiente ejemplo se crean 2
instancias de la misma funcion, donde cada una recibe un parametro
diferente que las identifica (mas alla del nombre que se le pasa).<br />
<br />
<div class="codeheader">
Código:</div>
<div class="code">
<pre style="display: inline; margin-top: 0;"><span style="background-color: #cccccc;">void main( void )
{
/* Inicializo Hardware. */
vPortInitialiseBlocks();
/* Arranco la tarea */
xTaskCreate( vTarea, ( const portCHAR * const ) "Prueba1", configMINIMAL_STACK_SIZE, &cProcId1, tskIDLE_PRIORITY + 2, NULL );
xTaskCreate( vTarea, ( const portCHAR * const ) "Prueba2", configMINIMAL_STACK_SIZE, &cProcId2, tskIDLE_PRIORITY + 2, NULL );
/* Arranco el scheduler. */
vTaskStartScheduler();
}</span></pre>
</div>
<br />
Luego cada instancia chequea ese parametro para saber cual de las dos instancias se esta ejecutando en dicho momento.<br />
<br />
<div class="codeheader">
Código:</div>
<div class="code">
<pre style="display: inline; margin-top: 0;"><span style="background-color: #cccccc;">static void vTarea( void *pvParameters )
{
portCHAR *cProcId,cVariableUnica;
for( ;; )
{
/* Demoro 100 Ticks */
vTaskDelay( 100 );
cProcId = pvParameters;`
if (*cProcId == 1)
{
cVariableUnica = 1;
portNOP();
}
else if (*cProcId == 2)
{
cVariableUnica = 2;
portNOP();
}
else
{
portNOP(); //Caso de error no deberia entrar aca
cVariableUnica = 3;
}
}
}</span></pre>
</div>
<br />
Si
visualizamos el mapa de memoria veremos que cuando se ejecuta cada una
de las tareas se muestra para la misma variable una direccion diferente
de memoria.<br />
<br />
<img alt="" border="0" src="http://img81.imageshack.us/img81/7906/vunicado9.png" /><img alt="" border="0" src="http://img87.imageshack.us/img87/2690/vunica2on1.png" /><br />
<br />
<h2>
6.-Uso de las prioridades</h2>
Ahora que ya podemos crear tareas debemos pensar en como utilizar eficiente y responsablemente el tiempo del micro. Eficientemente
porque obviamente hay tareas que no requieren mucho tiempo de
procesador ni tanta prioridad para completarla y responsablemente ya que
configurando prioridades mal en conjunto con una mala programacion
pueden producir estragos en el funcionamiento del sistema.<br />
<br />
<b>A continuacion pondre una serie de ejemplos:</b><br />
Tenemos 3 tareas:<br />
<ul style="margin-bottom: 0; margin-top: 0;">
<li>1.Atender pedidos por usart.</li>
<li>2.Atender teclado</li>
<li>3.Realizar una tarea de procesamiento <i>ininterrumpida</i> muy larga.</li>
</ul>
<br />
<b>EJ 1:</b><br />
Evidentemente en este sistema tendremos prioridades, y para el caso usaremos 3.<br />
1.Los pedidos de usart deberian tener la MAXIMA prioridad, ya que deben atenderse inmediatamente despues de recibirse.<br />
En el instante posterior de haber concluido dicha tarea, se vuelve a dormir y otras tareas de menor prioridad pueden ejecutarse.<br />
2.Atender
el teclado tambien es un evento asincronico, que interrumpe en un
instante y luego se vuelve a dormir. Es menos prioritario que el
anterior.<br />
3.Una tarea de mucho tiempo de procesamiento tendra menor
prioridad ya que pedira cuanto tiempo de micro se tenga, por ende se
hace cuando no hay nada mas que hacer.<br />
<br />
<b>EJ2:</b> Que pasa si la tarea 3 tuviese la maxima prioridad?<br />
Como
es una tarea que nunca se duerme (por ej para relegar procesador o para
esperar un evento), estara siempre activa deseosa por tiempo de
procesador. Si es la tarea de mayor prioridad, las tareas de menor
prioridad <b>NUNCA</b> se ejecutaran, porque compiten contra una tarea mas prioritaria, por ende dichas tareas <b>MUEREN DE INANICION</b>.<br />
<br />
<b>EJ3:</b> Que pasa si las tareas 1 y 2 tuviesen la misma prioridad? (<i>y la 3 fuese de menor prioridad</i>)<br />
En
este caso, y si es que ambas tuviesen que ejecutarse, el RTOS se
encargaria de compartir entre las dos el tiempo de micro por el
mecanismo de <a href="http://es.wikipedia.org/wiki/Planificaci%C3%B3n_Round-robin" target="_blank">Round Robin</a>.<br />
Este mecanismo simplemente cicla entre las tareas de igual prioridad.<br />
<br />
<b>EJ4:</b> Y si las tareas 1 y 2 son las mas prioritarias y nunca relegan el micro para la tarea 3?<br />
Entonces tendria que existir un mecanismo de incremento de la prioridad de la tarea 3 para evitar su muerte por inanicion.<br />
La
encargada de dicha funcion seria una tarea de la mas alta prioridad que
chequea cada un periodo de tiempo que todas las tareas tengan
oportunidad de ejecutar y para las que no lo logran se les aumenta la
prioridad.<br />
Una vez que se logra inmediatamente se le retorna su prioridad nominal.<br />
<br />
<h2>
7.-Control sobre la tarea </h2>
El sistema operativo FREERTOS da una serie de APIs orientadas al control
optimo de la tarea en curso, osea que generen un cambio en las
condiciones del mismo sin necesidad de otras fuentes externas
(semaforos, colas, mutex, etc).<br />
Ellas son:<br />
<ul style="margin-bottom: 0; margin-top: 0;">
<li>vTaskDelay:<br />Genera
una demora en la ejecucion de la proxima tarea medida en ticks de
sistema(dicha demora NO es a base de consumo de ciclos de reloj) .</li>
<li>vTaskDelayUntil:<br />Genera una demora hasta un instante de tiempo especifico, ideal para poder realizar periodos ciclicos con una frecuencia fija.<br />Se basa en el uso del reloj del sistema.</li>
<li>uxTaskPriorityGet:<br />Recupera la prioridad de una tarea entregandosele la informacion de su handler.</li>
<li>vTaskPrioritySet:<br />Altera la prioridad de una tarea entregandosele la informacion de su handler.</li>
<li>vTaskSuspend:<br />Suspende la ejecucion de una tarea, no importa la prioridad que ella tenga.</li>
<li>vTaskResume:<br />Continua la ejecucion de una tarea suspendida.</li>
<li>vTaskResumeFromISR:<br />Idem anterior pero adaptada para poder ser llamada desde interrupciones.</li>
</ul>
<br />
<h2>
8.-Control sobre el Kernel </h2>
Control sobre el Kernel:<br />
De la misma manera que con las tareas, el RTOS provee herramientas para el control del funcionamiento del sistema operativo.<br />
En su mayoria son funciones que proveen soporte y proteccion a dilemas de programacion como son las <a href="http://es.wikipedia.org/wiki/Secci%C3%B3n_cr%C3%ADtica" target="_blank">secciones criticas</a>
con recursos compartidos entre las tareas y el kernel (secciones
criticas a nivel kernel) y las secciones criticas a nivel de aplicacion,
para ello estan las siguientes APIs y los <a href="http://metodos%20de%20sincronizacion%20entre%20tareas/" target="_blank">metodos de sincronizacion entre tareas</a>.<br />
<br />
<ul style="margin-bottom: 0; margin-top: 0;">
<li><b>vTaskStartScheduler:</b>Comienza el funcionamiento del sistema operativo.</li>
<li><b>vTaskEndScheduler:</b>Termina
el funcionamiento del sistema operativo, el codigo siguiente a ejecutar
es el que se encuentra despues de la llamada a vTaskStartScheduler.<br />Es
muy util cuando se desea hacer uso del procesador para una tarea
dedicada como actualizacion del firmware, etc. Luego puede llamarse
nuevamente a vTaskStartScheduler para continuar con el funcionamiento
del RTOS. </li>
<li><b>taskDISABLE_INTERRUPTS:</b> Deshabilita TODA fuente de interrupcion y con ello el analisis de cualquier fuente de la misma.<br />Se utiliza para los casos mas estrictos de <a href="http://en.wikipedia.org/wiki/Critical_section" target="_blank">SECCION CRITICA</a> donde NADA puede interrumpir a las intrucciones posteriores.<br />Se usa en conjunto con taskENABLE_INTERRUPTS para delimitar la zona critica.<br />Su
uso mas habitual es cuando el procesador debe estar totalmente devoto a
una tarea critica en tiempos mas que por uso de recursos compartidos
(aunque puede tambien serlo).</li>
<li><b>taskENABLE_INTERRUPTS:</b>Rehabilita TODAS las fuentes de interrupcion.</li>
<li><b>taskENTER_CRITICAL:</b> Deshabilita la fuente de interrupcion ligada al Tick del sistema y acceso al algoritmo preventivo.<br />Este
es otro tipo de seccion critica de kernel donde se protege los recursos
(puede ser solamente datos) compartidos entre las tareas o Kernel y las
interrupciones al tick de sistema y al algoritmo preventivo.<br />Otras fuentes de interrupcion siguen siendo funcionales (USART, SPI, INTs, etc)</li>
<li><b>taskEXIT_CRITICAL:</b> Rehabilita las fuentes de interrupcion provenientes del tick del RTOS.</li>
<li><b>vTaskSuspendAll:</b> Se da comienzo a una seccion critica de sistema operativo a nivel de aplicacion.<br />Se
atienden todos los tipos de interrupciones (se cuentan los ticks por
ejemplo) pero no se generan cambios de contexto de tareas.<br />Esto es
para evitar secciones criticas entre dos tareas que acceden a un mismo
recurso y por ser de corto plazo no es necesario utilizar mecanismos de
sincronizacion y exclusion mutua.</li>
<li><b>xTaskResumeAll:</b> Se rehabilita el modo preventivo de las tareas.</li>
<li><b>taskYIELD:</b> Fuerza al sistema operativo a realizar un cambio de contexto.<br />Esta pensado especificamente para el modo de trabajo cooperativo pero funciona bajo modo preventivo igualmente.<br />Cuanto mas se la llame en una tarea mas granularidad se tendra pero se generara mas overhead por uso del sistema operativo.</li>
</ul>
<br />
<h2>
9.-Semaforos </h2>
Los semaforos son la herramienta que posee el Sistema Operativo en tiempo real para realizar coordinacion entre tareas.<br />
Dos de los usos habituales de los semaforos son:<br />
<ul style="margin-bottom: 0; margin-top: 0;">
<li><b>1.Sincronizacion para la toma de un recurso comun:</b> Este no es mas que otro modo de resolver secciones criticas como se explica en <a href="http://www.sistemasembebidos.com.ar/forum/index.php?topic=251.msg1088#msg1088" target="_blank">el post de control sobre el kernel</a><br />Lo
que se busca es utilizar un semaforo como "llave" para el uso de un
recurso compartido. Si dicha llave esta en uso no se puede acceder a
dicho recurso, o se espera por ella o se indica el error pero no se
utiliza el recurso de manera que se protege el mismo de un uso
incorrecto.</li>
<li><b>2.Sincronizacion para la atencion de eventos asincronicos:</b> En este caso se utiliza al semaforo como indicador de evento y disparo de actividades.<br />Es un caso simple del uso de colas, donde en este caso no se posee mensaje a enviar.<br />Una tarea es la generadora de eventos (en FREERTOS la que hace <b>Give</b>) y la otra tarea que espera dicho evento (en FREERTOS la que hace <b>Take</b>).</li>
</ul>
<br />
Se
puede computar cual sera el intervalo de tiempo que se espera por el
semaforo, si no se tiene exito en tomarlo se retorna luego de dicho
tiempo y se indica con error. Si se logro capturar se despierta a la
tarea que llamo a xSemaphoreGive() y se indica exito.<br />
<br />
<b>Semaforos binarios</b><br />
<img alt="" border="0" src="http://img228.imageshack.us/img228/9917/binarysemaphorelb3.gif" /><br />
<br />
<b>Mutexes</b><br />
<img alt="" border="0" src="http://img75.imageshack.us/img75/7631/mutexesqz2.gif" /><br />
<br />
<b>Las funciones para semaforos son:</b><br />
<ul style="margin-bottom: 0; margin-top: 0;">
<li>1.De creacion<br /><b>vSemaphoreCreateBinary</b>( xSemaphoreHandle xSemaphore ) <br />Crea un semaforo BINARIO si es que xSemaphore no retorna NULL.<br /><br />xSemaphoreHandle <b>xSemaphoreCreateCounting</b>( unsigned portBASE_TYPE uxMaxCount, unsigned portBASE_TYPE uxInitialCount )<br />Igual
al anterior, crea un semaforo pero con capacidad de conteo, delimitado
por uxMaxCount que es la cantidad maxima posible a contar y
uxInitialCount que es el valor inicial de conteo.<br />Tambien se puede usar como <span style="text-decoration: underline;">1.contador de eventos</span> o <span style="text-decoration: underline;">2.Administracion de recursos</span>.<br /><br />xSemaphoreHandle <b>xSemaphoreCreateMutex</b>( void )<br />Crea
un semaforo de caracteristicas binarias pero con capacidad de exclusion
mutua, que significa que posee manejo de prioridades.<br />En un caso de competencia, gana el mutex la tarea que tenga mayor prioridad.<br /><br />xSemaphoreHandle <b>xSemaphoreCreateRecursiveMutex</b>( void )<br />Crea un Mutex recursivo.</li>
<li>2.De toma de recurso o espera de evento<br /><b>xSemaphoreTake</b>( xSemaphoreHandle xSemaphore, portTickType xBlockTime )<br />Cuando
se llama a esta funcion, la tarea esperara "xBlockTime" de tiempo por
el semaforo "xSemaphore", luego de ese tiempo si no se libero (o genero
evento) se reanuda la ejecucion de la tarea y se informa error.<br />Si se libero se captura el semaforo para asegurar que nadie utilizara dicho semaforo.<br /><br /><b>xSemaphoreTakeRecursive</b>( xSemaphoreHandle xMutex, portTickType xBlockTime )<br />Toma de manera recursiva un semaforo para asegurarselo tantas veces como se llamo a la funcion.</li>
<li>3.De entrega de recurso o generacion de evento<br /><b>xSemaphoreGive</b>( xSemaphoreHandle xSemaphore )<br />En
este caso se libera al semaforo para que otras tareas puedan usar el
recurso asociado con la misma o se genera un evento para despertar a la
tarea que espera por dicho semaforo.<br /><br /><b>xSemaphoreGiveRecursive</b>( xSemaphoreHandle xMutex )<br />Se devuelve dicho semaforo de manera recursiva.<br />Para
que otra tarea lo pueda usar, la tarea que tiene capturado dicho
semaforo debe llamar a esta funcion tantas veces como antes llamo a
xSemaphoreTakeRecursive.<br /><br /><b>xSemaphoreGiveFromISR</b>( xSemaphoreHandle xSemaphore, portBASE_TYPE *pxHigherPriorityTaskWoken )<br />Igual que xSemaphoreGive, pero con contemplaciones especiales para su uso desde interrupciones.</li>
</ul>
<br />
En
"ejemplo_semaforos_evento.ZIP" se utiliza un semaforo binario como
generador de evento, recuerden posicionarlo dentro de la carpeta
"Projects" para que compile y corrijan los path a la carpeta de su
compilador C18.<br />
<br />
En "ejemplo_semaforos_recurso.ZIP" se utiliza semaforo binario como "llave" al recurso "puerto C" del microcontrolador.<br />
Una
tarea quiere escribir hacia el puerto y la otra quiere leer de su
entrada, para ello uno requiere configurarlo en salida y escribir y el
otro configurarlo en entrada y leer.<br />
Con el uso de un semaforo
arbitramos su uso de manera correcta sin que se mezclen pasos de ambas
tareas por culpa del context switch del RTOS.<br />
<br />
<h2>
10.-Colas </h2>
<i>Trabajo en proceso</i><br />
El uso de colas (queue) es el metodo estandar de comunicacion entre procesos o tareas.<br />
Una
cola es una estructura de datos, caracterizada por ser una secuencia de
elementos en la que la operación de inserción "push" se realiza por un
extremo y la operación de extracción "pop" por el otro. También se le
llama estructura FIFO (del inglés First In First Out), debido a que el
primer elemento en entrar será también el primero en salir (segun
Wikipedia).<br />
<br />
En sistemas operativos, cuando una tarea desea enviar
un mensaje a otra, "empuja" el mensaje a dicha cola (si es que hay
lugar en la misma, sino debera esperar o informar error) por un extremo.<br />
Del
otro lado habra una tarea a la espera de mensajes y cuando uno llega se
despertara para analizarlos realizando una "extraccion" por el otro
extremo de la cola.<br />
<br />
<img alt="" border="0" src="http://img179.imageshack.us/img179/8913/queueanimationge1.gif" /><br />
<br />
En FREERTOS el metodo de creacion de una cola y asignacion de un espacio de memoria esta dado por la funcion:<br />
xQueueHandle <b>xQueueCreate</b>( unsigned portBASE_TYPE uxQueueLength, unsigned portBASE_TYPE uxItemSize );<br />
<br />
Donde <i>xQueueHandle</i> almacena la referencia a la instancia, si retorna NULO o cero es que no pudo crearlo.<br />
<i>uxQueueLength</i> la cantidad de posiciones que tendra la cola y <i>uxItemSize</i> representa cantidad de datos que consumira en bytes cada elemento.<br />
<br />
Para enviar mensajes se dispone de portBASE_TYPE <b>xQueueSend</b>( xQueueHandle xQueue, const void * pvItemToQueue, portTickType xTicksToWait );<br />
<br />
Para recibir mensajes se dispone de portBASE_TYPE <b>xQueueReceive</b>( xQueueHandle xQueue, void *pvBuffer, portTickType xTicksToWait );<br />
<br />
Donde <i>xTicksToWait</i> representa el tiempo que se esperara para posicionar el mensaje en la cola o esperar por un mensaje de la misma.<br />
Si se setea <i>INCLUDE_vTaskSuspend</i> en 1 con el valor <i>portMAX_DELAY</i> se suspende por tiempo indefinido la tarea hasta que se libere espacio en la cola o se reciba un mensaje dependiendo el caso.<br />
<i>xQueue</i> representa la cola por donde se mueven los mensajes y <i>pvItemToQueue</i> el mensaje en si.<br />
<br />
Ambas funciones retornan como resultado el exito (pdPASS) o fracaso (un codigo de error) en la tarea.<br />
<br />
El
ejemplo a continuacion representa a dos tareas que se envian un mensaje
del tipo char que se va incrementado de a uno por exito en cada tarea.<br />
Para
demostrar el correcto uso de colas, si alguna de las dos no envia el
mensaje en contestacion o no lo recibe por error las tareas se duermen.<br />
Como siempre ubiquenlo en la carpeta de proyectos que creamos.Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-63191882723279151662014-04-09T12:29:00.003-07:002014-04-09T12:29:46.097-07:00RTOS pars Raspberry Pi?<span class="" id="result_box" lang="es"><span title="ChibiOS/RT is a portable real-time operating system (RTOS) designed for embedded applications.">ChibiOS / RT es un sistema portátil en tiempo real de funcionamiento ( RTOS ) diseñado para aplicaciones embebidas. </span><span title="Although the Raspberry Pi is typically used with the Linux operating system, it's not necessarily the best choice for applications requiring low latency, predictable response to external events.">Aunque
el Raspberry Pi se suele utilizar con el sistema operativo Linux, que
no es necesariamente la mejor opción para aplicaciones que requieren
baja latencia , la respuesta previsible a los acontecimientos externos. </span><span title="Even if you don't have an application with these requirements ChibiOS/RT can be useful for learning about embedded operating systems and related topics like cross compilation, thread context switching, concurrency control, interrupt processing and device driver development."> </span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_u0G39gWmWbk0lktvhKZQQqulkw0Nper8kkfowR4PsaGBc0XDCrMHIB_Gyj_55O-MqMOzphg-xXXlMs-28HZIWxqiG2Jlfh-Di3hNnafkiddY9JjKtCqQ35zrXwA7EtPWO7TN-_ApiRXO/s1600/rtos_raspberry.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_u0G39gWmWbk0lktvhKZQQqulkw0Nper8kkfowR4PsaGBc0XDCrMHIB_Gyj_55O-MqMOzphg-xXXlMs-28HZIWxqiG2Jlfh-Di3hNnafkiddY9JjKtCqQ35zrXwA7EtPWO7TN-_ApiRXO/s1600/rtos_raspberry.JPG" height="320" width="253" /></a></div>
<br />
<span class="" id="result_box" lang="es"><span title="Even if you don't have an application with these requirements ChibiOS/RT can be useful for learning about embedded operating systems and related topics like cross compilation, thread context switching, concurrency control, interrupt processing and device driver development.">Incluso
si usted no tiene una aplicación con estos requisitos ChibiOS / RT
puede ser útil para aprender sobre los sistemas operativos integrados y
temas relacionados, como la compilación cruzada , hilo de cambio de
contexto, control de concurrencia , el tratamiento de alarmas y el
desarrollo de controladores de dispositivo. </span><span title="The code base is much smaller than Linux and therefore much more approachable and easy to understand.">El código base es mucho más pequeña que la de Linux y por lo tanto mucho más accesible y fácil de entender . </span><span title="Another benefit is that the operating system and it's applications can be run on other hardware, like the Arduino, that don't support Linux.
"> </span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://i.stack.imgur.com/Nxe2v.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://i.stack.imgur.com/Nxe2v.jpg" height="190" width="400" /></a></div>
<br />
<span class="" id="result_box" lang="es"><span title="Another benefit is that the operating system and it's applications can be run on other hardware, like the Arduino, that don't support Linux.
"> Otra ventaja es que el sistema operativo y de las aplicaciones se
pueden ejecutar en otros equipos, como el Arduino, que no son
compatibles con Linux.</span></span><br /><span class="" id="result_box" lang="es"><span title="Another benefit is that the operating system and it's applications can be run on other hardware, like the Arduino, that don't support Linux.
"></span></span><span class="" id="result_box" lang="es"><span title="Another benefit is that the operating system and it's applications can be run on other hardware, like the Arduino, that don't support Linux.
"></span></span><br /><span class="" id="result_box" lang="es"><span title="Another benefit is that the operating system and it's applications can be run on other hardware, like the Arduino, that don't support Linux.
"></span></span><span class="" id="result_box" lang="es"><span title="Here's a short list of ChibiOS/RT features (from the web site):
">He aquí una breve lista de características ChibiOS / RT ( desde el sitio web ) :<br /></span></span><br />
<ul>
<li><span class="" id="result_box" lang="es"><span title="Here's a short list of ChibiOS/RT features (from the web site):
"> </span><span title="Efficient and portable preemptive kernel.
">Kernel preventivo eficiente y portátil.</span></span></li>
<li><span class="" id="result_box" lang="es"><span title="Efficient and portable preemptive kernel.
"> </span><span title="Best in class context switch performance.
">El mejor rendimiento cambio de contexto de clase.</span></span></li>
<li><span class="" id="result_box" lang="es"><span title="Best in class context switch performance.
"> </span><span title="Many supported architectures and platforms.
">Muchas arquitecturas y plataformas soportadas .</span></span></li>
<li><span class="" id="result_box" lang="es"><span title="Many supported architectures and platforms.
"> </span><span title="Static architecture, everything is statically allocated at compile time.
">Arquitectura estática , todo se asigna estáticamente en tiempo de compilación .</span></span></li>
<li><span class="" id="result_box" lang="es"><span title="Static architecture, everything is statically allocated at compile time.
"> </span><span title="Dynamic extensions, dynamic objects are supported by an optional layer built on top of the static core.
">Extensiones dinámicas , los objetos dinámicos son apoyados por una
capa opcional incorporado en la parte superior del núcleo estático.</span></span></li>
<li><span class="" id="result_box" lang="es"><span title="Dynamic extensions, dynamic objects are supported by an optional layer built on top of the static core.
"> </span><span title="Rich set of primitives: threads, virtual timers, semaphores, mutexes, condition variables, messages, mailboxes, event flags, queues.
">Rico conjunto de primitivas : hilos , temporizadores virtuales ,
semáforos , exclusiones mutuas , variables de condición , mensajes,
buzones de correo, banderas de eventos, colas.</span></span></li>
<li><span class="" id="result_box" lang="es"><span title="Rich set of primitives: threads, virtual timers, semaphores, mutexes, condition variables, messages, mailboxes, event flags, queues.
"> </span><span title="Support for priority inheritance algorithm on mutexes.
">Soporte para el algoritmo herencia de prioridad en las exclusiones mutuas .</span></span></li>
<li><span class="" id="result_box" lang="es"><span title="Support for priority inheritance algorithm on mutexes.
"> </span><span title="Hardware Abstraction Layer (HAL) component supporting a variety of abstract device drivers: Port, Serial, ADC, CAN, EXT, GPT, I2C, ICU, MAC, MMC, PWM, RTC, SDC, SPI, UART, USB, USB-CDC">Hardware
Abstraction Layer (HAL ) Componente de apoyo a una variedad de
controladores de dispositivos abstractos : Port , Serial , ADC , CAN ,
EXT , GPT, I2C, UCI , MAC , MMC , PWM , RTC, COSUDE , SPI , UART , USB ,
USB- CDC </span><span title=".
">.</span></span></li>
<li><span class="" id="result_box" lang="es"><span title=".
"> </span><span title="Support for external components uIP, lwIP, FatFs.
">El apoyo a los componentes externos UIP , lwIP , FATFS .</span></span></li>
<li><span class="" id="result_box" lang="es"><span title="Support for external components uIP, lwIP, FatFs.
"> </span><span title="Extensive test suite with benchmarks.
">Banco de pruebas extensas con los puntos de referencia .</span></span></li>
<li><span class="" id="result_box" lang="es"><span title="Extensive test suite with benchmarks.
"> </span><span title="Support for C++ applications.
">Soporte para aplicaciones C + + .</span></span></li>
</ul>
<span class="" id="result_box" lang="es"><span title="Support for C++ applications.
"></span><span title="To avoid any misunderstanding, please be aware that I didn't develop ChibiOS/RT."><br /></span><span title="The case is also an Adafruit product."></span></span>Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-819945420398638522014-04-08T11:46:00.002-07:002014-04-08T11:48:56.240-07:00Sistemas Operativos Vs Programación PFI. Un tutorial para iniciarte en el mundo de OS para micros.<div style="text-align: justify;">
A continuación presento un resumen de un material o tutorial de un curso de RTOS para FreeRtos que considero excelente y mejora sustancialmente a muchos tutoriales en la red si con algunas observaciones en cuanto a gráficos. (Ing. Reinier Torres Labrada)<br />
<br />
FreeRTOS tiene características comunes con el resto de sus parientes, y algunas propias, que poco a poco iremos viendo y analizando cada vez con mayor nivel de detalle, hasta lograr dominar cadauna de sus poderosas características.</div>
<br />
<b>Características Generales:</b><br />
<div style="text-align: justify;">
Núcleo de tiempo real minimalista, de código abierto,de libre distribución y que puede ser utilizado en aplicaciones comerciales sin que el desarrollador requiera una licencia por su utilización.</div>
<div style="text-align: justify;">
FreeRTOS está protegido por la licencia GPL, e incluye una excepción para permitir su uso en aplicaciones comerciales sin la obligatoriedad de que el código escrito para aplicación tenga que ser liberado bajo GPL</div>
<div style="text-align: justify;">
Amplia disponibilidad de puertos para diferentes arquitecturas de procesadores y herramientas de desarrollo. Con cada distribución se incluye un conjunto de aplicaciones demostrativas para ayudar al principiante a introducirse en el uso del núcleo. Soporte gratuito a través de una amplia y activa comunidad de usuarios. Adicionalmente existe soporte comercial que incluye asistencia en la asimilación y desarrollo de aplicaciones.</div>
<br />
<b>Características Técnicas:</b><br />
Núcleo configurabe en tres modalidades:<br />
<i>De tiempo compartido:<br />El núcleo siempre otorgará el procesador a la tarea de mayor prioridad que esté lista para ser ejecutada. Si varias tareas están listas para ejecutarse y comparten el mismo nivel de prioridad; se aplica la técnica Round-Robin para determinar cuál de las disponibles obtendrá el procesador por el próximo período de ejecución. Es el modo<br />de trabajo por defecto.</i><br />
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.ucontrol.com.ar/wp-content/uploads/2013/08/type_rtos.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www.ucontrol.com.ar/wp-content/uploads/2013/08/type_rtos.jpg" height="241" width="400" /></a></div>
<i>De tiempo cooperativo:<br />Es responsabilidad de las tareas entregar el procesador para que el planificador la entregue a la tarea de mayor prioridad que esté lista para ser ejecutada. Las interrupciones no pueden provocar un cambio de contexto.<br /> </i><br />
<i>Híbrido:<br />Las interrupciones pueden provocar el cambio de contexto hacia una tarea, pero el cambio de contexto entre tareas se realiza mediante la técnica de tiempo cooperativo</i><br />
<ul>
<li>Diseño minimalista que necesita muy pocos recursos para su implementación. Dependiendo de la arquitectura del procesador se puede acomodar una implementación mínima en el espacio de memoria requerido para 2000 instrucciones.</li>
<li>Diseño modular, personalizable y fácil de utilizar.</li>
<li>La mayor parte del código está escrito en C estándar. Habitualmente existe una parte implementada en ensamblador, dedicada a las funcionalidades específicas de cada arquitectura del procesador.</li>
<li>Funcionalidades para el seguimiento de tareas y estadísticas de desempeño.</li>
<li>Soporte de tareas y co-rutinas.</li>
<li>Detección de desbordamiento de pila.</li>
<li>Sin restricciones en el número de tareas.</li>
<li>Sin restricciones en el número de prioridades.</li>
<li>Sin restricciones en la asignación de prioridades, tareas distintas pueden compartir el mismo nivel de prioridad con planificación Round-Robin.</li>
<li>API del núcleo que incluye el manejo de: Colas, Semáforos binarios de conteo y recursivos de Exclusión mutua.</li>
<li>Herramientas de desarrollo amparadas por software libre.</li>
<li>Código fuente amparado por licencia de software libre.</li>
<li>Libre de cargos comerciales, aún cuando se utilice en aplicaciones comerciales.</li>
<li>Aplicaciones de ejemplo disponibles para todas las arquitecturas soportadas y respaldadas en tarjetas comerciales, principalmente de bajo costo.</li>
</ul>
</div>
<div style="text-align: justify;">
<b>¿Por qué es una buena opción?</b><br />
<ul>
<li>Es una única solución que cubre diferentes arquitecturas.</li>
<li>Es reconocido por su buen desempeño.</li>
<li>Soportado por una comunidad muy activa y creciente.</li>
<li>Demanda pocos recursos de memoria RAM y ROM.</li>
<li>El kernel está contenido en sólo tres ficheros de C.</li>
<li>Usted tiene acceso al código fuente y pude modificarlo y adaptarlo a sus necesidades si así lo requiere.</li>
</ul>
<b>¿Y cómo trabaja?</b><br />
<br />
La misión de un sistema operativo es proveer a desarrolladores y usuarios de funcionalidades para el uso eficiente de los recursos del sistema de cómputo.<br />
<br />
<br />
Programar bajo este nuevo paradigma incluye un mecanismo estructural de diseño escalable, ventaja para sistema de desarrollo con integración futura.<br />
<br />
Es conocido que el recurso más preciado de un sistema con microprocesador es el procesador, los microcontroladores no escapan a esta realidad. Para complicar más las cosas, el procesador consume tiempo para ejecutar código así que en la mayoría de los casos hacer las cosas a tiempo constituye el principal cuello de botella durante el diseño de sistemas empotrados.<br />
<br />
Además de ayudarnos a gestionar eficientemente el procesador; FreeRTOS es una poderosa herramienta para enfrentar el problema de la complejidad de las aplicaciones, el acceso a los periféricos del microcontrolador, liberar y reservar memoria en función de la carga del sistema. Para ello disponede tres elementos esenciales comunes a cualquier sistema operativo.<br />
<ul>
<li>Planificador de tareas (Scheduller)</li>
<li>Interfaz de Aplicación para el Programador (API)</li>
<li>Manipuladores de dispositivos (Device Drivers)</li>
</ul>
Estas tres funcionalidades se implementan mediante funciones de librería de C estándar y código específico para cada arquitectura de procesador, de este modo se garantiza la reutilización del código del núcleo y el aprovechamiento de cualquier arquitectura que cuente con los recursos necesarios para soportar al sistema operativo.<br />
<br />
<b>Scheduller</b><br />
Es el encargado de asignar el procesador a quién en ese momento le corresponda utilizarlo, para ello FreeRTOS tiene implementada una de las más conocidas políticas de asignación de recursos que se concen en el mundo de los sistemas operativos. Más adelante entraremos en detalles acerca de cómo funciona el scheduller de FreeRTOS. <br />
<br />
<b>API</b><br />
FreeRTOS no puede darse el lujo de implementar muchas funcionalidades porque su misión fundamental es ser ligero y rápido, así que lo que más encontraremos acá serán las funcionalidades para sincronización de tareas y alguna que otra función para el trazado y recopilación de estadísticas.<br />
Los sistemas operativos de propósito general acostumbran tener una API grande y compleja, pero en un microcontrolador los recursos son limitados en todo sentido, así que para suerte nuestra tendremos pocas funciones que dominar, y para desgracia, tendremos que aprender a sacarles el máximo.<br />
<br />
<b>OS vs Programacion de funciones o programación standar.</b><br />
Si piensa en el programa mas complejo que allas realizado muy probablemente el programa consta de lo siguiente:<br />
Programa principal. conformado por un lazo infinito en donde conviven funciones o procesos que se activan mediante un swiche lógico. Dicho swiche lógico o If se encuentra consultado el resultados de un macro contador para selección. Como lo anterior, esas funciones o subrutinas poseen llamados de interrupciones compactas de configuración, acción y salida (como para ser claro y juste en temas de prioridades)<br />
<br />
Si nunca ha trabajado con un Sistema Operativo, es muy probable que todos los programas desarrollados por usted trabajen de la misma filosofía, en lo que podríamos llamar modelo de programación principal, las funciones y las Interrupciones; yo les llamo "PFI".Por lo anterior todos los programas bajo este concepto tienen un elementos común que les permite trabajar armónicamente y nada desordenado la memoria de datos y llevar un control de las funciones activar o desactivar.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3j51J1PUaVswlVuxbCWGPefayzuYMKscFtocCAbvcvnwmdtmlID_CnfvSnAppLOdyqYZm1MPaGkokFudAYrtr_rTQBXg-OxSh-x47WjkMr4iDbQlEn25DTRLQD-BtUY8CZiliE5ZlxoFv/s1600/PFI.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3j51J1PUaVswlVuxbCWGPefayzuYMKscFtocCAbvcvnwmdtmlID_CnfvSnAppLOdyqYZm1MPaGkokFudAYrtr_rTQBXg-OxSh-x47WjkMr4iDbQlEn25DTRLQD-BtUY8CZiliE5ZlxoFv/s1600/PFI.JPG" height="266" width="400" /></a></div>
La Figura siguiente se muestra claramente este modelo de desarollo de aplicaciones estandard y ampliamente utilizado en el diseño con Microcontroladores y también en otros ámbitos. A muchos podría parecerle magnífico, y en muchos casos es así, simplemente porque es sencillo, Pseudo-escalable. Veamos, sí aplica una codición habilita una función que modifica la memoria interna o externa del microprocesador lo mismo con las interrupciones.<br />
Si pensamos en realizar un reloj con display de leds. Se propone el uso de un Timer1 en formato Interrupción para barrido de leds con salida correspondiente de lectura de memoria y puerto; esto con el fin<br />
de hacer independiente la salida visual vs el programa principal en donde se calcula problemas de tiempos e incrementos con funciones (de baja prioridad). Una vez finalizada la condición se devuelve al programa principal y en espera de algún cambio de los macrocontadores que activen dichas condiciones.</div>
<div style="text-align: justify;">
En este caso el programa principal decide, mediante encuesta que función se ejecutará, pero una vez que la función está ejecutándose el programa debe esperar pacientemente a que termine, antes de seguir encuestando las condiciones para evaluar si otras funciones deben ser llamadas o no. El único caso en que una función llamada o el programa principal pueden ser interrumpidos es cuando se produce una interrupción. <br />
<br />
Este modelo, sin embargo, tiene una desventaja intrínseca que se manifiesta más en la medida que aumenta la cantidad de “cosas” que el sistema debe hacer. Si además, esas “cosas” tienen que hacerse respetando restricciones de tiempo en la ejecución misma del código de la “cosa” o en el tiempo en que la “cosa” debe ejecutarse, estaremos ante un problema al estilo Nudo Gordiano. <br />
<br />
Ahora imagine que cada “cosa” de este programa que estamos analizando fuese la única por hacer, evidentemente el programa sería muy simple. Ese es precisamente el concepto tras un sistema operativo, hacerle creer al sistema que tiene una única tarea que hacer en cada momento, pero hacerlo de forma tal que no se note que estamos conmutando entre las distintas “cosas”. Por lo tanto llamaremos tarea<br />
a eso indefinido que he llamado “cosa”.<br />
<br />
Este cambio de concepto nos permite implementar las funcionalidades como si fuesen la única actividad a la que estará dedicado el procesador del microcontrolador, es algo así como que cada tarea es un programa principal de allí sale el concepto de programación pseudo paralelo. Sin embargo, sabemos que eso no puede ser, puesto que una aplicación cualquiera debe hacer varias tareas diferentes, incluso relacionadas entre ellas y cada una debe pasar por un tiempo en el microcontrolador. Entonces ¿si cada tarea es como un programa principal? ¿cómo se ejecutarán todas? ¿y cuando? ¿y si están relacionadas entre sí?.<br />
<br />
Las respuestas a estas y otras preguntas irán llegando poco a poco en la medida que descubrimos un nuevo modelo de programación.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJx1iIG3q7YY8j2TdNiVebJ0a_ZKoXd20nIBLtwL87xphlMKRl66mn6I8xJrTsE1amSawxQcc1N4HJj3kvak_oQPxjQY9frka46CCGoQEs2PWrmRfLzsSSaq6jBbwqve81NCeqsw1x1AhY/s1600/PFI_os.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJx1iIG3q7YY8j2TdNiVebJ0a_ZKoXd20nIBLtwL87xphlMKRl66mn6I8xJrTsE1amSawxQcc1N4HJj3kvak_oQPxjQY9frka46CCGoQEs2PWrmRfLzsSSaq6jBbwqve81NCeqsw1x1AhY/s1600/PFI_os.JPG" height="203" width="400" /></a></div>
<br />
Ahora veamos la figura superior. Note como ha desaparecido el programa principal, sin embargo sí que se mantienen las Interrupciones, pero hay dos nuevos elementos, las tareas y el núcleo del sistema operativo. Las interrupciones forma parte de un proceso casi a la par de las Tareas.<br />
Observe que el sistema operativo es el encargado de decidir que tarea se ejecuta. Note además, que las tareas intercambian información entre ellas a través de la memoria y del núcleo del sistema operativo. Asimismo, observe que existen algunas tares desactuvadas mientras hay tareas en ejecución. Y todo absolutamente gobernado por el Sistema Operativo.<br />
<br />
<br />
En este caso pueden estar en ejecución una tarea, el programa principal o un ISR. Sin embargo, usted no programa nada en el núcleo del sistema operativo, sino que se concentra en hacer bien el código de las tareas. El núcleo se encargará de decidir que tarea obtendrá el procesador y además de eso, como veremos más adelante, el núcleo puede “interrumpir” a una tarea que se esté ejecutando. Como en el caso anterior las interrupciones pueden entrar en contexto cuando el núcleo o una tarea están ejecutando código.<br />
<br />
<br />
Una vez mostrado las diferencias en programación sobre estas dos filosofía de programación lo invito adentarnos un poco mas sobre los conceptos de OS y su empleo en los sistemas embebidos.<br />
<br />
<b>Conceptos de Sistemas Operativos</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8M82aEwvmDneyJQjkiAfLVrFljqMN2QMJxw73J3h93g5DgUMZ1m1ausvwLYoJolVgut8iMGo7Mfzkj6aFOu3jype9EzXz1FvPyYVuoblslJj7rzaLH8UjygefEz7tjipgxzpNgAFYZMDh/s1600/tarea.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmgiKxu75cY6pZ3YpdakT1MDLd773ztJhvjEOZQNvy-9h01OQsn6-Bp5PyVU3idZqrW3Avnb4B78U7IVCMzj4bq9rnHhwa7u9Mb1ZsEGAVO77GjtltlGE15B8AoUywOvxIVU92mdN8U1zV/s1600/tarea.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmgiKxu75cY6pZ3YpdakT1MDLd773ztJhvjEOZQNvy-9h01OQsn6-Bp5PyVU3idZqrW3Avnb4B78U7IVCMzj4bq9rnHhwa7u9Mb1ZsEGAVO77GjtltlGE15B8AoUywOvxIVU92mdN8U1zV/s1600/tarea.JPG" /></a></div>
<b>Tareas</b><br />
Entidad que encapsula en sí misma código y memoria de datos y que actúa como si fuese el única programa en ejecución en un sistema de cómputo. Note el esquema de una Tarea en la figura derecha, existe en el espacio de datos un elemento muy especial el TCB.<br />
El TCB (Bloque de Control de Tarea) es el espacio de memoria donde el núcleo del sistema Operativo y la tarea del mismo almacenan parte de la información que permitirá, entre otras cosas, decidir si la tarea puede o no ejecutarse. Recordemos que las tareas actúan como si ellas fuesen el único programa en el sistema. Esto es cierto si la tarea está en ejecución, pero si no es así, es como si la tarea estuviese “suspendida” o “congelada”. De modo que la mayor parte del tiempo nuestro sistema de cómputo debe tener una tarea en ejecución y seguramente otras tantas “suspendidas” o “congeladas” y es por ello que sus espacios de memoria de datos deben estar protegidos de posibles ataques externos, por eso un bloque protector verde en la memoria. Poniendo todo junto y suponiendo que tenemos un sistema con un procesador; podríamos ver un escenario como el de la Figura siguiente. Observe como en un sistema con un único procesador solamente una tarea puede estar ajecutando su código y accediendo a su memoria, el resto está en estado de “no ejecución” o “ejecución suspendida”.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjybYYR71jpAldKalrMHMJUvhpoqHQ9LUhCr_9kblgWxz45D_8lLzemo1mhA8VCPPgeJvJOmUlfIyu6-XlvZfJ2ibncQpYMZCIyGx7xYIcTqnfJNGaCplF96w-hQ5ZMz8qSXS7tw9wdLcUE/s1600/tareas_eje_noeje.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjybYYR71jpAldKalrMHMJUvhpoqHQ9LUhCr_9kblgWxz45D_8lLzemo1mhA8VCPPgeJvJOmUlfIyu6-XlvZfJ2ibncQpYMZCIyGx7xYIcTqnfJNGaCplF96w-hQ5ZMz8qSXS7tw9wdLcUE/s1600/tareas_eje_noeje.JPG" /> </a></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOlBJYRp52Od6EFyOAD9Nf7x5bljqB4LlzJtBXhpeepVT1_yLo_7lfTETKxNl6pkH_b-IKf4x1Sv7bqdvxAIkmFZLFJJLiP3UKoHq_8YxUFbU1cGC7FmXdKDehyVRHb71ATZUVmDBGtUwT/s400/rtos.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOlBJYRp52Od6EFyOAD9Nf7x5bljqB4LlzJtBXhpeepVT1_yLo_7lfTETKxNl6pkH_b-IKf4x1Sv7bqdvxAIkmFZLFJJLiP3UKoHq_8YxUFbU1cGC7FmXdKDehyVRHb71ATZUVmDBGtUwT/s400/rtos.PNG" height="233" width="320" /></a><b>Ejecución Suspendida</b></div>
<br />
Se define ejecución suspendida como un “super-estado” no nos sirve de mucho puesto que una tarea puede estar aquí por diferentes razones, veamos algunas:<br />
<ul>
<li>Porque aún estando lista para ejecutar código, una tarea más importante está ejecutando su código.</li>
<li>Porque la tarea misma necesita esperar por un evento.</li>
<li>Porque la tarea terminó de ejecutar su código y no necesita volver a ejecutarlo hasta pasado un tiempo.</li>
<li>Porque la tarea ha intentado acceder a un recurso compartido y este está ocupado.</li>
</ul>
<div class="separator" style="clear: both; text-align: justify;">
Pero en resumen se puede listar las dos razones mas importante:</div>
<ul>
<li>La tarea está lista para ejecutar código pero no puede.</li>
<li>La tarea espera por algo.</li>
</ul>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6d669FYV9lvaVQZ5ra-vrkAJpue7tQgqwtRAbzLXf9od8yZqO-EOYzY9aqJtAp6ciA3b5-6WOmlrhoKgalPLwB0buP_GvjWwusuivKtfSC4cafKTsxzbFXzPwbN1l-P5WHNo_bOQwAkLK/s1600/tarealista_bloqueada.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6d669FYV9lvaVQZ5ra-vrkAJpue7tQgqwtRAbzLXf9od8yZqO-EOYzY9aqJtAp6ciA3b5-6WOmlrhoKgalPLwB0buP_GvjWwusuivKtfSC4cafKTsxzbFXzPwbN1l-P5WHNo_bOQwAkLK/s1600/tarealista_bloqueada.JPG" /></a>El primer caso se conoce como “tarea lista” mientras que el segundo es conocido como “tarea bloqueda” y si añadimos el estado “en ejecución” tenemos los tres estados básicos en que puede estar una tarea.</div>
<br />
Observe que una tarea puede pasar directamente del estado “en ejecución” a los estados “lista” o “bloqueada” y que los cambios de “bloqueada” a “en ejecución” o de “lista” a “bloqueada” estan prohibidos. Respetando estas reglas podemos obtener un modelo de trabajo simple que nos podría permitir gestionar eficazmente el acceso de las tareas al procesador.<br />
<br />
El caso de que una tarea se bloquea a sí misma porque deba esperar por un evento de alguna clase, es muy fácil de comprender. Sin embargo, no queda claro cómo es que una tarea puede pasar del estado “en ejecución” a “lista” ya que si está lista para ejecutar código, no es lógico que la tarea entregue el procesador???<br />
<div class="separator" style="clear: both; text-align: justify;">
Las tareas son egoístas en muchas ocasiones es un simil. Si tienen el procesador y pueden estar ejecutando código, ellas no lo entregarán, es por ello que se requiere la “intervención divina” o "Interrupción divina" para quitarle el procesador al egoismo de la taréa y darlo a otra que lo necesita y que también está lista para tiempo de proceso.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-WX4PFS_jLHs/ULYFp5vE2eI/AAAAAAAAAOY/yh5-_-jfMxQ/s1600/Estados+de+los+Procesos.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://1.bp.blogspot.com/-WX4PFS_jLHs/ULYFp5vE2eI/AAAAAAAAAOY/yh5-_-jfMxQ/s1600/Estados+de+los+Procesos.jpg" height="240" width="320" /></a></div>
<b>Planificador de tareas</b><br />
<br />
Ya hemos visto que si una tarea está en condiciones de ejecutar código no querrá ceder el procesador, por lo que se requiere la intervención de otro agente en este juego que le retire el procesador y se lo pase a otra.<br />
Ese agente es el planificador de tareas (scheduller) y su trabajo consiste en repartir el tiempo de procesamiento del sistema de forma que todos tengan el procesador cuando lo necesiten para hacer bien su trabajo y que nadie se adueñe de él indiscriminadamente.<br />
<br />
Pero si el scheduller es un programa ¿cómo se las arreglará para interrumpir a una tarea que está utilizando al procesador?. <br />
<br />
Esta es una pregunta que usted se hará sin lugar a dudas, y es una de las cosas que siempre veo quedan sin explicar adecuadamente cuando se presenta un sistema operativo. <br />
<br />
El scheduller está compuesto de dos elementos esenciales para su funcionamiento:<br />
<br />
El código que actualiza los TCB de las tareas y que además determina qué tarea entrará en ejecución.<br />
Una Interrupción que permite al scheduller entrar en contexto.<br />
<br />
El segundo punto nos da la clave para comprender el mecanismo que permite al scheduller interrumpir la ejecución de cualquier tarea que se encuentra ejecutando código. Una vez lanzada la interrupción, se transfiere el control del procesador al código principal del scheduller y este después de actualizar los TCB determinará qué tarea debe obtener el procesador.<br />
<br />
Analizando lo anterior nos damos cuenta que el scheduller consume tiempo de procesamiento como cualquier tarea, pero eso no debe preocuparnos demasiado. Si este código está bien diseñado y usted ha escogido el procesador adecuado o lo ha configurado para que corra a la velocidad correcta, su carga sobre el sistema no debe superar el 2 % del tiempo total disponible de procesamiento.<br />
<br />
<b>Métodos de planificación de tareas</b><br />
<br />
Ya sabemos los elementos básicos que le permiten al scheduller entrar en contexto, pero llegado el momento de decidir que tarea obtendrá el procesador es cosa difícil. Por ello han aparecido una buena cantidad de métodos de planificación. Y en muchos casos se combinan varios de ellos para lograr un sistema con ciertas características de desempeño. <br />
<br />
Atendiendo a la forma en que se implementan, estos métodos se pueden clasificar en dos grandes grupos:<br />
<br />
Decisión mediante una política establecida sólo en el código del planificador.<br />
Decisión mediante una política establecida en la implementación de la aplicación.<br />
<br />
Usted puede dejar que el planificador decida por sí solo, hay varios tipos de métodos de decisión en este caso, como por ejemplo:<br />
<ul>
<li>Tiempo menor para completar la ejecución.</li>
<li>Tiempo mayor para completar la ejecución.</li>
<li>Lista circular (Round-Robin).</li>
<li>La que lleva el mayor tiempo sin ejecutar.</li>
</ul>
El problema con todas estas políticas de planificación está en que deja fuera la habilidad del programador para influir en el mecanismo de decisión de cuales tareas son más o menos importantes y eso puede afectar seriamente el desempeño del sistema. Dentro de las políticas de planificación, en la implementación de la aplicación, la asignación de prioridades es, sin lugar a dudas, la más utilizada por ser simple y efectiva. <br />
<br />
FreeRTOS utiliza este método de planificación en el primer nivel de decisión, por lo que el equipo de FreeRTOS cosidera que usted, desarrollador, es el que sabe que debe ir primero o después.<br />
<br />
Si FreeRTOS utilizara únicamente el mecanismo de asignación de prioridades, estaría obligado a tener una sola tarea en cada nivel de prioridades, y por consiguiente, deberíamos asignar una prioridad única a cada tarea. Este método es ampliamente utilizado cuando se puede determinar la prioridad de cada tarea, pero no es práctico en muchos casos, dado que muchas tareas pueden compartir el mismo nivel de prioridad en un sistema. FreeRTOS utiliza una combinación de políticas de planificación, la primera es la asignación de prioridad, y la segunda es el método Round-Robin para las tareas que comparten la misma prioridad.<br />
<br />
Con esta combinación se consigue un adecuado balance entre la experiencia del desarrollador y la repartición justa del procesador entre tareas que tienen el mismo nivel de importancia. Resuelto el problema de repartir el procesador entre tareas que están listas para ejecutarse podríamos preguntarnos <br />
<br />
¿y que pasa cuando una tarea decide que debe esperar por un evento o recurso?.<br />
<br />
En estos casos la tarea hace una llamada explícita al scheduller a través de su API, el scheduller entra en contexto y realiza su trabajo otorgando el procesador a la tarea que le corresponde en ese momento. Un método similar se sigue cuando una Interrupción entra en contexto y gracias a ello una tarea que estaba esperando por el evento vinculado a la Interrupción debe comenzar a ejecutar código. <br />
<br />
Todos estos casos serán expuestos mediante ejemplos prácticos posteriormente.<br />
<br />
<br />
<b>Marcapasos</b><br />
<br />
Como habíamos visto el scheduller debe entrar en contexto, cuando una tarea se ha quedado con el procesador pero este debe ser entregado a otra tarea. Eso está claro, pero: <br />
¿cuando es el momento de hacer que el scheduller entre en su contexto?<br />
<br />
Para lograrlo podríamos pensar en un buen número de métodos, sin embargo, existe uno muy simple y eficaz. Si hacemos que el sistema obligue al scheduller a ejecutar código a intervalos regulares de tiempo, podremos asegurar que nadie se apodere del procesador por tiempo indefinido. Para lograr lo anterior basta con asociar la Interrupción de un temporizador con el mecanismo que asegura la entrada en contexto del scheduller. En el caso de los puertos de FreeRTOS para microcontroladores PIC, lo anterior se logra reservando un temporizador para esta función, de modo que usted obtiene con ello una especie de “marca pasos“ para su sistema y con ello garantiza la entrada del scheduller en contexto cada cierto tiempo.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.freertos.org/implementation/TickISR.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www.freertos.org/implementation/TickISR.gif" height="150" width="400" /></a></div>
Si usted es de los que gusta de utilizar el TIMER1 de sus microcontroladores, puede ir renunciando a esa práctica, ya que en todos los casos este temporizador está dedicado a garantizar el “marca pasos” del sistema.<br />
<br />
Podría parecernos que sacrificar un temporizador para que FreeRTOS pueda hacer su trabajo es demasiado, pero yo puedo asegurarle que es un sacrificio que bien vale la pena y se lo demostraré posteriormente. <br />
<br />
Hago este comentario porque si usted es de los que gusta echar mano al TIMER1 le sugiero replanificar su estrategia de uso de temporizadores.</div>
Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-69944904535951841912014-04-07T08:18:00.002-07:002014-04-07T08:26:44.722-07:00Qué significa sistema operativo a tiempo Real?<div data-angle="0" data-canvas-width="365.7085396141621" data-font-name="g_font_23_0" dir="ltr" style="font-family: sans-serif; font-size: 23.9103px; left: 94.4883px; top: 235.911px; transform-origin: 0% 0% 0px; transform: rotate(0deg) scale(1.24391, 1);">
</div>
<div style="text-align: justify;">
El tiempo real es un término difícil de definir y en el caso de los sistemas operativos no existe concenso respecto de una definición. Sin embargo, existe un criterio bastente generalizado que considera que un sistema operativo es de tiempo real si puede responder adecuadamente a los estímulos a que es sometido.<br />
</div>
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhihyWaTc-HiR6EhdHcE9JiXohIvx9XhxislSoxjqX-pwqL5siQ-iXKwXmNo9lUFrWCJLlfru2E3YJajtzxlDOsTaCquX48cj22Vr3LFRX9Nchc7Hf1lBXIKz1lmRezZcjQlnYSVsCrNeM/s1600/Image8741.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhihyWaTc-HiR6EhdHcE9JiXohIvx9XhxislSoxjqX-pwqL5siQ-iXKwXmNo9lUFrWCJLlfru2E3YJajtzxlDOsTaCquX48cj22Vr3LFRX9Nchc7Hf1lBXIKz1lmRezZcjQlnYSVsCrNeM/s1600/Image8741.gif" height="126" width="320" /></a></div>
<br /></div>
<div style="text-align: justify;">
Aplicando este criterio a cualquier sistema operativo podríamos pensar que tiempo real significa responder a los estímulos lo más rápido posible. Sin embargo, esto no es del todo cierto ya que al poner esta definición en el contexto de algunas aplicaciones comunes podríamos encontrar matices.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.cotsjournalonline.com/img/archive_images/cots0511ha_ads1.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www.cotsjournalonline.com/img/archive_images/cots0511ha_ads1.gif" height="248" width="320" /></a></div>
<br />
Por ejemplo, un procesador que controla el sistema de frenos de un vehículo debe ser capaz de responder al estímulo del conductor o del sistema anticolisión en una ventana de tiempo muy bien definida. Si el sistema falla en su respuesta al estímulo inicial y en completar las acciones requeridas, no será de tiempo real. Además, fallar implica tener como resultado un escenario de catástrofe.<br />
<br />
Como conclusión, este es un sistema de tiempo real estricto, ya que no se permite ni una respuesta tardía ni un completamiento de las acciones derivadas fuera de tiempo.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://images.quebarato.com.ec/T440x/celular+tv+mobile+wifi+vivaz+touch+sistema+operativo+rtos+quito+pichincha+ecuador__610EC5_3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://images.quebarato.com.ec/T440x/celular+tv+mobile+wifi+vivaz+touch+sistema+operativo+rtos+quito+pichincha+ecuador__610EC5_3.jpg" height="196" width="320" /></a></div>
<br />
Por otro lado, tomemos como ejemplo, al procesador de un reproductor personal de MP3. Este también debe ser un sistema de tiempo real, ya que la lectura y decodificación de archivos MP3 debe ser realizada en plazos de tiempo que permitan que los datos sean convertidos de formato digital a analógico según un orden y frecuencias establecidos. Pero si por alguna razón el sistema falla en cumplir con estas exigencias; el peor escenario sería causarle molestias a la persona que escucha música. A este tipo de sistemas de tiempo real se les conoce como de tiempo real no estricto.<br />
<br />
Ahora podríamos pensar que si un sistema es capaz de responder adecuadamente a los estímulos será de tiempo real. Esta conclusión tampoco es cierta, ya que un RTOS debe garantizar otros requisitos que lo hagan merecedor de esta calificación. Explicar cuáles son esos requisitos está fuera de los objetivos de este Blog, pero si usted está interesado en ellos, puede consultar la abundante literatura que existe al respecto y aclarar sus dudas.<br />
<br />
Por último, podríamos pensar que si un sistema que utiliza un sistema operativo de tiempo real no puede responder adecuadamente a los estímulos, entonces el sistema operativo no puede ostentar su título. Esto es cierto para la aplicación pero no se aplica por consecuencia al RTOS. Puede que el RTOS esté bien calificado pero su sistema esté mal diseñado, o los desarrolladores hayan fallado en utilizarlo correctamente, quizá se ha seleccionado un procesador no adecuado o podría existir cualquier otra razón que impida que el sistema no cumpla la condición para el “tiempo real”, aún cuando se utilice un RTOS.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://upload.wikimedia.org/wikipedia/fr/e/ee/FreeRTOS_Logo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://upload.wikimedia.org/wikipedia/fr/e/ee/FreeRTOS_Logo.jpg" height="119" width="320" /></a></div>
<br />
FreeRTOS como varios OS, está clasificado como RTOS y por su diseño puede asumir tareas de tiempo real estricto. Sin embargo, eso no quiere decir que sólo con utilizarlo ya tendremos un sistema de tiempo real, para ello es necesario dominar ciertas técnicas de diseño de hardware y firmware. <br />
<br />
Como conclusión podríamos señalar que este es un campo difuso, donde no hay un concenso establecido en cuanto a definiciones, razones por las cuales existe un intenso debate en los aspectos filosóficos ligados a estos temas. El autor pretende dejar a un lado las discusiones de este tipo y concentrarse en mostrar una técnica para el desarrollo de aplicaciones con FreeRTOS lo más depurada y precisa que pueda, con el interés de que los estudiantes puedan alcanzar los conocimientos y habilidades que les permitan obtener aplicaciones de tiempo real.<br />
<br />
Tomado de Curso de FreeRTOS por Ing. Reinier Torres Labrada.<br />
(http://www.micropic.es/cursos/file.php/3/clases/C01_Introduccion.pdf) </div>
Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-75343746685985520932014-04-02T13:28:00.001-07:002014-04-02T13:35:45.404-07:00Por qué usar RTOS en Micros? RTuinOS vs Arduino.<div style="text-align: justify;">
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="Arduino (www.arduino.cc) is a popular open source and open hardware micro
">Arduino ( www.arduino.cc ) es una plataforma que integra hardware y software abierto </span><span title="controller platform for various purposes, mainly located in leisure time
">con controladores para diversos fines, en donde el principal objetivo es disminuir el tiempo de diseño y </span><span title="projects.">proyectos, así como cuenta con un grupo desarrollador en donde actualiza casi bimensualmente los drives y ejemplos. </span><span title="Arduino comes along with a simple to use integrated development
"> </span></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNVI8Qt34IAEKtpkFrdywl_0I0gmwI7WO-2wCqmm_CP8ROlvQtZZrsqDWgHSWigY2uylb6jxhsy85KMxwt374h8gszTRpDXH_qGkRC8WwcDfzQ2lmft0A3j98pF_S20KBsu9j6oxb8Z-Cp/s1600/Arduino_Uno_pinout.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNVI8Qt34IAEKtpkFrdywl_0I0gmwI7WO-2wCqmm_CP8ROlvQtZZrsqDWgHSWigY2uylb6jxhsy85KMxwt374h8gszTRpDXH_qGkRC8WwcDfzQ2lmft0A3j98pF_S20KBsu9j6oxb8Z-Cp/s1600/Arduino_Uno_pinout.png" height="290" width="400" /></a></div>
<br />
<div style="text-align: justify;">
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="Arduino comes along with a simple to use integrated development
">Arduino es un concepto de diseño que viene junto con un sencillo IDE para ser usado en el desarrollo integral de proyecto empleando Micros</span><span title="environment, which contains the complete tool chain to write source code,
">, que contiene una cantidad de herramientas completas para escribir código fuente tanto en amsembler y C. </span></span></span></div>
<br />
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="environment, which contains the complete tool chain to write source code,
"></span></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX5udGHIt1H2logYHOoBm1NdlO6MFKBzvvW1PBvwrZdM9FPjhwjf8eyZHIcjVwzRAmMY2y89COQe9r3WzbCQQXsxrK6NCfD5lfp5RJa6gleaHb4_haWNGRVOZDXbvO8m23csR5bjoSVxMk/s1600/Arduino_Pinout_real.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX5udGHIt1H2logYHOoBm1NdlO6MFKBzvvW1PBvwrZdM9FPjhwjf8eyZHIcjVwzRAmMY2y89COQe9r3WzbCQQXsxrK6NCfD5lfp5RJa6gleaHb4_haWNGRVOZDXbvO8m23csR5bjoSVxMk/s1600/Arduino_Pinout_real.png" height="240" width="320" /></a></div>
<br />
<div style="text-align: justify;">
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="environment, which contains the complete tool chain to write source code,
">Con el IDE de desarrollo puedes </span><span title="to browse through samples and libraries, to compile and link the software
">navegar a través de muestras de ejemplo y bibliotecas, para compilar y enlazar el software</span></span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="to browse through samples and libraries, to compile and link the software
"></span></span></span><span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="and to upload it to the board and flash it.">y subirlo al bloque memoria y flashear (cargarla en el micro). </span></span></span></div>
<div style="text-align: justify;">
<br /></div>
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="The RTuinOS project adds the
">El proyecto RTuinOS (<a href="https://github.com/PeterVranken/RTuinOS" target="_blank">pagina oficial RTuinOS</a>) añade al proyecto Arduino un nuevo </span><span title="programming paradigm of a real time operating system to the Arduino world.
">paradigma en la programación de un sistema operativo en tiempo real(claro con su limitaciones sobre todo en Timers).</span></span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="programming paradigm of a real time operating system to the Arduino world.
"></span></span></span><span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="programming paradigm of a real time operating system to the Arduino world.
"><br /></span><span title="Real time operating systems, or RTOS, strongly simplify the implementation
">Los Sistemas operativos en tiempo real, o RTOS, simplifican y le da robustez a las aplicaciones </span><span title="of technical applications which typically do things in a quite regular
">de programación de bucle extendidos o programacion procedimental</span><span title="way, like checking inputs and setting outputs accordingly every (fixed)
">, ya que existe un control de entradas y salidas en donde se establecen en consecuencia todos "procesos" </span><span title="fraction of a second.">en fracciones de tiempo exacto (es allí donde nace la necesidad de quitar un timer del micro). </span><span title="For example, the temperature controller for a
">Por ejemplo, el controlador de temperatura para un </span><span title="heating installation could be designed this way.">instalación de calefacción se podría diseñar de esta manera:</span></span></span><br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="Temperature sensors,
">Sensores de temperatura, </span><span title="which report the room temperatures are evaluated and the burner and maybe
">que informan de las temperaturas ambientales que son evaluadas en un proceso de control y el proceso del quemador y tal vez </span><span title="some valves are controlled to yield the desired target temperature.
">algunas válvulas que controlan para producir la temperatura objetivo deseada. Dichos procesos corren de manera "Pseudo Paralela".</span></span></span><br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="some valves are controlled to yield the desired target temperature.
"></span></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://nereida.deioc.ull.es/~cleon/doctorado/doc01/img/pt.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://nereida.deioc.ull.es/~cleon/doctorado/doc01/img/pt.gif" height="298" width="400" /></a></div>
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="some valves are controlled to yield the desired target temperature.
"><br /></span><span title="Furthermore, using a real time system the program could coincidentally and
">Además , el uso de un sistema en tiempo real el programa podría casualmente </span><span title="regularly update a display to provide feedback - at the same or any other
">actualizar periódicamente un proceso llamado pantalla que espera un aviso o mensaje de otro proceso para dar información</span><span title="Regular, time based programming can be done without the need of CPU
">. Es allí la necesidad de diferenciar la Programación regular, se evalua el proceso el tiempo que dure y hasta que no termine no pasa al otro proceso en un esquema de bucles, mediante esta programación el micro no optimiza los delays de proceso por lo que el micro se queda haciendo tiempo sin uso importante; las librerías de Arduino son procedimientos que debn finalizar para dar paso a otros</span><span title="functions delay and delayMicroseconds.">. Mientras que el uso de </span><span title="Real time operating systems
">Sistemas operativos en tiempo real se </span><span title="characterize the professional use of micro controllers.
">caracterizar por el uso profesional de micro controladores en tiempos y procedimientos con su optimización tácita.</span></span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="characterize the professional use of micro controllers.
"><span id="goog_829010729"></span><span id="goog_829010730"></span></span></span></span>
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="characterize the professional use of micro controllers.
"><br /></span><span title="RTuinOS is a small real time operating system (RTOS) for the Arduino
">RTuinOS, es un pequeño sistema en tiempo real de funcionamiento ( RTOS ) para la plataforma Arduino, e</span><span title="It is simple to use and fits well into the existing Arduino
">s fácil de usar y se ajusta bien a las librerías y código del Arduino</span><span title="code environment.">, evidentemente s</span><span title="It adds the concept of pseudo-parallel execution threads
">e añade el concepto de hilos o "procesos" de ejecución pseudo paralelo</span><span title="to the sketches.
">a la aplicación. Pensar en OS sobre Arduino es pensar en procesos corriendo a la vez en donde cada proceso se comunican entre sí para llegar a un fin.</span></span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="to the sketches.
"><br /></span><span title="The traditional Arduino sketch has two entry points; the function setup,
">El esquema tradicional Arduino tiene dos puntos de entrada; la configuración de la función, </span><span title="which is the place to put the initialization code required to run the
">que es el lugar para poner el código de inicialización necesario para ejecutar el</span><span title="sketch and function loop, which is periodically called.">bosquejo y la función de bucle, que se llama periódicamente; empleando el esquema de PLC equipo. </span><span title="The frequency of
">La frecuencia de los</span><span title="looping is not deterministic but depends on the execution time of the code
">bucle no es determinista, pero depende del tiempo de ejecución del código </span><span title="inside the loop.
">dentro del bucle (problema del esquema Arduino).</span></span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.freertos.org/implementation/TaskExecution.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www.freertos.org/implementation/TaskExecution.gif" height="218" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://mbed.org/media/uploads/emilmont/threadstatus.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="inside the loop.
"></span><span title="Using RTuinOS, the two mentioned functions continue to exist and continue
">Usando RTuinOS, las dos funciones mencionadas continúan existiendo y continuan</span><span title="to have the same meaning."> teniendo el mismo significado. </span><span title="However, as part of the code initialization in
">Sin embargo, como parte de la inicialización de código en</span></span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="However, as part of the code initialization in
"></span><span title="setup you may define a number of tasks having individual properties.">configuración se puede definir una serie de tareas que tienen propiedades individuales (tiempo de cronogramas por procedimiento), </span><span title="The
">la </span><span title="most relevant property of a task is a C code function, which becomes the
">propiedad más relevante de una tarea es una función de código C, que se convierte en el</span></span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="most relevant property of a task is a C code function, which becomes the
"></span><span title="so called task function.">llamada a la función de la tarea. </span><span title="Once entering the traditional Arduino loop, all
">Una vez que entra en el bucle tradicional Arduino, todo </span><span title="of these task functions are executed in parallel to one another and to the
">estas funciones de trabajo se ejecutan en paralelo entre sí y la </span><span title="repeated execution of function loop.">ejecución repetida de bucle de la función. </span><span title="We say, loop becomes the idle task of
">Decimos, que un bucle se convierte en la tarea ociosa de </span><span title="the RTOS.
">el RTOS, de hecho un delay es una tarea ociosa tambien para el micro y el lo optimiza.</span></span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="the RTOS.
"></span></span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="the RTOS.
"></span></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://mbed.org/media/uploads/emilmont/threadstatus.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://mbed.org/media/uploads/emilmont/threadstatus.png" height="288" width="320" /></a></div>
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="the RTOS.
"></span><span title="A characteristic of RTuinOS is that the behavior of a task is not fully
">Una característica de RTuinOS es que el comportamiento de una tarea no es totalmente </span><span title="predetermined at compile time.">predeterminada en tiempo de compilación. </span><span title="RTuinOS supports regular, time-controlled
">RTuinOS apoya a regular y controla por tiempo la </span><span title="tasks as well as purely event controlled ones.">tareas, así como el cronograma de tareas. </span><span title="Tasks can be preemptive or
">Las tareas pueden ser preventivas o</span><span title="behave cooperatively.">comportarse cooperativamente. </span><span title="Task scheduling can be done using time slices and a
">La programación de tareas se puede hacer usando intervalos de tiempo y un </span><span title="round robin pattern.">patrón de round robin. </span><span title="Moreover, many of these modes can be mixed.">Por otra parte, muchos de estos modos se pueden mezclar para lograr aun mas mejoras en el sistema a ser escalable. </span><span title="A task is
">Una tarea es</span><span title="not per se regular, its implementing code decides what happens and this
">no por sí regular, su código implementar decide lo que pasa y esto </span><span title="can be decided context or situation dependent.">puede decidirse en el contexto o situación dependiente. </span><span title="This flexibility is
">Esta flexibilidad es </span><span title="achieved by the basic idea of having an event controlled scheduler, where
">alcanzada por la idea básica de que tiene un planificador controlador de eventos, donde los </span><span title="typical RTOS use cases are supported by providing according events, eg
">casos de uso típico en RTOS son apoyados por proporcionar eventos de acuerdo a su uso</span><span title="wait for an application sent event - and give up its regular behavior.">. </span><span title="In
">En </span><span title="many RTOS implementations the basic characteristic of a task is determined
">muchas implementaciones de RTOS la característica, básica de una tarea está determinada por el </span><span title="at compile time, in RTuinOS this is done partly at compile time and partly
">tiempo de compilación, en RTuinOS esto se hace en parte con el tiempo de compilación y en parte con el</span><span title="at runtime.
"> tiempo de ejecución.</span></span></span><span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="RTuinOS is provided as a single source code file which is compiled
">RTuinOS se ofrece como un solo archivo de código fuente que se compila </span><span title="together with your other code, which now becomes an RTuinOS application.
">junto con su otro código, que ahora se convierte en una aplicación RTuinOS. </span><span title="In the most simple case, if you do not define any task, your application
">En el caso más sencillo, solo basta con definir cualquier tarea, su aplicación</span></span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="In the most simple case, if you do not define any task, your application
"></span></span></span><span style="font-family: "Courier New",Courier,monospace;"><span class="" id="result_box" lang="es"><span title="will strongly resemble a traditional sketch: You implement your setup and
">se parecen mucho a un esquema tradicional : se implementa la configuración y </span><span title="your loop function; the former will be run once at the beginning and the
">su función de bucle, el primero se llevará a cabo una vez al principio y al </span><span title="latter repeatedly.
">este último en varias ocasiones. </span><span title="RTuinOS on its own can't be compiled, there need to be an application.
">RTuinOS por sí sola no puede ser compilado, es necesario que haya una aplicación. </span><span title="RTuinOS is organized as a package which combines the RTuinOS source file
">RTuinOS está organizado como un paquete que combina el archivo de origen RTuinOS </span><span title="with some sample applications which are the test cases at the same time.
">con algunas aplicaciones de ejemplo que son los casos de prueba al mismo tiempo.</span><span title="The source code of each sample application is held in a separate folder,
">El código fuente de cada aplicación de la muestra se mantiene en una carpeta separada, </span><span title="named tc<nn>.">llamado tc <nn>. </span><span title="Any of these can be selected for compilation.">Cualquiera de ellos puede ser seleccionado para la compilación. </span><span title="You may add
">Puede añadir </span><span title="more folders, holding the source code of your RTuinOS applications.">más carpetas, manteniendo el código fuente de sus aplicaciones RTuinOS. </span><span title="of an RTOS.
"><br /></span><span title="improvements and still missing and maybe later released features."></span></span></span>Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-28896125273099383862014-04-02T09:00:00.003-07:002014-04-02T09:03:14.501-07:00DuinOS, RTOS para el Arduino (Primeras practicas).(Tomado de http://forum.arduino.cc/index.php?topic=7018.0)<br />
<span class="" id="result_box" lang="es"><span class="hps">Se muestra a continuación un pequeño ejemplo usando RTOS para el ARDUINO denominado DuinOS. </span></span><br />
Este ejemplo ha<span class="hps"> sido adaptado</span> <span class="hps">para ser montado microcontrolador a</span><span class="hps">mega168</span> <span class="hps">(con algunas limitaciones</span> por supuesto)<span class="hps"></span><span class="hps"></span><span class="hps"></span><span class="hps"></span><span class="hps"></span><span class="hps"></span><span class="hps"></span><span class="hps">.</span> <span class="hps">En</span> <span class="hps">nuestras</span><span class="hps"></span><span class="hps"> pruebas iniciales</span><span class="">, es</span> <span class="hps">compatible con la mayoría</span> <span class="hps">de código estándar</span> <span class="hps">de Arduino</span><span class="">, por lo que</span> <span class="hps">podría añadirse como</span> <span class="hps">una biblioteca para</span> <span class="hps">cualquier aplicación,</span> <span class="hps">simplemente</span> <span class="hps">teniendo en cuenta</span> <span class="hps">lo siguiente:</span> <br />
<span class="" id="result_box" lang="es"><br /><span class="hps">-</span> <span class="hps">El</span> <span class="hps">loop ()</span> <span class="hps">es</span> <span class="hps">ahora</span> <span class="hps">una tarea</span>, por lo que <span class="hps">su velocidad</span> <span class="hps">puede ser diferente. (Importante)</span> <br /><span class="hps">-</span> <span class="hps">El temporizador</span> <span class="hps">1</span> <span class="hps">es usada por el</span> <span class="hps atn">kernel (</span>por lo que no esta disponible el <span class="hps">PWM</span> <span class="hps">en</span> <span class="hps">los pines 9</span> <span class="hps">y 10).</span> <br /><span class="hps">-</span> <span class="hps">Los</span> <span class="hps">delayMicroseconds</span> <span class="hps atn">(</span>) <span class="hps">está permitido</span>, <span class="hps">pero no</span> se recomienda en el programa <span class="hps">basados</span> en <span class="hps">DuinOS</span>. <br /><br /><span class="hps">He aquí un pequeño</span> <span class="hps">ejemplo de</span> <span class="hps">uso</span> <span class="hps">(se</span> <span class="hps">ejecuta en un</span> <span class="hps">168</span><span class="">), con</span> <span class="hps">dos LED</span> <span class="hps">parpadeando</span>, cuando <span class="hps">el LED rojo está</span> <span class="hps atn">"</span><span class="">modulada</span>o" de <span class="hps">dos tareas</span> <span class="hps">separadas</span>:</span><br />
<br />
<span class="" id="result_box" lang="es">#include <DuinOS.h><br /><br /><span style="color: #7e7e7e;">/*</span><br /><span style="color: #7e7e7e;"> DuinOS TwoLEDsBlinking</span><br /><span style="color: #7e7e7e;"> </span><span style="color: #7e7e7e;"> Blinks two LEDs with different freqs.</span><br /><span style="color: #7e7e7e;"> </span><span style="color: #7e7e7e;"> The circuit: ##Pins:</span><br /><span style="color: #7e7e7e;"> * LED connected from digital pin 14 to Vcc.</span><br /><span style="color: #7e7e7e;"> * LED connected from digital pin 15 to Vcc.</span><br /><span style="color: #7e7e7e;"> ##Pins:</span><br /><span style="color: #7e7e7e;"> * Note: On most Comm.ProgUSB boards, there are already two LEDs on the board</span><br /><span style="color: #7e7e7e;"> connected to pins 14 and 15, so you don't need any extra components for this example.</span><br /><span style="color: #7e7e7e;"> </span><span style="color: #7e7e7e;"> Created 2009.10.26 (yyyy.mm.dd)</span><br /><span style="color: #7e7e7e;"> by Julián da Silva Gillig</span><br /><span style="color: #7e7e7e;"> </span><span style="color: #7e7e7e;">Based on the original Blink code by David Cuartielles</span><br /><span style="color: #7e7e7e;"> </span><span style="color: #7e7e7e;"> */</span></span><br />
<span class="" id="result_box" lang="es"><span style="color: #7e7e7e;"> </span><br /><span style="color: #cc6600;">int</span> ledPinRed = 14;<br /><span style="color: #cc6600;">int</span> ledPinGreen = 15;<br /><span style="color: #cc6600;">boolean</span> redLED_isOn = <span style="color: #cc6600;">false</span>;<br /><br /><br /><span style="color: #cc6600;">taskLoop</span>(redLED)<br />{ <br /> redLED_isOn = <span style="color: #cc6600;">false</span>;<br /> <span style="color: #cc6600;">delay</span>(500);<br /> redLED_isOn = <span style="color: #cc6600;">true</span>; <br /> <span style="color: #cc6600;">delay</span>(500);<br />}<br /><br /><br /><span style="color: #cc6600;">taskLoop</span>(greenLED)<br />{<br /> <span style="color: #cc6600;">static</span> <span style="color: #cc6600;">unsigned</span> <span style="color: #cc6600;">char</span> counter = 0;<br /><br /> <span style="color: #cc6600;">digitalWrite</span>(ledPinGreen, <span style="color: #006699;">LOW</span>); <span style="color: #7e7e7e;">// set the LED on</span><br /> <span style="color: #cc6600;">delay</span>(200);<br /> <span style="color: #cc6600;">digitalWrite</span>(ledPinGreen, <span style="color: #006699;">HIGH</span>); <span style="color: #7e7e7e;">// set the LED off</span><br /> <span style="color: #cc6600;">delay</span>(200);<br /><br /> <span style="color: #cc6600;">if</span> (counter >= 29)<br /> <span style="color: #cc6600;">suspend</span>(); <span style="color: #7e7e7e;">//After a while, the tasks suspends itself (forever)</span><br /> counter++;<br />}<br /><br /><br /><span style="color: #7e7e7e;">// The setup() method runs once, when the sketch starts</span><br /><br /><span style="color: #cc6600;">void</span> <span style="color: #cc6600;"><b>setup</b></span>() <br />{ <br /> <span style="color: #7e7e7e;">// Initialize the digital pins as outputs:</span><br /> <span style="color: #cc6600;">pinMode</span>(ledPinRed, <span style="color: #006699;">OUTPUT</span>);<br /> <span style="color: #cc6600;">pinMode</span>(ledPinGreen, <span style="color: #006699;">OUTPUT</span>);<br /><br /> <span style="color: #cc6600;">createTaskLoop</span>(redLED, <span style="color: #006699;">LOW_PRIORITY</span>);<br /> <span style="color: #cc6600;">createTaskLoop</span>(greenLED, <span style="color: #006699;">NORMAL_PRIORITY</span>);<br /><br /> <span style="color: #7e7e7e;">//A task can be suspended by it's name</span><br /> <span style="color: #7e7e7e;">//suspendTask(redLED);</span><br />}<br /><br /><br /><span style="color: #7e7e7e;">// This is the main loop() method, wich runs over and over again,</span><br /><span style="color: #7e7e7e;">// as long as the Arduino has power. Is a LOW_PRIORITY loopTask:</span><br /><br /><span style="color: #cc6600;">void</span> <span style="color: #cc6600;"><b>loop</b></span>() <br />{<br /> <span style="color: #cc6600;">if</span> (redLED_isOn)<br /> {<br /> <span style="color: #cc6600;">digitalWrite</span>(ledPinRed, <span style="color: #006699;">HIGH</span>); <span style="color: #7e7e7e;">// set the LED off</span><br /> <span style="color: #cc6600;">delay</span>(25); <span style="color: #7e7e7e;">// The OS can be tested reducing these delays, and seeing how both LEDs work together...</span><br /> <span style="color: #cc6600;">digitalWrite</span>(ledPinRed, <span style="color: #006699;">LOW</span>); <span style="color: #7e7e7e;">// set the LED on</span><br /> <span style="color: #cc6600;">delay</span>(25); <br /> }<br /> <span style="color: #cc6600;">else</span><br /> {<br /> <span style="color: #cc6600;">digitalWrite</span>(ledPinRed, <span style="color: #006699;">HIGH</span>); <span style="color: #7e7e7e;">// LED is off</span><br /> <span style="color: #7e7e7e;">//If nextTask is not called, the application will not hang, because the OS is preemptive. BUT, the current task</span><br /> <span style="color: #7e7e7e;">//will consume a lot of computational resources (due to it's lack of a delay() in this branch), the application will </span><br /> <span style="color: #7e7e7e;">//turn slower, and the other tasks may be affected by this, loossing precision in their timing:</span><br /> <span style="color: #cc6600;">nextTask</span>();<br /> }<br />} </span><br />
<br />
<span class="" id="result_box" lang="es">Pagina de interes:</span><br />
<span class="" id="result_box" lang="es">http://code.google.com/p/duinos/</span><br />
<span class="" id="result_box" lang="es">http://code.google.com/p/duinos/downloads/list</span><br />
Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0tag:blogger.com,1999:blog-2883331607353377510.post-39145137314709892652014-03-23T11:04:00.004-07:002014-03-23T11:04:54.367-07:00Sistema Operativos en tiempo real Vs Multiprocesos en Arduino.Sistema operativo en tiempo real<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://srimca.edu.in/srijan/Srijanmar2010/images/RTOS1.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://srimca.edu.in/srijan/Srijanmar2010/images/RTOS1.JPG" /></a></div>
<br />
Un sistema operativo en tiempo real ( RTOS ) es un sistema operativo (SO) destinado a atender las solicitudes de aplicaciones en tiempo real. Debe ser capaz de procesar los datos de bucle y por lo general sin los retrasos o cuellos de botella. Los requisitos para el tratamiento del tiempo (incluida cualquier demora OS ) se miden en décimas de segundo o ms (o mas corto, sólo que deja de ser trabajable).<br />
<br />
No es un secreto que el Arduino tiene pocos recursos del sistema y humildemente considero una plataforma Marca aunque no Optima, pero así es la electrónica. La pregunta que todos nos hacemos (sobre todo estudiantes que se inician en este mundo sin entender la diferencia) ¿Es posible ejecutar RTOS en Arduino? Afortunadamente, sí! Hay algo de RTOS (básico pero se puede jugar con ello) que puede funcionar con el Arduino. Hemos utilizado algunos de ellos FreeRTOS, ODAs y nuestra elección es ChibiOS (básico para los que se inician).<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.jacobfeng.com/wp-content/uploads/2013/05/3665ed14c73a9d5f4e8fe9c65b58329b.media_.116x116.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://www.jacobfeng.com/wp-content/uploads/2013/05/3665ed14c73a9d5f4e8fe9c65b58329b.media_.116x116.png" /></a></div>
<br />
ChibiOS / RT está diseñada para aplicaciones profundamente arraigadas en tiempo real, donde la eficiencia y la ejecución de código compacto son requisitos importantes. Este RTOS se caracteriza por su alta portabilidad, tamaño compacto (recordemos que ya tenemos consumido en ARDUINO unos 2 a 3k) y, sobre todo, por su arquitectura optimizada para la conmutación de contexto de procesos extremadamente eficiente. En pocas palabra convive con el Bootloader del Arduino.<br />
<br />
¿Qué más tenemos cuando uso RTOS?<br />
Todos los ejemplos que usted ve cuando trabajamos con el Arduino es un programa lineal, a veces se le indica con el nombre de procedimentales. La parte básica del programa se ponen a la función Loop y se ejecuta desde su inicio del Setup hasta el final del cierre de Loop; este Loop es simplemente un Goto Inicio con un retraso al final del bucle cuando nuestro Arduino no hace nada (es un control de bootloader del Arduino).<br />
<br />
El típico problema de programas de tareas similares, por ejemplo: como hacemos para leer algunos sensores una vez por segundo.<br />
¿Qué debemos hacer si tenemos que leer el sensor de luz cada diez milisegundos y lee el sensor de temperatura una vez por cinco segundos?. o en resumen que hacemos con procesos Coincidentes en tiempo? Podemos escribir este programa en bucle estándar del Arduino utilizando la función millis. Este programa funciona, pero el código de bucles será muy larga con muchas condiciones. Programas como éste no es fácil de leer, muy modificados en toda la linealidad del programa y pueden contener múltiples errores difíciles de depurar y lo imposible: la escalabilidad (elementos que un diseñador profesional debe considerar) .<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://srimca.edu.in/srijan/Srijanmar2010/images/RTOS3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://srimca.edu.in/srijan/Srijanmar2010/images/RTOS3.JPG" height="112" width="320" /></a></div>
<br />
Cuando usamos RTOS podemos crear procesos separados denominados hilos. Cada uno de los procesos se parece a la función loop independiente (estimado lector, es como multiples loop uno seguidos de otro pero con un control). Así que podemos crear un programa con mucho bucles cada uno de ellos ejecutará su tarea independiente. En nuestro ejemplo, el primer proceso leerá sensor de luz "proceso rápido" el segundo proceso leerá sensores de temperatura con gran retraso. Y el resultado será enviado al Arduino .<br />
<br />
Configuración RTOS y crear bocetos<br />
¿Como instalar o corre el RTOS con el Arduino y que tan complejo es? El ChibiOS es una simple biblioteca que debe copiarse a la carpeta de biblioteca Arduinos. Y el programa es simple script Arduino creado en Arduino IDE, es decir una simple llamada <b style="font-family: monospace; font-size: 12px; white-space: pre;"><span style="color: red;">#include "ChibiOS_AVR.h".</span></b><br />
<br />
Creamos el primer boceto y ejemplo.<br />
<br />
Pagina de ChibiOS:<br />
Conseguimos los ChibiOS de página http://code.google.com/p/rtoslibs/ . Esta página contiene información sobre otros RTOS y enlace para ChibiOS pagina oficial .<br />
<br />
Puede descargar también el archivo de la página web Arduino:<br />
http://ksduino.org/downloads/ChibiOS20130208.zip<br />
<br />
El ejemplo ChibiOS y KSduino<br />
En este ejemplo vamos a crear los procesos:<br />
<br />
Proceso 1 para el envío de parámetros a KSduino o Arduino<br />
Proceso 2 para calcular la temperatura DS18B20<br />
Proceso 3 respuestas lectura KSduino o Arduino<br />
<br />
Para sincronizar las tareas Arduino utilizaremos el concepto de semáforo, por lo que en un momento de tiempo sólo una tarea del Arduino puede correr, si lector esto quiere decir que dentro de un proceso yo puedo controlar los demás procesos ya sea inhabilitaros o enviadole una clave o mensaje encolado.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://srimca.edu.in/srijan/Srijanmar2010/images/RTOS4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://srimca.edu.in/srijan/Srijanmar2010/images/RTOS4.jpg" height="36" width="320" /></a></div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">EJEMPLO 1:</span><br />
<br />
<span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// Includes</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="preprocessor" style="color: #880000; font-family: monospace; font-size: 12px; white-space: pre;">#include "SPI.h"</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="preprocessor" style="color: #880000; font-family: monospace; font-size: 12px; white-space: pre;">#include "EthernetUdp.h"</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="preprocessor" style="color: #880000; font-family: monospace; font-size: 12px; white-space: pre;">#include "OneWire.h" // one wire library to connect ds18b20</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="preprocessor" style="color: #880000; font-family: monospace; font-size: 12px; white-space: pre;">#include "ksDS18B20.h" // subclass to read ds18b20 values</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="preprocessor" style="color: #880000; font-family: monospace; font-size: 12px; white-space: pre;">#include "KSduino.h" // KSduino Library</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="preprocessor" style="font-family: monospace; font-size: 12px; white-space: pre;"><b><span style="color: red;">#include "ChibiOS_AVR.h"</span></b><span style="color: #880000;"> // ChibiOS library</span></span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// DS18B20 address</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
uint8_t devAddr1[] = { </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0x28</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">, </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0x16</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">, </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0x05</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">, </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0xB2</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">, </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0x03</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">, </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0x00</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">, </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0x00</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">, </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0x00</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> };
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// Define OneWire, DS18B20 & Timer classes</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
OneWire ds(</span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">7</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">); </span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// OneWire on pin 7</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
ksDS18B20 ds18b20_1 (&ds, devAddr1);
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// KSduino User definition -----------------------------------------</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// This Arduino ID and Password</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// Change this values to yours</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
unsigned </span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">int</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> deviceID = </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0000</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">; </span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// set your Device ID</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
unsigned </span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">int</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> devicePwd = </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">1111</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">; </span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// set your Device Password</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// This Arduino MAC, IP,DNS, Gateway and port </span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// Change this values to yours</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">byte</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> mac[] = { </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0x74</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">,</span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0x69</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">,</span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0x69</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">,</span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0x2D</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">,</span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0x00</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">,</span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0x00</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> };
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">byte</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> ip[] = { </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">192</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">, </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">168</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">, </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">1</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">, </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">222</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> };
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">//byte dns[] = { 192, 168, 1, 1 };</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">//byte gateway [] = { 192, 168, 1, 1 };</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">//byte subnet [] = { 255, 255, 255, 0 }; </span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
unsigned </span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">int</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> port = </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">40000</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> + deviceID;
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// KSduino Server definition ----------------------------------------</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// Server address & port</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">byte</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> serverIp[] = { </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">178</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">,</span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">63</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">,</span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">53</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">,</span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">233</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> }; </span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// Global IP address</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
unsigned </span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">int</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> serverPort = </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">9930</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">; </span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// Port number</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// ----------------------------------------------------------------</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// Define KSduino class</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
KSduino ksd (deviceID, devicePwd, serverIp, serverPort);
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// Define some KSduino parameters with KSduinoParameter class</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
KSduinoParameter d1 (&ksd, </span><span class="string" style="color: #880000; font-family: monospace; font-size: 12px; white-space: pre;">"d1"</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">, </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0.5</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">, </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">15</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">*</span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">60</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">);
KSduinoParameter f1 (&ksd, </span><span class="string" style="color: #880000; font-family: monospace; font-size: 12px; white-space: pre;">"f1"</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">, </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0.5</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">, </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">15</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">*</span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">60</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">);
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// Semaphore to trigger context switch</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
Semaphore sem;
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// Idle time counter</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">volatile</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> uint32_t count = </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">;
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">//------------------------------------------------------------------</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">void</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> setup()
{
ksd.begin(mac, ip, port); </span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// start KSduino</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// ksd.begin(mac, ip, dns, gateway, port);</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// ksd.begin(mac, ip, dns, gateway, subnet, port);</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// Setup ChibiOS</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
chBegin(mainThread);
}
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">//------------------------------------------------------------------------------</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// thread 1 - this task send KSduino parameters</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// 160 byte stack for KSduino task, beyond task switch and interrupt needs</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">static</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> WORKING_AREA (waThread1, </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">160</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">);
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">static</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> msg_t Thread1(</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">void</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> *arg)
{
</span><span class="preprocessor" style="color: #880000; font-family: monospace; font-size: 12px; white-space: pre;">#<span class="keyword" style="font-weight: bold;">define</span> WAIT_FOR_ANSWER 2</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">for</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> (;;)
{
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// Create D1 test value</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">int</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> d1_generator = random(</span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">1</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">,</span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">1000</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">);
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">byte</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> d1_value = d1_generator < </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">10</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> ? </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">1</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> : </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">; </span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// will high ones per second</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// Send values to KSduino if something changed</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">if</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> (d1.check (d1_value) || ds18b20_1.getTemp () && f1.check(ds18b20_1.celsius))
{
chSemWait(&sem); </span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// only one KSduino task should run at this moment</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
ksd.beginPacket ();
d1.addParameter (d1_value);
f1.addParameter( ds18b20_1.celsius);
ksd.endPacket (WAIT_FOR_ANSWER);
chSemSignal(&sem);
}
chThdSleepMilliseconds(</span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">10</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">);
}
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">return</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">;
}
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">//------------------------------------------------------------------------------</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// thread 2 - calqulate DS18b20 thermometer every second</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// 64 byte stack beyond task switch and interrupt needs</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">static</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> WORKING_AREA (waThread2, </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">64</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">);
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">static</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> msg_t Thread2(</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">void</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> *arg)
{
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">for</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> (;;)
{
ds18b20_1.readTermometer();
chThdSleepMilliseconds(</span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">1000</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">);
}
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">return</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">;
}
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">//------------------------------------------------------------------------------</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// thread 3 - KSduino update </span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// 160 byte stack for KSduino task, beyond task switch and interrupt needs</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">static</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> WORKING_AREA(waThread3, </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">160</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">);
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">static</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> msg_t Thread3 (</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">void</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> *arg)
{
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">for</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> (;;)
{
chSemWait(&sem); </span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// only one KSduino task should run at this moment</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
ksd.update ();
chSemSignal(&sem);
chThdSleepMilliseconds(</span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">5</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">);
}
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">return</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">0</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">;
}
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">//------------------------------------------------------------------------------</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">void</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> mainThread() {
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// initialize semaphore</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
chSemInit(&sem, </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">1</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">);
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// start blink thread</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
chThdCreateStatic(waThread1, </span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">sizeof</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">(waThread1),
NORMALPRIO + </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">1</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">, Thread1, NULL);
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// start print thread</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
chThdCreateStatic(waThread2, </span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">sizeof</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">(waThread2),
NORMALPRIO + </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">1</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">, Thread2, NULL);
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// start ksduino send thread</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
chThdCreateStatic(waThread3, </span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">sizeof</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">(waThread3),
NORMALPRIO + </span><span class="number" style="color: #008800; font-family: monospace; font-size: 12px; white-space: pre;">1</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">, Thread3, NULL);
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// Main thread (iadle thread) loop </span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">for</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> (;;)
{
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// must insure increment is atomic</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// in case of context switch for print</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
noInterrupts();
count++;
interrupts();
}
}
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">//------------------------------------------------------------------</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
</span><span class="keyword" style="font-family: monospace; font-size: 12px; font-weight: bold; white-space: pre;">void</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"> loop()
{
</span><span class="comment" style="color: #888888; font-family: monospace; font-size: 12px; white-space: pre;">// not used</span><span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;">
}</span><br />
<span style="background-color: white; font-family: monospace; font-size: 12px; white-space: pre;"><br /></span>
<span style="background-color: white; font-family: monospace; white-space: pre;"><span style="font-size: large;">EJEMPLO 2:</span></span><br />
<span style="background-color: white; font-family: monospace; white-space: pre;"><span style="font-size: large;"><br /></span></span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><span style="background-color: white;">// scope test to determine ChibiOS context switch time</span><br /><span style="background-color: white;">#include <ChibiOS.h></span><br /><br /><span style="background-color: white;">const uint8_t LED_PIN = 3;</span><br /><span style="background-color: white;">// semaphore to trigger thread2</span><br /><span style="background-color: white;">Semaphore sem;</span><br /><span style="background-color: white;">//------------------------------------------------------------------------------</span><br /><span style="background-color: white;">//Proceso de Led Apagado 1.</span><br /><span style="background-color: white;">static WORKING_AREA(waThread1, 64);</span><br /><br /><span style="background-color: white;">static msg_t Thread1(void *arg) {</span><br /><span style="background-color: white;"> while (TRUE) {</span><br /><span style="background-color: white;"> chSemWait(&sem);</span><br /><span style="background-color: white;"> digitalWrite(LED_PIN, LOW);</span><br /><span style="background-color: white;"> }</span><br /><span style="background-color: white;"> return 0;</span><br /><span style="background-color: white;">}</span><br /><span style="background-color: white;">//------------------------------------------------------------------------------</span><br /><span style="background-color: white;">// thread 2 - cause context switch to thread 1 with semaphore</span><br /><span style="background-color: white;">static WORKING_AREA(waThread2, 64);</span><br /><br /><span style="background-color: white;">static msg_t Thread2(void *arg) {</span><br /><span style="background-color: white;"> while (TRUE) {</span><br /><span style="background-color: white;"> // toggle LED to get time for digitalWrite</span><br /><span style="background-color: white;"> digitalWrite(LED_PIN, HIGH); </span><br /><span style="background-color: white;"> digitalWrite(LED_PIN, LOW);</span><br /><span style="background-color: white;"> digitalWrite(LED_PIN, HIGH);</span><br /><span style="background-color: white;"> // signal to switch to thread1 to get context switch time</span><br /><span style="background-color: white;"> chSemSignal(&sem);</span><br /><span style="background-color: white;"> // wait 10 ms</span><br /><span style="background-color: white;"> chThdSleepMilliseconds(10);</span><br /><span style="background-color: white;"> }</span><br /><span style="background-color: white;"> return 0;</span><br /><span style="background-color: white;">}</span><br /><span style="background-color: white;">//------------------------------------------------------------------------------</span><br /><span style="background-color: white;">void setup() {</span><br /><span style="background-color: white;"> pinMode(LED_PIN, OUTPUT);</span><br /><span style="background-color: white;"> halInit();</span><br /><span style="background-color: white;"> chSysInit();</span><br /><span style="background-color: white;"> chSemInit(&sem, 0);</span><br /><span style="background-color: white;"> chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO + 2, Thread1, NULL);</span><br /><span style="background-color: white;"> chThdCreateStatic(waThread2, sizeof(waThread2), NORMALPRIO + 1, Thread2, NULL); </span><br /><span style="background-color: white;"> while(TRUE){}</span><br /><span style="background-color: white;">}</span><br /><span style="background-color: white;">void loop() {</span><br /><span style="background-color: white;"> // never called</span><br /><span style="background-color: white;">}</span></span><br />
<br />Czwienczekhttp://www.blogger.com/profile/06103139176884369158noreply@blogger.com0