<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2537808901356183239</id><updated>2024-12-08T03:13:00.568-08:00</updated><category term="Laboratorio"/><category term="Ensamblador"/><category term="PICS"/><category term="Arduino"/><category term="Clase"/><category term="Sistemas Integrados"/><title type='text'>E(ver|mbedded)</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blutintegrado.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://blutintegrado.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Everardo medina</name><uri>http://www.blogger.com/profile/06546729504173814351</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibiBPjbY_uvBpNn5XjKtqrrjXsxrlFYUQ7nmg3qvPXjIMWJ2bCtGdAg64CtvfDwwjkvhPfMVZfnv9wt9cgHRrEXllc0hrl-xGR7m_BmoiJQ1oAnYXQhjwJriksWWkatFo/s220/20191016_235701.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2537808901356183239.post-3547137943961707661</id><published>2012-05-24T09:22:00.000-07:00</published><updated>2012-05-24T10:52:15.593-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><title type='text'>Proyecto Arduino</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Control de música desde un NES pad.&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;Materiales:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;1 NES pad&lt;/li&gt;
&lt;li&gt;&amp;nbsp;1 Arduino UNO&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Cables para conexiones&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;El proyecto consiste en utilizar el NES pad para controlar el reproductor de música, poder cambiar la canción, subir el volumen, abrir y cerrar el reproductor etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.aoaforums.com/forum/attachments/the-chop-shop/20349d1182021229-usb-nes-game-pad-1757766008819633.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;http://www.aoaforums.com/forum/attachments/the-chop-shop/20349d1182021229-usb-nes-game-pad-1757766008819633.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;Para ello se utilizo un script en python que mediante el modulo serial nos estuviese comunicando con el arduino y este a su vez nos mandara la información de los botones que están presionando en el NES pad.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.aoaforums.com/forum/attachments/the-chop-shop/20349d1182021229-usb-nes-game-pad-1757766008819633.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
El NES pad cuenta con 8 botones, los cuales consisten:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;&amp;nbsp;flechas ( Arriba, Abajo, Izquierda, Derecha )&amp;nbsp;&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;&amp;nbsp;boton Select&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;&amp;nbsp;boton Start&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;&amp;nbsp;boton A&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;&amp;nbsp;boton B&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
A cada uno de los botones se le asignara un comando especial para el uso del reproductor de música. El reproductor que seleccione fue Banshee.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Para conectar el NES pad tome en cuenta su diagrama de pin out.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDd3zQT2VjKaIJ1a2czUgrKZUfIXoFZQYw89Iiw4SpzqxB5xbEiraHH1h4WyDNW2m2CxfiAzDLEymPo2xBbGll_dTgsuO4_0cUYmvGZ3LT9j6boeV_JyLxuu_fmzToMSZtNyEOAKxnJWg-/s1600/nes_pinout.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDd3zQT2VjKaIJ1a2czUgrKZUfIXoFZQYw89Iiw4SpzqxB5xbEiraHH1h4WyDNW2m2CxfiAzDLEymPo2xBbGll_dTgsuO4_0cUYmvGZ3LT9j6boeV_JyLxuu_fmzToMSZtNyEOAKxnJWg-/s1600/nes_pinout.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i.imgur.com/IbPdd.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://i.imgur.com/IbPdd.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Despues de las conexiones indicadas con el pinout el sketch de arduino para este proyecto es el siguiente quedo de la siguiente manera.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;script src=&quot;https://gist.github.com/2782443.js?file=Arduino&quot;&gt;
&lt;/script&gt;
Este sketch hace envios por el puerto serial hacia la pc, despues necesitamos un cliente que este recibiendo los datos del arduino y para ello tenemos este script en python.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;script src=&quot;https://gist.github.com/2782461.js?file=Python&quot;&gt;
&lt;/script&gt;
Como podemos ver en el script se pregunta en que puerto esta conectado el arduino, y despues inicia ciclos para verificar que boton ha sido presionado segun la informacion que el arduino le envia a la pc.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Cada boton crea una impresion de una letra por el puerto serial, python la captura y decide que hacer.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;Flecha arriba : Aumentar volumen&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;Flecha Abajo : Bajar volumen&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;Flecha Izquierda: Devolver una cancion o reiniciarla&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;Flecha Derecha: Siguiente cancion&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;Start: iniciar el reproductor&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;Select: cerrar el reproductor&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;Boton B: detener la reproduccion actual&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;Boton A: cambiar entre pausado y reproducion.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i.imgur.com/mlz0d.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://i.imgur.com/mlz0d.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
He aquí una demostración en video:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/IbfwgJJWv3o?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blutintegrado.blogspot.com/feeds/3547137943961707661/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blutintegrado.blogspot.com/2012/05/proyecto-arduino.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/3547137943961707661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/3547137943961707661'/><link rel='alternate' type='text/html' href='http://blutintegrado.blogspot.com/2012/05/proyecto-arduino.html' title='Proyecto Arduino'/><author><name>Everardo medina</name><uri>http://www.blogger.com/profile/06546729504173814351</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibiBPjbY_uvBpNn5XjKtqrrjXsxrlFYUQ7nmg3qvPXjIMWJ2bCtGdAg64CtvfDwwjkvhPfMVZfnv9wt9cgHRrEXllc0hrl-xGR7m_BmoiJQ1oAnYXQhjwJriksWWkatFo/s220/20191016_235701.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDd3zQT2VjKaIJ1a2czUgrKZUfIXoFZQYw89Iiw4SpzqxB5xbEiraHH1h4WyDNW2m2CxfiAzDLEymPo2xBbGll_dTgsuO4_0cUYmvGZ3LT9j6boeV_JyLxuu_fmzToMSZtNyEOAKxnJWg-/s72-c/nes_pinout.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2537808901356183239.post-6509931136253858494</id><published>2012-05-22T08:58:00.001-07:00</published><updated>2012-05-22T08:59:40.501-07:00</updated><title type='text'>Proyecto PIC</title><content type='html'>Manipulación de un motor de corriente directa usando un microprocesador.&lt;br /&gt;
&lt;br /&gt;
Para este proyecto utilize un puente H ya que me ayudara a controlar el motor de corriente directa, y en &lt;a href=&quot;http://blutintegrado.blogspot.mx/2012/05/puente-h.html&quot;&gt;esta entrada&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Material.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQWDqOYItpBkItA55Zy7kh4ORnAL3vW5VZmBkqbaHboE2GhAGiWhcspT-2ZC18POgE7tUBWaFSeOkRaYV02vUiU4xrO5DeeUfr-oiI1X2y9hmT-tNJLiFvf-2IntUyqkOHD1zls2dncgcb/s1600/this.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQWDqOYItpBkItA55Zy7kh4ORnAL3vW5VZmBkqbaHboE2GhAGiWhcspT-2ZC18POgE7tUBWaFSeOkRaYV02vUiU4xrO5DeeUfr-oiI1X2y9hmT-tNJLiFvf-2IntUyqkOHD1zls2dncgcb/s200/this.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp; 1 motor de corriente directa.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://blutintegrado.blogspot.mx/2012/05/ci-78xx.html&quot;&gt;1 Circuito integrado regulador 7805&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://blutintegrado.blogspot.mx/2012/05/puente-h.html&quot;&gt;1 Puente H&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 2 interruptores push hold.&lt;/li&gt;
&lt;li&gt;&amp;nbsp; Cableado&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 1 PIC16F628A&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La mayor parte de como se controla con el puente H ya que es el que permite controlar la direccion del motor.&lt;br /&gt;
Por la parte del pic pensé en usarlo como si fuese ya un circuito tipico de uso industrial ya sea en maquinas o aparatos de mediano tamaño pero con tareas especificas, es decir un circuito en el cual su principal función es dar ciclos realizando una misma tarea.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
El motor que encontre es de un viejo reproductor de discos.&lt;/div&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; text-align: right;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgADDgUZRQUqk0OCdnS-D6jviTcJnUxSKkJw7TWxepryxVT6qt-SnW15_d865WJTDXGHdq-DVW4Ehgu_P2RHVByADAEQe5eTl7KNUJoTASUSJbMQLKJLNdAV400lp0bJW2M5swMchpFMQfL/s1600/IMG_20120522_101700.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgADDgUZRQUqk0OCdnS-D6jviTcJnUxSKkJw7TWxepryxVT6qt-SnW15_d865WJTDXGHdq-DVW4Ehgu_P2RHVByADAEQe5eTl7KNUJoTASUSJbMQLKJLNdAV400lp0bJW2M5swMchpFMQfL/s320/IMG_20120522_101700.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;abajo&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; text-align: left;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGdW8qM1aGH44G29WMBDfj-Pb4fbzIMEFRKqV5XiTV3i5FuRGaFzlP3HxfTuAMFDQye2OFWJqyZmMqa0HjJ8b9uJkRuXqlQjYLE_mmFvE3zlqYLvnz4EkAuQqVf0Iw7XC_KXrPyXhs_Cfz/s1600/IMG_20120522_101616.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGdW8qM1aGH44G29WMBDfj-Pb4fbzIMEFRKqV5XiTV3i5FuRGaFzlP3HxfTuAMFDQye2OFWJqyZmMqa0HjJ8b9uJkRuXqlQjYLE_mmFvE3zlqYLvnz4EkAuQqVf0Iw7XC_KXrPyXhs_Cfz/s320/IMG_20120522_101616.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;arriba&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;

&lt;br /&gt;
En realidad tiene dos motores, el que se supone hace girar los discos y el que mueve el lector óptico de arriba hacia abajo y viceversa. Pero usaré solo uno para propositos de muestra del funcionamiento del puente H y el PIC16F628A.&lt;br /&gt;
&lt;br /&gt;
El Codigo del PIC El codigo que estoy usando es realmente simple. En realidad tenia unas pocas &amp;nbsp;series randoms para el movimiento del motor, pero por alguna razón el pic no lograba ejecutarlas ni en la simulación..&lt;br /&gt;&lt;br /&gt;El pic logra mover el motor para ambas direcciones, aunque presenta un poco de fallos con la corriente electrica.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;

&lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/vUm-vqCaQmY&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blutintegrado.blogspot.com/feeds/6509931136253858494/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blutintegrado.blogspot.com/2012/05/proyecto-pic.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/6509931136253858494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/6509931136253858494'/><link rel='alternate' type='text/html' href='http://blutintegrado.blogspot.com/2012/05/proyecto-pic.html' title='Proyecto PIC'/><author><name>Everardo medina</name><uri>http://www.blogger.com/profile/06546729504173814351</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibiBPjbY_uvBpNn5XjKtqrrjXsxrlFYUQ7nmg3qvPXjIMWJ2bCtGdAg64CtvfDwwjkvhPfMVZfnv9wt9cgHRrEXllc0hrl-xGR7m_BmoiJQ1oAnYXQhjwJriksWWkatFo/s220/20191016_235701.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQWDqOYItpBkItA55Zy7kh4ORnAL3vW5VZmBkqbaHboE2GhAGiWhcspT-2ZC18POgE7tUBWaFSeOkRaYV02vUiU4xrO5DeeUfr-oiI1X2y9hmT-tNJLiFvf-2IntUyqkOHD1zls2dncgcb/s72-c/this.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2537808901356183239.post-2052126606444510375</id><published>2012-05-22T02:22:00.001-07:00</published><updated>2012-05-22T02:22:33.488-07:00</updated><title type='text'>Puente H</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;¿Qué es un puente H?&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
El puente H o puente en H es un circuito electrónico que permite a un motor eléctrico DC girar en ambos sentidos, avanzar y retrocerder.&lt;br /&gt;
Los puentes H ya vienen hechos en algunos circuitos integrados, pero también se &amp;nbsp;pueden construir a partir de componentes discretos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un puente H se construye con 4 interruptores (mécanicos o mediante transistores). Cuandos los interruptores S1 y S4 están cerrados ( S2 y S3 abiertos ) se aplica una tensión positiva en el motor, haciéndolo girar en un sentido. Abriendo los interruptores S1 y S4 ( cerrando S2 y S3 ), el voltaje se invierte, permitiendo el giro en sentido inverso del motor.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i.imgur.com/vNw8y.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;153&quot; src=&quot;http://i.imgur.com/vNw8y.png&quot; width=&quot;250&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Un puente H se usa para invertir el giro de un motor, pero también se puede usar para frenarlo de manera brusca, al hacer un corto entre las bornas del motor, o incluso puede usarse para permitir que el motor frene bajo su propia inercia, cuando desconectamos el motor de la fuente que lo alimenta.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Basicamente se puede hacer esto tomanto en cuenta las Sn&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpBBhz3EKTFLQKjY9xKgOrBR6a3eljVViJD-4pvycFM4TcHVTm194xc-itujdmeUH04TyPBSr1TMc_8wudbSG3hb-DoAQuPHrnDDexoq2NRVd6yCWL_0NNGmSYo92savhtytJegAwPzof6/s1600/SASSD.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpBBhz3EKTFLQKjY9xKgOrBR6a3eljVViJD-4pvycFM4TcHVTm194xc-itujdmeUH04TyPBSr1TMc_8wudbSG3hb-DoAQuPHrnDDexoq2NRVd6yCWL_0NNGmSYo92savhtytJegAwPzof6/s1600/SASSD.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
La forma más común de hacer un puente H es usando interruptores de estado sólido ( son llamados transistores ), puesto que sus tiempos de vida y frecuencias de conmutación son mucho más altas. En convertidores de potencia es impensable usar interruptores mecánicos, dado sus especificaciones tan embonables a los requerimientos.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Además los interruptores se acompañan de diodos que permitan a las corrientes circular en sentido inverso al previsto cada vez que se conmute la tensión puesto que el motor está compuesto por bobinados que durante varios períodos de tiempo se opondrán a que la corriente varié.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Ahora vemos un puente H creado comunmente.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i.imgur.com/MvedY.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;295&quot; src=&quot;http://i.imgur.com/MvedY.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;b&gt;¿Que se necesita?&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;2 transistores 2N2222 que son los que conmutaran las salidas.&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;4 transistores TIP31 los cuales actuaran como interruptores.&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;4 Diodos rectificadores para crear un puente de diodos a manera que limpien la señal analógica y se pueda usar el motor de corriente directa.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Relativamente es muy sencillo y los 2N2222 son los que ayudan como puentes para ver si se avanza o se retrocede.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;hr /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Ahora, como se menciono más arriba. El uso de transistores y del puente rectificador es necesario en sistemas que requieren manejar voltajes altos y movimientos precisos, pero como en mi caso estoy usando un maximo de 5V con 200 miliamperes y a falta de transistores utilizaré una implementación wannabe pero efectiva del puente H.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Para ello utilizaré:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;2 circuitos integrados NE555 para aprovechar sus flipflops como transistores&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;2 push o fuentes para crear interrupciones&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;2 diodos rectificadores 1N4004&amp;nbsp;&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;2 capacitores de .1 microFaradios&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;2 resistores de 220 Komhs&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;Algo de cable&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
El diagrama de conexiones seria algo así:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcQfckVm-ebY0k-apHNFKANQaTa8K0ikD7v9ZBFXf153pSEMP-1h3Vdts_JeBCj3JbUaKfkfVlp0ykiroGt5y78OjfNCqllozCsK0tWlEtMRM91NS820Q8xR4mCOdPjKE_DZUSn7IQBPfC/s1600/ESTO.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;165&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcQfckVm-ebY0k-apHNFKANQaTa8K0ikD7v9ZBFXf153pSEMP-1h3Vdts_JeBCj3JbUaKfkfVlp0ykiroGt5y78OjfNCqllozCsK0tWlEtMRM91NS820Q8xR4mCOdPjKE_DZUSn7IQBPfC/s400/ESTO.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Normalmente se usan reistencias pull-up si el disparador sera con negativo o pull-down si el disparador sera con positivo. Esto para que mande las señales de voltaje correctas, pero como el voltaje y amperaje que utilizaré son minimos, pués me di el lujo de utilizar resistores &quot;normales&quot;.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Ambas salidas del motor de corriente directa van a un 555 y el motor esta compartiendo señal mediante los diodos rectificadores, para regular que el voltaje sea similar en ambos lados, obviamente no al mismo tiempo.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Por ultimo puedo decir que al utilizar este tipo de puente H ( si es que se &amp;nbsp;le puede llamar asi ) también se pueden usar las 4 variaciones. Avanza,frena por inercia, frena bruscamente, retrocede.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Una vez armado nos quedaria más o menos de esta forma:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i.imgur.com/ClZp8.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;http://i.imgur.com/ClZp8.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://i.imgur.com/KMndC.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://i.imgur.com/KMndC.jpg&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i.imgur.com/VYLId.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;http://i.imgur.com/VYLId.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://i.imgur.com/cjOcN.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;http://i.imgur.com/cjOcN.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Solo faltaria conectar el motor a las terminales de ambos lados para que funcione.&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Y así es como se ensambla un puente H improvisado para motores tipicamente llamados &quot; de juguete &quot; que no son mas que motores de corriente directa.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blutintegrado.blogspot.com/feeds/2052126606444510375/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blutintegrado.blogspot.com/2012/05/puente-h.html#comment-form' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/2052126606444510375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/2052126606444510375'/><link rel='alternate' type='text/html' href='http://blutintegrado.blogspot.com/2012/05/puente-h.html' title='Puente H'/><author><name>Everardo medina</name><uri>http://www.blogger.com/profile/06546729504173814351</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibiBPjbY_uvBpNn5XjKtqrrjXsxrlFYUQ7nmg3qvPXjIMWJ2bCtGdAg64CtvfDwwjkvhPfMVZfnv9wt9cgHRrEXllc0hrl-xGR7m_BmoiJQ1oAnYXQhjwJriksWWkatFo/s220/20191016_235701.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpBBhz3EKTFLQKjY9xKgOrBR6a3eljVViJD-4pvycFM4TcHVTm194xc-itujdmeUH04TyPBSr1TMc_8wudbSG3hb-DoAQuPHrnDDexoq2NRVd6yCWL_0NNGmSYo92savhtytJegAwPzof6/s72-c/SASSD.png" height="72" width="72"/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2537808901356183239.post-1546958811705809729</id><published>2012-05-21T23:09:00.000-07:00</published><updated>2014-04-14T15:10:56.681-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Laboratorio"/><title type='text'>Interrupciones en arduino</title><content type='html'>&lt;b&gt;¿Que es una interrupción?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Las interrupciones se refieren al paro inmediato del funcionamiento común del sistema. Esto es muy útil para hacer que las cosas sucedan automáticamente en programas que sean sensibles a estados, también pueden ayudar con problemas de temporizadores.&amp;nbsp;También&amp;nbsp;puede&amp;nbsp;servir&amp;nbsp;para detener completa o parcialmente el sistema en caso de que algún evento especifico suceda.&lt;br /&gt;
&lt;br /&gt;
Un ejemplo de como utilizar estas interrupciones sería el de un lector de datos por ejemplo un sensor de temperatura. Suponiendo que al inicio del programa se toma lectura de la temperatura después se llama una función que cree la estadísticas, se empaqueta, se manda por algún protocolo seguro y después hace otra lectura. Ahora bien si llegamos a tener una aumento de temperatura inesperado queremos que tome esa temperatura y la&amp;nbsp;envíe, pero esto es un problema ya que el proceso de creación de estadística,&amp;nbsp;empaquetado&amp;nbsp;y&amp;nbsp;envió es tarado, más sin embargo si se le asigna una interrupción a la lectura de temperaturas el programa entero es &lt;i&gt;interrumpido &lt;/i&gt;y se ejecuta la lectura para&amp;nbsp;después&amp;nbsp;enviar los datos que son más importantes.&lt;br /&gt;
&lt;br /&gt;
También si tenemos un sistema que este enviando datos cualesquiera para monitorearlos, podemos asignar una&amp;nbsp;interrupción&amp;nbsp;que se accione con un&amp;nbsp;botón&amp;nbsp;para detener el programa y poder utilizar los datos, o para dejar de recibir más datos, según sea el caso.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;¿Cómo usar una&amp;nbsp;interrupción&amp;nbsp;con el arduino?&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
La mayoría de las placas arduino tienen dos interrupciones externas.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Interrupcion externa 0 : ( pin digital 2 )&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Interrupcion externa 1: ( pin digital 3 )&lt;br /&gt;
&lt;br /&gt;
Esto para el arduino UNO.&lt;br /&gt;
&lt;br /&gt;
Para usar interrupciones tenemos la&amp;nbsp;función:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;attachInterrupt( interrupcion, funcion, modo )&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;
Dicha función especifica que función se invoca cuando se produce una interrupcion externa, si ya existia una función adjuntada al pin se substituye por la nueva.&lt;br /&gt;
&lt;br /&gt;
Los parámetros de esta función son:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt; interrupcion&lt;/span&gt;:&lt;/b&gt; el número de la interrupción ( Es un &lt;b&gt;int&lt;/b&gt;&amp;nbsp;y puede ser 0 o 1 esto para asignar el pin a usar ).&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;&amp;nbsp; funcion&lt;/b&gt;:&lt;/span&gt; Es la función que se invocara cuando la interrupción suceda, esta funcion NO debe tener parametro NI tampoco devolver nada. Comunmente se le conoce como &amp;nbsp;&lt;i&gt;rutina de interrupción de servicio.&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;b style=&quot;color: blue;&quot;&gt;modo:&lt;/b&gt;&amp;nbsp;Esto define el criterio de la interrupción es decir cuando se considerara como interrupción. Existen 4 constantes predefinidas para poder usarlas como modos.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: yellow;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;LOW &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;Se dispara la interrupción cuando el pin tenga un valor bajo ( Cero&amp;nbsp;lógico&amp;nbsp;o LOW ).&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: yellow;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;CHANGE &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;Se dispara la interrupción cuando el pin se tenga un valor alto ( Uno lógico o HIGH ).&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: yellow;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;RISING &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;Se dispara la interrupción cuando el pin pase de valor bajo a alto ( LOW a HIGH | 0 a 1 ).&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: yellow;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;FALLING &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;Se dispara la interrupción cuando el pin pase de valor alto a bajo ( HIGH a LOW | 1 a 0 ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como dato queda decir que también se cuenta con funciones para activar o desactivar el uso de las interrupciones. Con tan solo usar la función &lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;n&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: blue; font-weight: bold;&quot;&gt;oInterrupts() &lt;/span&gt;se asegura de que no se interrumpa la porción de&amp;nbsp;código&amp;nbsp;que le sigue a esta función, también esta la función &lt;b style=&quot;color: blue;&quot;&gt;interrupts() &lt;/b&gt;que hace lo contrario, ya que permite las interrupciones.Esto puede ser útil dependiendo el caso y se maneja similar a los hilos y candados.&lt;br /&gt;
Podríamos&amp;nbsp;tener una&amp;nbsp;porción&amp;nbsp;de&amp;nbsp;código&amp;nbsp;así:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;void loop() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; noInterrupts();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FuncionCritica();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; funcionComun();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; funcionComun2();&lt;br /&gt;
&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
Ahora vemos como seria el diagrama de conexiones para realizar una prueba.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheXS6MJqauvJ3k7wPayITqc3_ZI3dP8xvcQdfJQP1-80ipQr9zyVcXLdmRAxOB0qhzub0Veuz2pXZTGll1ddoI5C6a1JeZG7udQnvi_EAn3Jx_nrnLGhNXID0G0kgw60ivScW1VfQtQ1qA/s1600/FRI.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheXS6MJqauvJ3k7wPayITqc3_ZI3dP8xvcQdfJQP1-80ipQr9zyVcXLdmRAxOB0qhzub0Veuz2pXZTGll1ddoI5C6a1JeZG7udQnvi_EAn3Jx_nrnLGhNXID0G0kgw60ivScW1VfQtQ1qA/s320/FRI.png&quot; height=&quot;213&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Basicamente es un push button, un led y un par de resistencias acomodadas de manera que &amp;nbsp;se puedan utilizar con el siguiente codigo.&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/everblut/2766946.js&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/2766946.js?file=Arduino&quot;&gt;&lt;/script&gt;
De no utilizar las interrupciones, el led tendria un comportamiento un poco raro, ya que pudiese no captar bien las señales que se le envian.&lt;br /&gt;
Esto es muy familiar respecto a los threads y los candados.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blutintegrado.blogspot.com/feeds/1546958811705809729/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blutintegrado.blogspot.com/2012/05/interrupciones-en-arduino.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/1546958811705809729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/1546958811705809729'/><link rel='alternate' type='text/html' href='http://blutintegrado.blogspot.com/2012/05/interrupciones-en-arduino.html' title='Interrupciones en arduino'/><author><name>Everardo medina</name><uri>http://www.blogger.com/profile/06546729504173814351</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibiBPjbY_uvBpNn5XjKtqrrjXsxrlFYUQ7nmg3qvPXjIMWJ2bCtGdAg64CtvfDwwjkvhPfMVZfnv9wt9cgHRrEXllc0hrl-xGR7m_BmoiJQ1oAnYXQhjwJriksWWkatFo/s220/20191016_235701.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheXS6MJqauvJ3k7wPayITqc3_ZI3dP8xvcQdfJQP1-80ipQr9zyVcXLdmRAxOB0qhzub0Veuz2pXZTGll1ddoI5C6a1JeZG7udQnvi_EAn3Jx_nrnLGhNXID0G0kgw60ivScW1VfQtQ1qA/s72-c/FRI.png" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2537808901356183239.post-8097303087088416326</id><published>2012-05-20T10:51:00.004-07:00</published><updated>2012-05-20T11:40:38.520-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Laboratorio"/><title type='text'>Sistemas operativos embebidos</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;¿Qué es un sistema operativo embebido?&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
Se puede definir como un sistema computacional que realiza una función espesifica o es diseñada con una aplicacion de software embebida. Dichos sistemas utilizan sistemas operativos en una ROM, tal como si fuera un disco duro en el uso de la pc.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;¿Qué hace bueno a un sistema operativo integrado?&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
Son modulares, escalables, altamente configurables, tienen soporte para CPU y aceptan controladores de dispositivos perifericos.&lt;br /&gt;
&lt;br /&gt;
Algunos ejemplos de estos sistemas operativos embebidos son:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;a href=&quot;http://i.imgur.com/HvcLb.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://i.imgur.com/HvcLb.jpg&quot; /&gt;&lt;/a&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;OS/2&lt;/span&gt;&lt;/b&gt; ( &lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;eComStation &lt;/span&gt;&lt;/b&gt;) Este sistema fue uno de los más usados para sistemas embebidos, empezo a utlizarse para cajeros automaticos pero ya no es común ver dichos cajeros con este tipo de sistema.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://i.imgur.com/EeyP7.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;110&quot; src=&quot;http://i.imgur.com/EeyP7.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;Windows CE&lt;/span&gt;&lt;/b&gt; Al igual que OS/2 también fue muy usado en cajeros automaticos, aunque también llego a utilizarse en sistemas de navegación por mapas y se utilizo en la videoconsola Dreamcast, la cual no fue muy buena.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://i.imgur.com/oy5Wm.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://i.imgur.com/oy5Wm.jpg&quot; width=&quot;158&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;Windows XP Embedded&lt;/span&gt;&lt;/b&gt; Es básicamente el sistema operativo windows XP pero con la fortuna de que se pueden elegir las funciones y servicios que se necesitan, este sistema operativo es el que usan cajeros automáticos, expendedores, puntos de venta, algunas consolas y maquinas de videojuegos.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://i.imgur.com/n8SAE.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://i.imgur.com/n8SAE.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;OSEK&lt;/b&gt;&lt;/span&gt; Este sistema es usado en un consorcio de empresas como un estandar abierto que rige la mitad de la industria automóvil, se puede ver en automóviles como los BMW, Chrysler, Opel o renault.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://i.imgur.com/DvTkB.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://i.imgur.com/DvTkB.png&quot; width=&quot;134&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;FreeBSD&lt;/span&gt;&lt;/b&gt; Este sistema operativo no es propio de sistemas embebidos, su versatilidad y su codigo abierto unix-like han permitido a la comunidad realizar proyectos para portarlo a sistemas embebidos.Satisfactoriamente se utiliza en televisores, routers, sistemas de seguridad y fue la base para CellOs.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i.imgur.com/58SkE.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;41&quot; src=&quot;http://i.imgur.com/58SkE.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;vxWorks&lt;/span&gt;&lt;/b&gt; Este sistema operativo es un poco diferente ya que pertenece a la rama de RTOS &amp;nbsp; (real time operating systems ) y se utiliza en muchos dispositivos destacando que fue usado para operar vehículos espaciales.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul&gt;

&lt;a href=&quot;http://i.imgur.com/O6RxM.gif&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;86&quot; src=&quot;http://i.imgur.com/O6RxM.gif&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;QNX&lt;/span&gt;&lt;/b&gt; Este sistema fue desarrollado escensialmente para sistemas embebidos y esta disponible para muchas arquitecturas, tiene la capacidad de instalarse diferentes window managers y proporciona características de estabilidad frente a fallos de perifericos y aplicaciones. QNX se utilizo tambien en el Dreamcast.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;a href=&quot;http://i.imgur.com/e9oWp.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href=&quot;http://i.imgur.com/e9oWp.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i.imgur.com/1tJ5z.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;115&quot; src=&quot;http://i.imgur.com/1tJ5z.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;LynxOS&lt;/b&gt;&lt;/span&gt; Este sistema junto con QNX pertenecen tambien a la familia de RTOS unix-like. Fue desarrollado con para su uso con una arquitectura de intel x86 y en su actualidad funciona con&amp;nbsp;arquitecturas ARM, MIPS y PowerPC.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;http://i.imgur.com/NAbPr.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;39&quot; src=&quot;http://i.imgur.com/NAbPr.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;Embedded Debian, básicamente son los paquetes de Debian optimizados para su uso con procesadores menos potentes, RAM de baja capacidad y aplicaciones espesificas. Este sistemas operativo embebido forma parte de los mas importantes bajo el yugo del nucleo linux, ya que es de los mas estables que contienen dicho nucleo.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;SALE&lt;/b&gt;&lt;/span&gt; Sonia Arch Linux Embedded, en marzo fue el release de la versión alfa/beta de este sistema operativo integrado. Dicho proyecto tiene un compilador de kernel customizado a partir de la distribución Arch Linux &amp;nbsp;y cuenta con la posibilidad de manejar el sistema como servidor, monitoreando el sistema via web, además de proximamente incluirle una versión de inteligencia artificial para su uso, muy prometedor y de codigo abierto.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i.imgur.com/s8Z6E.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;103&quot; src=&quot;http://i.imgur.com/s8Z6E.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;hr /&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;¿Por qué usar un sistema operativo embebido?&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Por que permite la multitarea y utilizar diferentes soluciones ya desarrolladas (dependiendo el sistema a usar ) para la solución de problemas, en vez de tener que desarrollar heurísticas para cada sistema embebido que se desarrolle. Son robustos y personalizables y tienen soporte en la web.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Consideraciones&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Cuando se va a usar un sistema operativo integrado se deben tener ciertas consideraciones, ¿Qué procesadores son soportados por el OS?, ¿qué necesidades tiene el kernel con respecto al sistema embebido?,¿Tiene soporte para los drivers de los perifericos que necesito?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blutintegrado.blogspot.com/feeds/8097303087088416326/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blutintegrado.blogspot.com/2012/05/sistemas-operativos-embebidos.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/8097303087088416326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/8097303087088416326'/><link rel='alternate' type='text/html' href='http://blutintegrado.blogspot.com/2012/05/sistemas-operativos-embebidos.html' title='Sistemas operativos embebidos'/><author><name>Everardo medina</name><uri>http://www.blogger.com/profile/06546729504173814351</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibiBPjbY_uvBpNn5XjKtqrrjXsxrlFYUQ7nmg3qvPXjIMWJ2bCtGdAg64CtvfDwwjkvhPfMVZfnv9wt9cgHRrEXllc0hrl-xGR7m_BmoiJQ1oAnYXQhjwJriksWWkatFo/s220/20191016_235701.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2537808901356183239.post-991892554724378946</id><published>2012-05-20T01:20:00.003-07:00</published><updated>2012-05-20T01:20:33.729-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Laboratorio"/><title type='text'>Gumstix</title><content type='html'>Los equipos Gumstix se concentran basicamente en dos productos: Gumstrix Overo y Gumstix Verdex. Ambos son SCBs ( single computer boards ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://i.imgur.com/iXrzl.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;131&quot; src=&quot;http://i.imgur.com/iXrzl.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;Dichos equipos ofrecen una amplia gama de funciones para procesar aplicaciones especificas de sistemas ubicuos, capacidad para almacenamiento externo en memorias microSD, implementacion de interfaces inalámbricas para Bluetooth y Wifi, comunicación por puerto de serie, puertos USB, puerto para ethernet. Dichas SCB estan implementadas con Linux para sistemas embebidos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Básicamente son ordenadores completos en una tarjeta.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://i.imgur.com/niWKm.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://i.imgur.com/niWKm.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://i.imgur.com/niWKm.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cuando recien se fueron desarrollando estas SCBs las gumstix Verdex presentaban un microprocesador Marvel XScale PXA270 que funcionaba a 400 o 600 MHz, contenian 128MB de memoria RAM.&lt;br /&gt;
&lt;br /&gt;
Las Overo tenian un procesador Texas Instruments OMAP 3505 que se ejecutaba a 750 MHz, contenia 256MB de RAM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ambas tarjetas usan sistemas Linux configuradas especificamente para sistemas embebidos, además se pueden agregar modulos adicionales a las SCBs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Gumstix SDK&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
Gumstix utiliza un framework de desarrollo llamado &lt;i&gt;OpenEmbedded &lt;/i&gt;para completar una compilación cruzada desde las builds del framework, al compilar dichas builds se transfieren el kernel y la imagen del root file system a la gumstix usando cualquier tipo de transferencia, ya sea por ethernet, tarjeta SD o por puerto Serie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;
&lt;a href=&quot;http://i.imgur.com/d7JKW.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;http://i.imgur.com/d7JKW.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;i&gt;- &lt;b&gt;OpenEmbedded&lt;/b&gt; -&lt;/i&gt;&lt;br /&gt;
&amp;nbsp;Este framework se utiliza para crear distribuciones (comunmente, pero no obligatoriamente) para sistemas embebidos. Este framework nace a partir de algunos builds de gentoo, y dicho framework se maneja desde git, ya que es open source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blutintegrado.blogspot.com/feeds/991892554724378946/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blutintegrado.blogspot.com/2012/05/gumstix.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/991892554724378946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/991892554724378946'/><link rel='alternate' type='text/html' href='http://blutintegrado.blogspot.com/2012/05/gumstix.html' title='Gumstix'/><author><name>Everardo medina</name><uri>http://www.blogger.com/profile/06546729504173814351</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibiBPjbY_uvBpNn5XjKtqrrjXsxrlFYUQ7nmg3qvPXjIMWJ2bCtGdAg64CtvfDwwjkvhPfMVZfnv9wt9cgHRrEXllc0hrl-xGR7m_BmoiJQ1oAnYXQhjwJriksWWkatFo/s220/20191016_235701.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2537808901356183239.post-7338865981263515168</id><published>2012-05-20T00:51:00.001-07:00</published><updated>2012-05-20T00:51:05.272-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Laboratorio"/><title type='text'>Raspberry Pi</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i.imgur.com/ibJDg.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;123&quot; src=&quot;http://i.imgur.com/ibJDg.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En Febrero del 2012 salio al mercado una placa SBC ( single board computer ) llamada raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;¿Qué es una SBC, qué es la raspberry pi?&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
Una Single Board Computer es una computadora completa en un sólo circuito, básicamente esta constituida por un microprocesador con memoria RAM, Entradas y Salidas y demás características de un pc cualquiera.&lt;br /&gt;
Una SBC no es óptima para el uso cotidiano, más se utiliza para entornos de la industria o para aprendizaje sobre sistemas embebidos en el area de ciencia, tecnológia y electrónica.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i.imgur.com/6pMlo.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;202&quot; src=&quot;http://i.imgur.com/6pMlo.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Raspberry Pi contiene un procesador ARM1176JZF-S que corre a 700Mhz, contiene 256MB de memoria RAM y tiene ranura para una tarjeta SD para el almacenamiento externo.&lt;br /&gt;
Comunmente se le incluye el sistema operativo GNU/Linux o RISC OS.&lt;br /&gt;
&lt;br /&gt;
Dicha placa contiene gran potencial a bajo coste, estas son sus especificaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLhO1xqdxWuJYQAtXnffh8NLuMS-IdrJXo6RWL-Pe2kq8KUJD0OQW3jGfjusptkRcWPZBEMUlSD9ath6_CWayxQDeq68x9vAf-uoJqRxii3VwzUhEv8XaauZAz_EDJIMN6kscLWK4yVDSG/s1600/asdasd.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLhO1xqdxWuJYQAtXnffh8NLuMS-IdrJXo6RWL-Pe2kq8KUJD0OQW3jGfjusptkRcWPZBEMUlSD9ath6_CWayxQDeq68x9vAf-uoJqRxii3VwzUhEv8XaauZAz_EDJIMN6kscLWK4yVDSG/s320/asdasd.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i.imgur.com/fEQvB.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://i.imgur.com/fEQvB.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;El primer prototipo de la raspberry era muy pequeño y contenia solo 1 puerto USB y 1 puerto HDMI. En su fase de pruebas ya era capaz de ejecutar un entorno operativo demostrando que usar Debian con escritorio ligero era facil.&lt;br /&gt;También se hicieron pruebas con el HDMI ejecutando un video full HD a traves de dicha salida.&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Esta placa principalmente es promovida por sus desarrolladores para promover el aprendizaje en python, C, BASIC y perl principalmente.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blutintegrado.blogspot.com/feeds/7338865981263515168/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blutintegrado.blogspot.com/2012/05/raspberry-pi.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/7338865981263515168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/7338865981263515168'/><link rel='alternate' type='text/html' href='http://blutintegrado.blogspot.com/2012/05/raspberry-pi.html' title='Raspberry Pi'/><author><name>Everardo medina</name><uri>http://www.blogger.com/profile/06546729504173814351</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibiBPjbY_uvBpNn5XjKtqrrjXsxrlFYUQ7nmg3qvPXjIMWJ2bCtGdAg64CtvfDwwjkvhPfMVZfnv9wt9cgHRrEXllc0hrl-xGR7m_BmoiJQ1oAnYXQhjwJriksWWkatFo/s220/20191016_235701.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLhO1xqdxWuJYQAtXnffh8NLuMS-IdrJXo6RWL-Pe2kq8KUJD0OQW3jGfjusptkRcWPZBEMUlSD9ath6_CWayxQDeq68x9vAf-uoJqRxii3VwzUhEv8XaauZAz_EDJIMN6kscLWK4yVDSG/s72-c/asdasd.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2537808901356183239.post-2704350213530146452</id><published>2012-05-19T00:48:00.002-07:00</published><updated>2012-05-19T00:51:45.439-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Laboratorio"/><title type='text'>CI 78xx</title><content type='html'>&lt;a href=&quot;http://i.imgur.com/oYbgM.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://i.imgur.com/oYbgM.jpg&quot; width=&quot;120&quot; /&gt;&lt;/a&gt;La familia de circuitos integrados 78xx son conocidos como reguladores de voltaje positivo de triple terminal.&lt;br /&gt;
Dichos reguladores son muy usados y comercializados por que su principal funcion es regular el voltaje para poder utilizar con mayor seguridad los componentes electronicos de los proyectos.&lt;br /&gt;
&lt;br /&gt;
Su maximo amperaje de salida es de 1Ampere, dependiendo del modelo pueden manejar salidas de voltaje de 5,6,8,9,10,12,15,18,24V segun sea el caso.&lt;br /&gt;
Cuentan con un protector termico de emergencia, aunque aún asi llegan a calentarse demasiado.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Rangos de capacidad para la familia 78xx&lt;/b&gt;&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBQuyYxfsShyphenhyphenfpKxfK5IcGdoMpuj1gPLjcKD7K2S01xR84cyqwG7SeUIS4Lpq7m2ZWrCJwWp_X5w9IOVel7tyBGRRNZWX0lVx1FlfRnAja-bap3Ig2xW4dehUyiKTjeA0aYg3wMsWZ3Loa/s1600/SHE.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;106&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBQuyYxfsShyphenhyphenfpKxfK5IcGdoMpuj1gPLjcKD7K2S01xR84cyqwG7SeUIS4Lpq7m2ZWrCJwWp_X5w9IOVel7tyBGRRNZWX0lVx1FlfRnAja-bap3Ig2xW4dehUyiKTjeA0aYg3wMsWZ3Loa/s400/SHE.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;http://i.imgur.com/X28Lr.gif&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;190&quot; src=&quot;http://i.imgur.com/X28Lr.gif&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
Dichos CI tienen tres terminales, &lt;span style=&quot;color: red;&quot;&gt;voltaje de entrada&lt;/span&gt;, &lt;b&gt;tierra&lt;/b&gt; y &lt;span style=&quot;color: red;&quot;&gt;voltaje de salida&lt;/span&gt;.&lt;br /&gt;
La tensión de salida depende del modelo, como por ejemplo el modeo 7805 logra regular voltaje a 5V de corriente directa, lo cual lo hace muy común para suplir los TTLs ya que es el voltaje requerido por la gran mayoria de ellos.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Esta tabla nos dice la entrada y salida de voltajes dependiendo el modelo de CI que usemos.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU2J44JNk5zaTF3DB_VLE1ND4Kaz4-p6DG0trwu40uEkmj-8az_Wkn1pWY5rv-0PmtP_a1Gc_LAJl7udl5mQJhd9OaVodwiSPmdxjPAXrBL49K-5K4ccJ0DNta0nSDhBx10zEWkXLJqBW_/s1600/ASL.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;143&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU2J44JNk5zaTF3DB_VLE1ND4Kaz4-p6DG0trwu40uEkmj-8az_Wkn1pWY5rv-0PmtP_a1Gc_LAJl7udl5mQJhd9OaVodwiSPmdxjPAXrBL49K-5K4ccJ0DNta0nSDhBx10zEWkXLJqBW_/s400/ASL.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Una recomendación personal es tener cuidado cuando se usa este tipo de reguladores, ya que siguen la ley de la conservación de la energia.&lt;br /&gt;
Entran &lt;b&gt;P&lt;/b&gt; volts , salen &lt;b&gt;Q&lt;/b&gt; volts, y la diferencia &lt;b&gt;P - Q = X&lt;/b&gt;, donde &lt;b&gt;X&lt;/b&gt; es el calor que emite el Circuito.</content><link rel='replies' type='application/atom+xml' href='http://blutintegrado.blogspot.com/feeds/2704350213530146452/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blutintegrado.blogspot.com/2012/05/ci-78xx.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/2704350213530146452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/2704350213530146452'/><link rel='alternate' type='text/html' href='http://blutintegrado.blogspot.com/2012/05/ci-78xx.html' title='CI 78xx'/><author><name>Everardo medina</name><uri>http://www.blogger.com/profile/06546729504173814351</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibiBPjbY_uvBpNn5XjKtqrrjXsxrlFYUQ7nmg3qvPXjIMWJ2bCtGdAg64CtvfDwwjkvhPfMVZfnv9wt9cgHRrEXllc0hrl-xGR7m_BmoiJQ1oAnYXQhjwJriksWWkatFo/s220/20191016_235701.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBQuyYxfsShyphenhyphenfpKxfK5IcGdoMpuj1gPLjcKD7K2S01xR84cyqwG7SeUIS4Lpq7m2ZWrCJwWp_X5w9IOVel7tyBGRRNZWX0lVx1FlfRnAja-bap3Ig2xW4dehUyiKTjeA0aYg3wMsWZ3Loa/s72-c/SHE.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2537808901356183239.post-3016795423059989924</id><published>2012-05-19T00:09:00.001-07:00</published><updated>2012-05-19T00:10:06.212-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Laboratorio"/><title type='text'>Placas con microcontroladores embebidos.</title><content type='html'>Para revolucionar el uso de los microcontroladores a principios de los 70&#39;s se empezaron a fabricar placas con microcontroladores embebidos y que fueran accesibles y faciles de usar para dedicarle tareas relativamente pequeñas a comparación de las tareas de un computador.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Dichas placas nos proporcionan de todos los circuitos necesarios para tareas de control comunes como entradas y salidas, generador de pulsos de reloj, acceso a la RAM, y obviamente para uso de un microprocesador.&lt;br /&gt;
&lt;br /&gt;
La mayoria de estas placas se utilizan para hacer desarrollos mas eficientes y rapidos sin gastar tiempo ensamblando el hardware de control.&lt;br /&gt;
&lt;br /&gt;
Como estas placas son relativamente baratas y no se necesita demasiado conocimiento para realizar desarrollos pues normalmente se utilizan para la rama academica.

Ahora hablare sobre diferentes placas y sus especificaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;nbsp;

&lt;b&gt;Arduino&lt;/b&gt;&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;http://arduino.cc/en/uploads/Main/ArduinoUno_r2_front450px.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;224&quot; src=&quot;http://arduino.cc/en/uploads/Main/ArduinoUno_r2_front450px.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;Es una plataforma de desarrollo que contiene un microcontrolador embebido y un entorno para crear software para la placa. Dicha placa la puedes montar tu mismo o comprarla lista para usar.&lt;br /&gt;
Arduino está basado en los microcontroladores &lt;i&gt;atmega&lt;/i&gt;, en mi caso estoy familiarizado con el chip &lt;i&gt;atmega328&lt;/i&gt;&amp;nbsp;ya que esta incluido en el arduino UNO.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Las especificaciones de dicho controlador son:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZHMW1MIUVnOT6aYYXff4iokFduO1HEfhnU5XhrnSPebFOCyfh7LnNWx8Rb5tMsWhAIHK_cuc5YpNAWCghOx5hcoM2TXnQmLzP4hbMf6ioX78jMi4AB1xj2vRov9MBTZZc-iCfXyZKbE54/s1600/Screenshot+at+2012-03-27+05:40:23.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;190&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZHMW1MIUVnOT6aYYXff4iokFduO1HEfhnU5XhrnSPebFOCyfh7LnNWx8Rb5tMsWhAIHK_cuc5YpNAWCghOx5hcoM2TXnQmLzP4hbMf6ioX78jMi4AB1xj2vRov9MBTZZc-iCfXyZKbE54/s320/Screenshot+at+2012-03-27+05:40:23.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Netduino&lt;/b&gt;&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i.imgur.com/C3SCU.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;232&quot; src=&quot;http://i.imgur.com/C3SCU.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Esta placa de desarrollo es para desarrollo exclusivo de un framework de la plataforma .NET y se podría decir que es una copia mejorada ( según el punto de vista personal ) del arduino duemilanove.&lt;br /&gt;
Esta placa utiliza microcontroladores ATMEL de 32 bits con una potencia de 48MHZ, y cabe destacar que esta placa es compatible con el arduino y gracias al SDK de .NET es posible desarrollar para este tipo de placas muy facilmente.&lt;br /&gt;
Practicamente la magia del netduino reside en su capacidad para debuggear los codigos y su mayor capacidad de memoria y frecuencia. Eso si, es más costoso.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjspMf0wap_LbWpIvsPDYsWQv_ecF83SxRCR6HyaHv3WsubhVCreqFXjmSr1A7hr3LZA0KD6ykkiQ9Mg6ozNDKxRx_ikugk-619rwMVxaXnGkfdfGAksGKRNQz-wb-fYaswGur_myeYQ6tm/s1600/Screenshot+from+2012-05-18+21:03:56.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjspMf0wap_LbWpIvsPDYsWQv_ecF83SxRCR6HyaHv3WsubhVCreqFXjmSr1A7hr3LZA0KD6ykkiQ9Mg6ozNDKxRx_ikugk-619rwMVxaXnGkfdfGAksGKRNQz-wb-fYaswGur_myeYQ6tm/s1600/Screenshot+from+2012-05-18+21:03:56.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blutintegrado.blogspot.com/feeds/3016795423059989924/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blutintegrado.blogspot.com/2012/05/placas-con-microcontroladores-embebidos.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/3016795423059989924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/3016795423059989924'/><link rel='alternate' type='text/html' href='http://blutintegrado.blogspot.com/2012/05/placas-con-microcontroladores-embebidos.html' title='Placas con microcontroladores embebidos.'/><author><name>Everardo medina</name><uri>http://www.blogger.com/profile/06546729504173814351</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibiBPjbY_uvBpNn5XjKtqrrjXsxrlFYUQ7nmg3qvPXjIMWJ2bCtGdAg64CtvfDwwjkvhPfMVZfnv9wt9cgHRrEXllc0hrl-xGR7m_BmoiJQ1oAnYXQhjwJriksWWkatFo/s220/20191016_235701.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZHMW1MIUVnOT6aYYXff4iokFduO1HEfhnU5XhrnSPebFOCyfh7LnNWx8Rb5tMsWhAIHK_cuc5YpNAWCghOx5hcoM2TXnQmLzP4hbMf6ioX78jMi4AB1xj2vRov9MBTZZc-iCfXyZKbE54/s72-c/Screenshot+at+2012-03-27+05:40:23.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2537808901356183239.post-4791016387156013445</id><published>2012-03-18T17:38:00.004-07:00</published><updated>2012-03-23T13:44:46.448-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ensamblador"/><category scheme="http://www.blogger.com/atom/ns#" term="Laboratorio"/><title type='text'>Verificando la optimización</title><content type='html'>Seré breve y solo les comentaré sobre una de las maneras de probar si el código realmente se está optimizando.&lt;br /&gt;
&lt;br /&gt;
Utilizando el comando &lt;b&gt;time &lt;/b&gt;que forma parte de los sistemas &lt;i&gt;Unix-like &lt;/i&gt;podemos conseguir el tiempo que tarda en ejecutarse nuestro programa.&lt;br /&gt;
Esto incluye el tiempo real de computo(&lt;span style=&quot;color: #0b5394;&quot;&gt; &lt;i&gt;tiempo total de ejecucción&lt;/i&gt;&lt;/span&gt; ), el tiempo de usuario ( &lt;i&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;es el tiempo que tarda en los calculos y las llamadas al kernel&lt;/span&gt;&lt;/i&gt; ) y el tiempo de uso del sistema ( &lt;i&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;solo las llamadas al kernel&lt;/span&gt;&lt;/i&gt; ).&lt;br /&gt;
Podemos decir que cuando un programa esta haciendo iteraciones se esta acumulando &lt;i&gt;tiempo de usuario &lt;/i&gt;solamente.&lt;br /&gt;
&lt;br /&gt;
El resultado se nos despliega con&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: #990000;&quot;&gt;0&lt;/span&gt;m&lt;span style=&quot;color: #b45f06;&quot;&gt;0&lt;/span&gt;.&lt;span style=&quot;color: #38761d;&quot;&gt;000&lt;/span&gt;s&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;color: #990000;&quot;&gt;minutos&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;color: #b45f06;&quot;&gt;segundos&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;color: #38761d;&quot;&gt;milisegundos&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;color: #38761d;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;color: #38761d;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
El manual nos dice que el uso de este comando es de la siguiente forma:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;time [options] command [arguments...]&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
para este caso solo nos interesan los tiempos así que no le daremos opciones.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Ejemplo:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;pre class=&quot;brush: c; gutter: true; toolbar: false&quot;&gt;int main(int argi,char *argv[]){                                                
  argi = 0;                                                                     
  puts(&quot;Inicio&quot;);                                                               
  while(!(argi == 1000000)){                                                    
      puts(&quot;Love,Love,Love&quot;);                                                   
      argi++;                                                                   
  }                                                                             
  puts(&quot;final&quot;);   
  return 0;                                                             
}
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
usaremos este codigo que imprime 1 millón de veces una cadena de caracteres.&lt;br /&gt;
Lo compararemos con este código que hace lo mismo, pero escrito en assembly con sintaxis de Intel.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: bash; gutter: true; toolbar: false&quot;&gt;section .data

hello:  db &#39;Inicio&#39;,10,13 
slong:  equ $-hello

notDone: db &#39;Love, Love, Love&#39;,10,13
notlong: equ $-notDone

done:  db &#39;final&#39;,10,13
donelong: equ $-done

 section .text
 global main 
main:
 mov eax,4
 mov ebx,1
 mov ecx,hello
 mov edx,slong
 int 0x80

 xor ecx,ecx

loop:
 push ecx
 mov eax,4
 mov ebx,1
 mov ecx,notDone
 mov edx,notlong
 int 0x80

 pop ecx
 add ecx,1
 cmp ecx,1000000  ;cantidad de ciclos
 jl loop

theend:
 mov eax,4
 mov ebx,1
 mov ecx,done
 mov edx,donelong
 int 0x80
&lt;/pre&gt;
&lt;br /&gt;
Utilizamos el comando time de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;color: #45818e;&quot;&gt;*mande la salida de datos hacia /dev/null&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;para evitar ver el millon de impresiones en pantalla*&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;color: #45818e;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: bash; gutter: true; toolbar: false&quot;&gt;&lt;b&gt;time ./cicloAssembly &amp;gt; /dev/null&amp;nbsp; &lt;/b&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i.imgur.com/p29Q4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;131&quot; src=&quot;http://i.imgur.com/p29Q4.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: bash; gutter: true; toolbar: false&quot;&gt;&lt;b&gt;time ./cicloC &amp;gt; /dev/null
&lt;/b&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i.imgur.com/pKflZ.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;147&quot; src=&quot;http://i.imgur.com/pKflZ.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Es obvio cual es mas eficiente, ¿no?.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Esto sucede porque el codigo en assembly hace una system call en cada ciclo, es decir realiza &lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;un millón &lt;/b&gt;&lt;/span&gt;de llamadas al kernel. Sumando ese millón de llamadas al kernel a las veces que ese proceso sufrio de un switch context, page faults o fue manipulado por el scheduler nos da un tiempo relativamente largo.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
El ejecutable de C es mucho muy rapido por el simple hecho de no hacer llamadas al &amp;nbsp;kernel.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Ahora usare el comando &lt;b&gt;gcc -S ciclo.c &amp;nbsp;&lt;/b&gt;y eliminare todas las lineas del GDB para despues compilarlo y apreciar si eliminando las lineas de debuggeo se logra optimizar un poco el ejecutable.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
El codigo assembly quedo asi ( sin lineas de debuggeo )&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;pre class=&quot;brush: bash; gutter: true; toolbar: false&quot;&gt;.LC0:
 .string &quot;Inicio&quot;
.LC1:
 .string &quot;Love,Love,Love&quot;
.LC2:
 .string &quot;final&quot;
 .text
 .globl main
 .type main, @function
main:
.LFB0:
 pushl %ebp
 movl %esp, %ebp
 andl $-16, %esp
 subl $32, %esp
 movl $0, 28(%esp)
 movl $.LC0, (%esp)
 call puts
 jmp .L2
.L3:
 movl $.LC1, (%esp)
 call puts
 addl $1, 28(%esp)
.L2:
 cmpl $1000000, 28(%esp)
 jne .L3
 movl $.LC2, (%esp)
 call puts
 movl $0, %eax
 leave
 ret
&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: c; gutter: true; toolbar: false&quot;&gt;&lt;b&gt;time ./cicloCtoASM &amp;gt; /dev/null
&lt;/b&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i.imgur.com/12f7n.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;125&quot; src=&quot;http://i.imgur.com/12f7n.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Ahora vemos 2 cosas interesantes.&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;El tiempo de usuario no cambio, es decir que para dicho programa queda claro que el tiempo que tarda en imprimir un millón de veces la cadena de caracteres es de 77 milisegundos y el tiempo real solo difiere de 1 milisegundo lo cual puede ser causa del scheduler.&lt;/li&gt;
&lt;li&gt;A pesar de ser un programa en assembly no se realizaron llamadas al kernel, es decir que como podemos ver en el codigo, solo se estan llamando las funciones del lenguaje C.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Con estas pruebas podemos darnos cuenta que el codigo assembly escrito desde scratch puede llegar a ser muy pesado y no tan eficiente en terminos de velocidad de ejecucción mas sin embargo es mas versatil porque puede utilizar alrededor de 190 system calls diferentes, ademas que se puede ver que el hecho de traducir el codigo de C hacia Assembly no quiere decir que este será reducido al nivel mas bajo de integración con el procesador.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Por mi parte mi tarea sobre lenguaje ensamblador no fue en pro de una optimización, fue dirigida hacia el uso de las system calls, pero para aquellos que buscaban optimización esta entrada puede ser útil.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Como recomendación: si quieren velocidad utilizen el puts() ya que es mucho mas rapido que el printf. Verifiquen el codigo.s si le llegan a poner mas de 1 millón de iteraciones en su codigo de C, por alguna extraña razón el codigo.s quedaba sin delimitantes haciendo un loop infinito, y también si llegan a usar un trillón de iteraciones no duden en irse por un café&amp;nbsp;&lt;strike&gt;true story&lt;/strike&gt;.&lt;br /&gt;
&lt;br /&gt;
Referencia:&lt;br /&gt;
&lt;a href=&quot;http://www.ciselant.de/projects/gcc_printf/gcc_printf.html&quot;&gt;printf versus puts&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blutintegrado.blogspot.com/feeds/4791016387156013445/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blutintegrado.blogspot.com/2012/03/verificando-la-optimizacion.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/4791016387156013445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/4791016387156013445'/><link rel='alternate' type='text/html' href='http://blutintegrado.blogspot.com/2012/03/verificando-la-optimizacion.html' title='Verificando la optimización'/><author><name>Everardo medina</name><uri>http://www.blogger.com/profile/06546729504173814351</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibiBPjbY_uvBpNn5XjKtqrrjXsxrlFYUQ7nmg3qvPXjIMWJ2bCtGdAg64CtvfDwwjkvhPfMVZfnv9wt9cgHRrEXllc0hrl-xGR7m_BmoiJQ1oAnYXQhjwJriksWWkatFo/s220/20191016_235701.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2537808901356183239.post-6178200249569774122</id><published>2012-03-03T13:55:00.003-08:00</published><updated>2012-03-03T13:58:32.712-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Laboratorio"/><category scheme="http://www.blogger.com/atom/ns#" term="PICS"/><title type='text'>Recursos adicionales de los microcontroladores</title><content type='html'>Independientemente de su arquitectura basica los microcontroladores incorporan recursos especificos a su modelo.&lt;br /&gt;
&lt;br /&gt;
Algunos de ellos son:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Temporizadores.&lt;/li&gt;
&lt;li&gt;Sensores guardianes.&lt;/li&gt;
&lt;li&gt;Protectores contra fallo de alimentación.&lt;/li&gt;
&lt;li&gt;Estado de reposo.&lt;/li&gt;
&lt;li&gt;Conversor alterna a directa o directa hacia alterna.&lt;/li&gt;
&lt;li&gt;Comparador analógico.&lt;/li&gt;
&lt;li&gt;Modulador de anchura de pulsos (PWM)&lt;/li&gt;
&lt;li&gt;Puertos de entrada y salida digitales.&lt;/li&gt;
&lt;li&gt;Puertos de comunicación.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Temporizadores.&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right; text-align: right;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://i.imgur.com/cvKa2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;http://i.imgur.com/cvKa2.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Timer 555 ejemplo de temporizador&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Se utilizan para controlar periodos de tiempo y llevan por lo general un contador de las instrucciones que succeden mediante E/S.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Para medir los tiempos, se carga un registro con el valor adecuado y a continuación dicho valor se va incrementando o decrementando al ritmo de los pulsos de reloj o algún múltiplo hasta que se desborde o llegue a 0, que es justo cuando se produce el aviso. Los contadores por lo general estan en alguna de las patitas del microcontrolador, y se va llenando un registro al igual que con el temporizador.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Sensores guardianes&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: left; margin-right: 1em; text-align: left;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://i.imgur.com/ie3L2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://i.imgur.com/ie3L2.jpg&quot; width=&quot;170&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Tambíen son llamados &lt;b&gt;&lt;i&gt;Watchdogs&lt;/i&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
En una computadora personal suele suceder que por un fallo del software se bloquea la computadora, y para que vuelva a funcionar tenemos que reiniciar el sistema. Un microcontrolador debe funcionar sin un supervisor y de forma continua mientras se le suministre corriente. El sensor guardián consiste en un temporizador que, cuando se desborda y para por 0, se provoca un reset automáticamente en el sistema. Los sistemas deben diseñar un programa que controle la tarea de forma que se refresque el sensor guardián antes de que provoque un reset, si el programa falla no se refresca el sensor guardiánm y al completar el ciclo, fallara hasta provocar un reset.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Protector contra fallo de alimentación&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Es un circuito simple que resetea al microcontrolador cuando el voltaje de alimentacion ( comunmente el VDD ) es inferior al voltaje mínimo. Mientras el voltaje de alimentación sea inferior al minimo el dispositivo se mantiene reseteado, comenzando a funcionar hasta que se sobrepasa ese valor.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Estado de reposo.&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
En muchas ocasiones los microcontroladores estan diseñados para esperar sin hacer nada hasta que se produzca algún acontecimiento externo que lo pongo a funcionar. Para ahorrar energía, los microcontroladores disponen de una instrucción especial ( conocido como &lt;i&gt;SLEEP&lt;/i&gt; ), que les pasa al estado de reposo o de bajo consumo, en el cual los requerimientos de potencia son mínimos. Dicho estado detiene el reloj principal y detiene sus circuitos asociados, quedando sumido en un sueño electronico. Al activarse una interrupción ocasionada por un acontecimiento el microcontrolador se despierta e inicia su trabajo.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Conversor A/D y D/A&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Los microcontroladores pueden tener un conversor analógico a digital para procesar señales analógicas utilizando un multiplexor que permite aplicar a la entrada del conversor diversas señales desde las patitas analógicas de los circuitos integrados.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
El conversor de datos digitales obtiene dichos datos del procesamiento de una computadora en su correspondiente señal analógica que saca al exterior por una de las patitas de la cápsula. La gran mayoria de los microcontroladores disponen de estos conversores para poder trabajar con la corriente electrica y señales.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Comparador analógico&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: left; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://i.imgur.com/m7kER.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;114&quot; src=&quot;http://i.imgur.com/m7kER.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Compración logica.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Por lo general los comparadores analógicos estan internamente agregados a los microcontroladores, los cuales disponen de un amplifícador operacional que actúa como comparador entre una señal fija de referencia y otra variable que se aplica por una de las patitas. La salida del comparador proporciona un nivel lógico 1 o 0 según una señal sea mayor o menor que la otra. También hay modelos de microcontroladores con un módulo de tensión de referencia que proporciona diversas tensiones de referencia que se pueden aplicar en los comparadores.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Modulador de anchura de pulso (PWM)&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: left; margin-right: 1em; text-align: left;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://i.imgur.com/zm2Nv.gif&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;101&quot; src=&quot;http://i.imgur.com/zm2Nv.gif&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Ancho regulador con salida PWM&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Estos circuitos permiten una salida de pulsos de anchura variable, es decir que se ofrecen al exterior a través de las patitas del microcontrolador una serie de salidas regulables analógicamente, para darle una cantidad especifíca de corriente.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Puertos de entrada y salida digitales&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right; text-align: right;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://i.imgur.com/j7pgN.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;183&quot; src=&quot;http://i.imgur.com/j7pgN.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Basicamente es un interruptor&lt;br /&gt;
que decide si seran Entradas&lt;br /&gt;
o Salidas.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Estos puertos se agrupan por lo general en grupos de ocho en ocho formando puertos. Las líneas digitales de los puertos pueden configurarse como entrada o salida cargando un 1 o un 0 en el bit correspondiente de un registro destinado a la configuración.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Puertos de comunicación&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Para poder comunicar el microcontrolador de la posibilidad de comunicarse con otros dispositivos, otros buses de microprocesadores, sistemas, redes y poder adaptarlos con otros elementos bajo protocolos especifícos, algunos modelos de microcontroladores le proporcionan recursos que permiten dichas tareas.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Algunos son:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;UART &lt;/b&gt;( adaptador de comunicación serie asíncrona ). El cual tiene como objetivo convertir los datos recibidos del bus del microcontrolador en formato paralelo, a un formato serie que será utilizado en la transmisión hacia el exterior.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;USART&lt;/b&gt; ( adaptador de comunicación serie síncrona y asíncrona ). El cual es una puerta paralela esclava para poder conectarse con los buses de otros microprocesadores.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;USB &lt;/b&gt;( Universal serial bus ). El cual es el adaptador de comunicaciones síncronas y asíncronas mas moderno actualmente.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;CAN&lt;/b&gt;&amp;nbsp;( Red de area del controlador ). El cual permite la adaptación con redes de conexionado multiplexado para el cableado de dispositivlos automóviles por ejemplo.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Referencias.&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://blog.bricogeek.com/noticias/arduino/como-utilizar-watchdog-con-arduino/&quot;&gt;Watchdog&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://www.masadelante.com/faqs/usb&quot;&gt;Serial bus&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://www.fimee.ugto.mx/profesores/gcerda/documentos/&quot;&gt;Pagina del doctor Gustavo Cerda&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blutintegrado.blogspot.com/feeds/6178200249569774122/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blutintegrado.blogspot.com/2012/03/recursos-adicionales-de-los.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/6178200249569774122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/6178200249569774122'/><link rel='alternate' type='text/html' href='http://blutintegrado.blogspot.com/2012/03/recursos-adicionales-de-los.html' title='Recursos adicionales de los microcontroladores'/><author><name>Everardo medina</name><uri>http://www.blogger.com/profile/06546729504173814351</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibiBPjbY_uvBpNn5XjKtqrrjXsxrlFYUQ7nmg3qvPXjIMWJ2bCtGdAg64CtvfDwwjkvhPfMVZfnv9wt9cgHRrEXllc0hrl-xGR7m_BmoiJQ1oAnYXQhjwJriksWWkatFo/s220/20191016_235701.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2537808901356183239.post-5634046983916926107</id><published>2012-03-01T09:49:00.001-08:00</published><updated>2012-03-23T13:47:33.982-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Laboratorio"/><category scheme="http://www.blogger.com/atom/ns#" term="PICS"/><title type='text'>Lo basico de un microcontrolador</title><content type='html'>&lt;br /&gt;
Un microcontrolador es un circuito integrado de alta escala de integracion&lt;br /&gt;
que incorpora la mayor parte de los elementos que configuran un controlador, dicho&amp;nbsp;controlador el dispositivo que se emplea para el gobierno de uno o varios procesos.&lt;br /&gt;
&lt;br /&gt;
Un microcontrolador dispone por lo general de lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Unidad central de procesamiento.&lt;/li&gt;
&lt;li&gt;Memoria RAM para los datos que se contendran.&lt;/li&gt;
&lt;li&gt;Memoria [ ROM | PROM | EPROM ] para el programa.&lt;/li&gt;
&lt;li&gt;Linea de Entrada/Salida para comunicacion exterior.&lt;/li&gt;
&lt;li&gt;Modulos de control de perifericos&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Generadores de pulsos de reloj para la sincronizacion del sistema.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
Las ventajas de usar los microcontroladores son muchas, como por ejemplo el aumento de control sobre los elementos que lo utilizan, la mayor flexibilidad con sus modulos de memoria reprogramable, mayor eficiencia al tener un solo dispositivo para diversos trabajos y requerimento de menos ajustes al ser un simple circuito integrado, ademas que por el simple hecho de ser tan reducido se puede adherir al elemento que debe gobernar, al hacer eso recibe el nombre de controlador embebido.&lt;br /&gt;
&lt;br /&gt;
Porque es diferente un &lt;b&gt;microprocesador&lt;/b&gt; y un &lt;b&gt;microcontrolador&lt;/b&gt;?.&lt;br /&gt;
&lt;br /&gt;
El &lt;u&gt;microprocesador&lt;/u&gt; es un circuito integrado que contiene una unidad central de procesamiento que intepreta las instrucciones en conjunto del camino de datos. Cada una de las &lt;i&gt;patitas&lt;/i&gt;&amp;nbsp;del microprocesador sacan lineas de buses de direcciones,datos y control para poder conectarle memoria, y los demas modulos de entrada y salida, para de estar forma poder configurar una computadora con el conjunto de varios circuitos integrados. Un microprocesador puede variar deacuerdo con los modulos que se le conecten.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8YKZ66CaTjOLBStEcsjdnDVEl8fnITz50EoA9NF-Xj8LJOBO7J4oPQYEiJMyq_Dd28m9y9EbF3SLJEXHHnw4tei6_jSrK2-8CF6-p_CVNC1hsLGmX5MsalPGJnwesxYpSVTNV7dgNLW2N/s1600/MICROPROCESADOR.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;191&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8YKZ66CaTjOLBStEcsjdnDVEl8fnITz50EoA9NF-Xj8LJOBO7J4oPQYEiJMyq_Dd28m9y9EbF3SLJEXHHnw4tei6_jSrK2-8CF6-p_CVNC1hsLGmX5MsalPGJnwesxYpSVTNV7dgNLW2N/s320/MICROPROCESADOR.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
El &lt;u&gt;microcontrolador&lt;/u&gt;&amp;nbsp;es un sistema invariable, ya que contiene sus modulos de memoria y E/S en su interior y solo sobresalen sus lineas de gobernacion ( de control ).&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL-FVWUGtA_3LIREOaa3kdm0ednUIqlDCsBM75OYk91pvgz66b3yVdr2BgnDmCeNyj4IgrGBsuLZTkaC4XPBHqfRqtCugs8rvMjb85BNS3eErl2dHRcYg_wY0eg9lGLwG51zEnuQFmqha2/s1600/MICROCONTRO.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;177&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL-FVWUGtA_3LIREOaa3kdm0ednUIqlDCsBM75OYk91pvgz66b3yVdr2BgnDmCeNyj4IgrGBsuLZTkaC4XPBHqfRqtCugs8rvMjb85BNS3eErl2dHRcYg_wY0eg9lGLwG51zEnuQFmqha2/s320/MICROCONTRO.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Arquitectura basica de un microcontrolador&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
La mayor parte de los microcontroladores estan basados en la &lt;a href=&quot;http://es.wikipedia.org/wiki/Arquitectura_Harvard&quot;&gt;arquitectura Harvard&lt;/a&gt;, dicha arquitectura dispone de dos memorias independientes, yna que contiene solo instrucciones y otra solo datos. Estas dos memorias disponen de sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso simultaneamente en ambas memorias. Los microcontroladores PIC llevan una arquitectura Hardvard.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;La unidad central de procesamiento de un microcontrolador&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Es la encargada de direccionar la memoria de instrucciones, recibir el codigo de la instruccion, decodificarla y ejecutar la operacion, asi como el almacenamiento del resultado. Existen tres orientaciones en cuanto a la arquitectura de los microcontroladores.&lt;br /&gt;
&lt;br /&gt;
- &lt;b&gt;CISC&lt;/b&gt; ( Computadores de juego de Instrucciones Complejo ) Disponen de instrucciones maquina en su repertorio, son mucho muy potentes y requieren de muchos ciclos para su ejecuccion. Su ventaja es que ofrecen instrucciones coplejas que actuan como macros.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
- &lt;b&gt;RISC&lt;/b&gt; ( Computadores de juego de Instrucciones Reducido ) El repertorio de instrucciones maquina es muy reducido y las instrucciones son simples y, generalmente, se ejecutan en un ciclo. La sencillez permite optimizar el hardware y el software de dicho procesador.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
-&amp;nbsp;&lt;b&gt;SISC&lt;/b&gt; ( Computadores de juego de Instrucciones Especifico ) Estan hechos para aplicaciones especificas como su nombre lo dice y el sistema de instrucciones se adapta a la aplicacion prevista a crear.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Memoria de un microcontrolador&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Como se menciono arriba, en los microcontroladores la memoria de instrucciones y la de datos estan integradas en el chip. Una parte de esta memoria es no volatil del tipo Read Only Memory y esta destinada a contener las instrucciones que goriernan la aplicacion, es decir el programa que le hemos desarrollado para su control. Cabe destacar que los microcontroladores no tienen sistemas de almacenamiento masico como discos duros, ya que para su ejecuccion solo necesita un unico programa. Por ultimo para la ROM normalmente se le dan de 512 bytes hasta 8 kb.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Otra parte es Random Access Memory y se utiliza para guardar datos durante la ejecuccion de las instucciones. Dicha memoria es reducida ya que solo necesita contener unas cuantas variables y cambios de informacion durante la ejecuccion del programa. A esta memoria se le otorgan alrededor de 512 bytes.&lt;br /&gt;
&lt;br /&gt;
Los microcontroladores actuales solo pueden tener uno de cinco de los tipos de memoria no volatil, como son:&lt;br /&gt;
&lt;br /&gt;
-&lt;b&gt;&lt;span style=&quot;color: orange;&quot;&gt;ROM&lt;/span&gt;&lt;/b&gt;: una memoria no volatil que puede procesar cantidades de varios miles de unidades.&lt;br /&gt;
-&lt;b&gt;&lt;span style=&quot;color: orange;&quot;&gt;OTP&lt;/span&gt;&lt;/b&gt;: una memoria no volatil que solo puee ser programada una sola vez por el usuario.&lt;br /&gt;
-&lt;span style=&quot;color: orange;&quot;&gt;&lt;b&gt;EPROM&lt;/b&gt;&lt;/span&gt;: su nombre indica su funcion (Erasable programmable read only memory) solo cuenta con una particularidad ya que debe exponerse a rayos ultravioleta durante varios minutos para poder borrarle el contenido.&lt;br /&gt;
-&lt;b&gt;&lt;span style=&quot;color: orange;&quot;&gt;EEPROM&lt;/span&gt;&lt;/b&gt;: es la version mejorada de la EPROM ya que este tipo de memorias se pueden borrar con electricidad, no son necesarios los rayos UV. Pero se deben usar con cuidado ya que su reprogramacion cumple un ciclo finito de veces, no son eternos.&lt;br /&gt;
-&lt;b&gt;&lt;span style=&quot;color: orange;&quot;&gt;FLASH&lt;/span&gt;&lt;/b&gt;: cumple la funcion de una ROM y una RAM, porque se puede leer y escribir informacion en dicha memoria, haciendola una memoria mas veloz que la EEPROM pero cambiando el coste de tolerancia para los ciclos de escritura y borrado.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://i.imgur.com/Gq7s9.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;166&quot; src=&quot;http://i.imgur.com/Gq7s9.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;EPROM&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Modulos de control y generador de pulsos&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
Los microcontroladores estan diseñados para soportar lineas de E/S para comunicar el computador interno con los perifericos exteriores y asi proporcionar soporte a las señales de entrada, salida y control. Cada microcontrolador dispone de un circuito oscilador que genera un onda cuadrada de alta frecuencia ( es decir, una onda que envia valores entre dos rangos fijos ) que configura los pulsos de reloj usados en la sincronización de todas las operaciones del sistema.&lt;br /&gt;
Para estabilizar la frecuencia de trabajo suele usarse un cristal de cuarzo junto con otros elementos pasivos, en su defecto un resonador ceramico, o una &lt;a href=&quot;http://i.imgur.com/mNATv.png&quot;&gt;red RC&lt;/a&gt;.&lt;br /&gt;
Aumentar la frequencia de reloj hace una ejecuccion de instrucciones mucho mas rapida, pero aumenta considerablemente el consumo de energía.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
Referencia&lt;br /&gt;
&lt;a href=&quot;http://www.fimee.ugto.mx/profesores/gcerda/documentos/&quot;&gt;website Dr. villafaña&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://blutintegrado.blogspot.com/feeds/5634046983916926107/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blutintegrado.blogspot.com/2012/03/lo-basico-de-un-microcontrolador.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/5634046983916926107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/5634046983916926107'/><link rel='alternate' type='text/html' href='http://blutintegrado.blogspot.com/2012/03/lo-basico-de-un-microcontrolador.html' title='Lo basico de un microcontrolador'/><author><name>Everardo medina</name><uri>http://www.blogger.com/profile/06546729504173814351</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibiBPjbY_uvBpNn5XjKtqrrjXsxrlFYUQ7nmg3qvPXjIMWJ2bCtGdAg64CtvfDwwjkvhPfMVZfnv9wt9cgHRrEXllc0hrl-xGR7m_BmoiJQ1oAnYXQhjwJriksWWkatFo/s220/20191016_235701.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8YKZ66CaTjOLBStEcsjdnDVEl8fnITz50EoA9NF-Xj8LJOBO7J4oPQYEiJMyq_Dd28m9y9EbF3SLJEXHHnw4tei6_jSrK2-8CF6-p_CVNC1hsLGmX5MsalPGJnwesxYpSVTNV7dgNLW2N/s72-c/MICROPROCESADOR.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2537808901356183239.post-4556892747080555330</id><published>2012-02-25T08:19:00.001-08:00</published><updated>2012-02-26T13:33:33.646-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Laboratorio"/><category scheme="http://www.blogger.com/atom/ns#" term="PICS"/><title type='text'>Proteus [ Simulador electronico ]</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Que es un simulador electronico?&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Es una herramienta que utilizan los desarrolladores de sistemas integrados y componentes electronicos para ayudarse a crear un circuito en el cual se desee ensamblar de manera digital, logrando tener un mecanismo logico ( no fisico ) del componente o el sistema electronico. Esto con el fin de realizar pruebas y detectar fallos en el sistema antes de su implementacion.&lt;br /&gt;
&lt;br /&gt;
En general la unica desventaja de utilizar un simulador electronico es que no se pueden contar con todos los factores naturales como humedad, presion, calor, etc...&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Proteus&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Proteus es una compilación de programas de diseño y simulación electrónica, desarrollado por Labcenter Electronics que consta de los dos programas principales: Ares e Isis. Hablando del programa ISIS, Intelligent Schematic Input System (Sistema de Enrutado de Esquemas Inteligente) permite diseñar el plano eléctrico del circuito que se desea realizar con componentes muy variados, desde simples resistencias, hasta alguno que otro microprocesador o microcontrolador, incluyendo fuentes de alimentación, generadores de señales y muchos otros componentes con prestaciones diferentes.&lt;br /&gt;
&lt;br /&gt;
Este programa &lt;b&gt;ISIS&lt;/b&gt; nos permite dibujar sobre un area de trabajo, un circuito que posteriormente podemos simular, y verificar para encontrar sus posibles errores.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Instalacion de Proteus&lt;/b&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;
&lt;u&gt;Bajo windows 7&lt;/u&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Primero descargamos el proteus completo de &lt;a href=&quot;http://lix.in/-b382ef&quot;&gt;aqui&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Despues seguimos el video, en el video aparece que le doy la opcion de Modificar, esto es porque ya contaba con el Proteus instalado. Solo hay que darle un instalacion completa y despues agregarle la llave que marca el video.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/YFj0JFoZmug?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Como realizar una simulacion?&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
Este video presenta como se crea la simulacion de un&amp;nbsp;PIC16F873A, aqui esta el codigo &lt;a href=&quot;http://pastebin.com/jwYTu2RM&quot;&gt;prueba&lt;/a&gt;&amp;nbsp;y lo unico que hace es hacer &lt;i&gt;parpadear &lt;/i&gt;la salida RB1.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/4PDNMb29p9I?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red; font-weight: bold;&quot;&gt;Nota: &lt;/span&gt;esta instalacion de proteus funciona sobre el sistema operativo GNU/Linux utilizando &lt;a href=&quot;http://www.winehq.org/&quot;&gt;wine&lt;/a&gt;&lt;br /&gt;
Comprobado sobre debian squeeze y arch linux 3.2 [simulacion e instalación]&lt;br /&gt;
&lt;br /&gt;
Codigo Prueba&lt;/div&gt;
&lt;script src=&quot;https://gist.github.com/1907172.js?file=C&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://blutintegrado.blogspot.com/feeds/4556892747080555330/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blutintegrado.blogspot.com/2012/02/proteus-simulador-electronico.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/4556892747080555330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/4556892747080555330'/><link rel='alternate' type='text/html' href='http://blutintegrado.blogspot.com/2012/02/proteus-simulador-electronico.html' title='Proteus [ Simulador electronico ]'/><author><name>Everardo medina</name><uri>http://www.blogger.com/profile/06546729504173814351</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibiBPjbY_uvBpNn5XjKtqrrjXsxrlFYUQ7nmg3qvPXjIMWJ2bCtGdAg64CtvfDwwjkvhPfMVZfnv9wt9cgHRrEXllc0hrl-xGR7m_BmoiJQ1oAnYXQhjwJriksWWkatFo/s220/20191016_235701.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2537808901356183239.post-5270339528069699570</id><published>2012-02-21T07:42:00.001-08:00</published><updated>2012-02-29T09:51:39.334-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Clase"/><category scheme="http://www.blogger.com/atom/ns#" term="Ensamblador"/><title type='text'>Programando en Assembly [ Entrega 1 ]</title><content type='html'>En esta &lt;a href=&quot;http://blutintegrado.blogspot.com/2012/02/lenguaje-ensamblador.html&quot;&gt;liga&lt;/a&gt; podemos ver teoria sobre el lenguaje Assembly.&lt;br /&gt;
&lt;br /&gt;
Que necesitamos?&lt;br /&gt;
&amp;nbsp;- un ensamblador para pasar nuestro codigo Assembly a un formato objeto.&lt;br /&gt;
&amp;nbsp;- un enlazador que combine nuestros archivos objeto con las librerias necesarias.&lt;br /&gt;
&lt;br /&gt;
En este caso utilizaremos assembly con sintaxis de Intel, ya que a mi parecer es un codigo muy limpio. Nuestro ensamblador sera &lt;a href=&quot;http://www.nasm.us/&quot;&gt;NASM&lt;/a&gt;&amp;nbsp;ya que es propio del uso de la sintaxis de Intel para 16 y 32 bits.&lt;br /&gt;
Nuestro enlazador por fortuna viene agregado como herramienta de GNU en sistemas con nucleo linux, su nombre es &lt;a href=&quot;http://manpages.ubuntu.com/manpages/hardy/es/man1/ld.1.html&quot;&gt;ld&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Como instalar NASM?&lt;br /&gt;
NASM esta en los repositorios de muchas distribuciones, solo se tiene que usar el comando del gestor de paquetes como ejemplo para debian/ubuntu:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;sudo apt-get install nasm&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
y como mencionamos el enlazador viene por default.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;
Ahora veamos un Hola escrito para lenguaje assembly utilizando sintaxis Intel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;script src=&quot;https://gist.github.com/1875068.js?file=assembly&quot;&gt;
&lt;/script&gt;
El codigo esta lleno de comentarios utiles para la comprension del programa.&lt;br /&gt;
&lt;br /&gt;
Ahora lo ensamblaremos y lo enlazaremos con sus librerias para que nos quede un ejecutable.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpTN4QbVaNFjs0aAXiao1mANokUgLxFMreVPtVrpmwozY49Zw8xAZGI8jyQCuXcmu47nzLpdSgJur0uaOR6nQ-SZAPFNfijqK7wt-fkCJ7NBXmllH686gDuyxtt4IzsrYpsWZJ6G0rdmhm/s1600/NASM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;71&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpTN4QbVaNFjs0aAXiao1mANokUgLxFMreVPtVrpmwozY49Zw8xAZGI8jyQCuXcmu47nzLpdSgJur0uaOR6nQ-SZAPFNfijqK7wt-fkCJ7NBXmllH686gDuyxtt4IzsrYpsWZJ6G0rdmhm/s400/NASM.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&amp;nbsp;Lo pasamos a un archivo de tipo ELF ( Archivo Ejecutable y enlazable ) para depues &amp;nbsp;enlazarlo usando ld.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikpTQNNSSpEI5bIsTELgufbU_w6_fC_5f6v9x-dRnubrgM0WVwKXgZ2xBWfTRrj1xv_jgNOW5DSq2ZGqKt48UQl6bMyGW5YUERcXqG5U394oYZujEOHur_tJgeWGfWwZh0arOYOvsSPEec/s1600/LDDD.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;52&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikpTQNNSSpEI5bIsTELgufbU_w6_fC_5f6v9x-dRnubrgM0WVwKXgZ2xBWfTRrj1xv_jgNOW5DSq2ZGqKt48UQl6bMyGW5YUERcXqG5U394oYZujEOHur_tJgeWGfWwZh0arOYOvsSPEec/s400/LDDD.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Ahora nos queda un ejecutable y solo tenemos que mandarlo llamar.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYw95VvmJRsg-JjxyBPFeQl4y49IZ_qXWsspZjQiOfrYevNYNqVbKgt0FJ7DMMAK04lCHylf_kCxjQ-R35VeRvqs1t6BmXLgjCCs8I61DcGJ5NKlPpTXd3xYHLlmS-LuA1xKxjwQCPWIn_/s1600/PRO.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;63&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYw95VvmJRsg-JjxyBPFeQl4y49IZ_qXWsspZjQiOfrYevNYNqVbKgt0FJ7DMMAK04lCHylf_kCxjQ-R35VeRvqs1t6BmXLgjCCs8I61DcGJ5NKlPpTXd3xYHLlmS-LuA1xKxjwQCPWIn_/s400/PRO.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Asi se hace una impresion utilizando Assembly con sintaxis intel sobre linux.&lt;br /&gt;
&lt;br /&gt;
Dejando en claro cada linea de este programa.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;SECTION .data&lt;/b&gt;&lt;/span&gt; es una&amp;nbsp;seccion del programa que especifica&amp;nbsp;la memoria del segmento de datos. Solo los datos&amp;nbsp;iniciados se deber definir en este segmento.&lt;br /&gt;
&lt;div&gt;
En este segmento utilizamos db para reservar bytes, usamos la etiqueta msg para &amp;nbsp;despues guardar caracteres &quot; H &quot;,&quot; o &quot;,&quot; l &quot;... y ademas le agregamos dos caracteres de escape ( 10 y 13 ) para estetica. Ademas utilizamos otra etiqueta llamada lon para guardarle un numero que comprende de la resta de la posicion actual del puntero menos la posicion inicial del puntero, si no fallo seria un 15.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;color: red; font-weight: bold;&quot;&gt;SECTION .text &lt;/span&gt;en esta seccion se define la parte del codigo.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;MOV&lt;/b&gt;&amp;nbsp;nos permite &lt;i&gt;mover &lt;/i&gt;valores hacia los registros.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;INT&lt;/b&gt;&amp;nbsp;hace la llamada a una interrupcion y en este caso usamos la 0x80 que nos permite decirle al kernel que ejecute una llamada al sistema dependiendo de acumulador.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora veremos otro programa que apartir de un argumento crea un nuevo archivo, le escribe una linea de caracteres predefinida.&lt;br /&gt;
Despues reabre el archivo, toma lectura de una linea y la imprime en pantalla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/1942891.js?file=assembly&quot;&gt;
&lt;/script&gt;

&lt;a href=&quot;http://refcards.com/docs/waetzigj/mips/mipsref.pdf&quot;&gt;Aqui estan las hojas de referencia para assembly&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.csie.ntu.edu.tw/%7Ecomp03/nasm/nasmdoc3.html#section-3.5&quot;&gt;Manual para uso de NASM&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://bluemaster.iu.hio.no/edu/dark/lin-asm/syscalls.html&quot;&gt;Aqui les dejo la tabla de las llamadas al sistema&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://blutintegrado.blogspot.com/feeds/5270339528069699570/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blutintegrado.blogspot.com/2012/02/programando-en-assembly-entrega-1.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/5270339528069699570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/5270339528069699570'/><link rel='alternate' type='text/html' href='http://blutintegrado.blogspot.com/2012/02/programando-en-assembly-entrega-1.html' title='Programando en Assembly [ Entrega 1 ]'/><author><name>Everardo medina</name><uri>http://www.blogger.com/profile/06546729504173814351</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibiBPjbY_uvBpNn5XjKtqrrjXsxrlFYUQ7nmg3qvPXjIMWJ2bCtGdAg64CtvfDwwjkvhPfMVZfnv9wt9cgHRrEXllc0hrl-xGR7m_BmoiJQ1oAnYXQhjwJriksWWkatFo/s220/20191016_235701.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpTN4QbVaNFjs0aAXiao1mANokUgLxFMreVPtVrpmwozY49Zw8xAZGI8jyQCuXcmu47nzLpdSgJur0uaOR6nQ-SZAPFNfijqK7wt-fkCJ7NBXmllH686gDuyxtt4IzsrYpsWZJ6G0rdmhm/s72-c/NASM.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2537808901356183239.post-163467307770030613</id><published>2012-02-19T23:11:00.000-08:00</published><updated>2012-02-26T13:34:11.898-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ensamblador"/><category scheme="http://www.blogger.com/atom/ns#" term="Laboratorio"/><title type='text'>Lenguaje Ensamblador</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i.imgur.com/7zGBV.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://i.imgur.com/7zGBV.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Porque un lenguaje ensamblador?&lt;br /&gt;
&lt;br /&gt;
Comunmente los ingenieros en software &amp;nbsp;utilizamos lenguajes que son ciertamente entendibles para el ser humano al tratar de ordenarle a la computadora que realize ciertas acciones.&lt;br /&gt;
A esta accion le llamamos programar.&lt;br /&gt;
&lt;br /&gt;
No es mas que escribirle una serie de instrucciones en una archivo de texto para que despues mediante un proceso de compilacion y traduccion ese archivo sea entendible por la computadora.&lt;br /&gt;
&lt;br /&gt;
La computadora solo entiende una secuencia binaria de &lt;i&gt;ceros y unos&lt;/i&gt; 0,1. A esto le llamaremos&lt;b&gt; lenguaje maquina&lt;/b&gt;, ya que es el lenguaje que la maquina puede comprender con respecto a su hardware.&lt;br /&gt;
&lt;br /&gt;
Cada vez que nosotros reservamos una variable al momento de hacer un programa, lo que en realidad esta pasando es que una secuencia binaria es enviada y procesada por el maquina y con un conjunto de acciones basicas logra cumplir su funcion.&lt;br /&gt;
&lt;br /&gt;
Este tipo de secuencias de numeros binarios al que denominaremos &lt;i&gt;instruccion, &lt;/i&gt;es facilmente comprendida por la maquina, pero por los programadores es practicamente imposible saber que es lo que una secuencia como &lt;u&gt;0001110101001011010010&lt;/u&gt; seria capaz de realizar al ser ejecutada.&lt;br /&gt;
&lt;br /&gt;
Ahora que sabemos lo dificil que seria darle instrucciones directas a una maquina, debemos saber que es posible utilizar la propia maquina para ayudarnos a traducir lenguaje comprensible a lenguaje maquina. Es decir que si a una maquina especifica se le proporcionaba de un programa especifico que tradujera caracteres alfabeticos a instrucciones binarias, se podia construir un programa constituido de caracteres entendibles para los humanos, en el cual se utilizarian palabras especificas para realizar acciones concretas de la maquina.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Entonces de ahora en delante la maquina podria tomar codigo que los humanos entendemos para poder traducirlo a un codigo que ella especificamente entienda. A esas palabras especificas se les llama &lt;b&gt;mnemotecnico&lt;/b&gt; y existe un &lt;b&gt;mnemotecnico&lt;/b&gt; para cada instruccion. se les llama asi porque ayudan a recordar el conjunto de instrucciones de una determinada maquina.&lt;br /&gt;
A los programas que logran pasar del programa escrito en forma de instrucciones de mnemotecnicos a un lenguaje maquina se les conoce como &lt;i&gt;ensambladores&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;Porque utilizar un lenguaje ensamblador?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;A diferencia de un lenguaje de alto nivel, los programas que se escriben en un lenguaje ensamblador requieren mucho menos memoria y tienen un tiempo de ejecuccion mucho menor.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Los lenguajes ensambladores le dan la posibilidad a el programador de realizar acciones muy especificas y tecnicas que al contrario de los lenguajes de alto nivel son dificiles de realizar.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;El conocimineto del lenguaje ensamblador de una maquina en especifico le confiere una compresion de la arquitectura de dicha maquina mucho mayor que la que le confiere un lenguaje de alto nivel.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Por lo general es una buena practica recodificar en lenguaje ensamblador las rutinas de aquellos sistemas que requieren de un procesamiento muy tardado, para asi optimizar las rutinas que le conlleven mas problemas a dicho sistema.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Si se quiere implementar porciones de código en un lenguaje de bajo nivel como&amp;nbsp;ensamblador para disminuir el tiempo de procesamiento. Por ejemplo, en&amp;nbsp;aplicaciones que necesiten renderizar gráficos 3D que requieren más tiempo de&amp;nbsp;procesamiento, habrá que escribir una librería para gráficos en lenguaje&amp;nbsp;ensamblador para tener un mejor rendimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Los programas que realizan interrupciones &amp;nbsp;y rutinas de servicio para los sistemas operativos casi siempre estan escritos en un lenguaje ensamblador.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Un lenguaje ensamblador trabaja sobre los registros del procesador interno de la maquina los cuales sirven par a controlar la ejecuccion, la memoria y proporcionan capacidad aritmetica, estos poseen 16 bits que se enumeran de izquierda a derecha. 15,14,13,...,0.&lt;br /&gt;
Nota: &lt;u&gt;En arquitecturas x86 el largo de estos registros aumento a 32 bits, y eso se refleja en el codigo ensamblador anteponiendo la letra E (Extended) a los registros.&lt;/u&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE3JXvOL1n6jmTyp0qCRpNN7dkpUCMEVLAR1zWVRDTWspsCNgP9wDHfK57SoamUIXvLDMEUHJnKrlyldzFpu1BBRSRGYJupHFjvwTSgsk_3QOiGoh3-JBddWeE-DLPgmrcqeIqQQTG4Qec/s1600/Registros.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;206&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE3JXvOL1n6jmTyp0qCRpNN7dkpUCMEVLAR1zWVRDTWspsCNgP9wDHfK57SoamUIXvLDMEUHJnKrlyldzFpu1BBRSRGYJupHFjvwTSgsk_3QOiGoh3-JBddWeE-DLPgmrcqeIqQQTG4Qec/s400/Registros.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Tabla de Registros&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #ffe599;&quot;&gt;Registro de datos &lt;/span&gt;&amp;nbsp;Estos registros se pueden direccionar como parte de una palabra o de un byte, el ultimo byte de la izquierda es considerado la parte &lt;i&gt;alta&lt;/i&gt;&amp;nbsp;y el ultimo byte de la derecha la parte &lt;i&gt;baja. &lt;/i&gt;Como podemos ver en la tabla de registros, cada registro consta de una parte alta ( High ) y una baja ( Low ), es decir consta de 8 bits para cada parte, del 0 al 7 Low, del 8 al 15 high.&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Registro AX &lt;/span&gt; ( &lt;b&gt;Acumulador&lt;/b&gt; ). Este se utiliza en las operaciones E/S y en las &amp;nbsp; aritmeticas. Es el mas eficiente de los registros de datos.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Registro BX &lt;/span&gt;&amp;nbsp;(&lt;b&gt; Base &lt;/b&gt;). Registro de proposito general que puede servir para direccionamiento o para hacer calculos.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Registro CX &lt;/span&gt;&amp;nbsp;( &lt;b&gt;Contador&lt;/b&gt; ).&amp;nbsp;Conocido como registro contador, puede tener valores que controlan los ciclos o el valor del corrimiento de los bits.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Registro DX &lt;/span&gt;&amp;nbsp;( &lt;b&gt;Datos&lt;/b&gt; ). Este se utiliza en las operaciones E/S y por lo general las operaciones aritmeticas de punto flotante en conjunto con AX.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #ffe599;&quot;&gt;Registros de Apuntadores e indices&lt;/span&gt;&amp;nbsp;Estos registros estan asociados con el registro de &lt;i&gt;segmento de pila&lt;/i&gt; y permiten el acceso a los datos de este segmento.&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Registro SP &lt;/span&gt;&amp;nbsp;(&lt;b&gt;Stack Pointer / Apuntador de Pila&lt;/b&gt; ). Proporciona una valor de desplazamiento que se refiere a la palabra actual que esta siendo procesada.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Registro BP &lt;/span&gt;&amp;nbsp;(&lt;b&gt;Base Pointer / Apuntador de Base&lt;/b&gt; ). Facilita la referencia de los parametros los cuales son datos y &amp;nbsp;direcciones transmitidas en la pila.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Registro SI &lt;/span&gt;&amp;nbsp;(&lt;b&gt;Indicie fuente&lt;/b&gt; ) Esta asociado con el segmento de datos y en conjunto realizan operaciones con caracteres.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Registro DI &lt;/span&gt;&amp;nbsp;(&lt;b&gt;Indice destino&lt;/b&gt; ) Al igual que el SI, este registro esta asociado con el segmento extra para realizar operaciones de cadenas de caracteres.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #ffe599;&quot;&gt;Registros de segmentos&lt;/span&gt;&amp;nbsp;Son segmentos de 16 bits que facilitan el area de memoria para direccionamiento conocida como el segmento actual, es decir son partes de memoria que pueden pasar a estar en ejecuccion.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Registro CS &lt;/span&gt;&amp;nbsp;( &lt;b&gt;Segmento de Codigo &lt;/b&gt;) Aqui se almacenan las instrucciones para ser ejecutadas.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Registro DS &lt;/span&gt;&amp;nbsp;( &lt;b&gt;Segmento de Datos&lt;/b&gt; ) Aqui se almacenan los datos para su uso posterior&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Registro SS &lt;/span&gt;&amp;nbsp;( &lt;b&gt;Segmento de Pila&lt;/b&gt; ) Este registro permite el almacenamiento &amp;nbsp;en memoria de una pila, para guardar temporalmente datos y direcciones.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Registro ES &lt;/span&gt;&amp;nbsp;( &lt;b&gt;Segmento Extra&lt;/b&gt; ) Este registro se usa para operaciones con cadenas de caracteres.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
El &lt;span style=&quot;background-color: #ffd966;&quot;&gt;IP&lt;/span&gt; ( &lt;b&gt;Instruction pointer / Puntero de instrucciones&lt;/b&gt; ) es un puntero que se usa con la mayoria de los registros de segmento para dar la direccion de cierta parte de datos de cada uno de esos registros.&lt;br /&gt;
&lt;br /&gt;
Tambien esta un registro general que guarda las banderas que se pueden utilizar al momento de programar para señalar algunos &lt;i&gt;eventos&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiVUqFQB29yJE30c2FG7Ja-PEEi0IQ0mUu0Q5ku0Q7uFvEd0f0FE9QFPY5-i8cWo-ulG7MqYM690XpOVy6uwKrOfFz9zXvOcn1EqOGvyMfMzNHFfBMSMdlHmGcYZQejk8dLUt0T17Qzz_0/s1600/FLAGS.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiVUqFQB29yJE30c2FG7Ja-PEEi0IQ0mUu0Q5ku0Q7uFvEd0f0FE9QFPY5-i8cWo-ulG7MqYM690XpOVy6uwKrOfFz9zXvOcn1EqOGvyMfMzNHFfBMSMdlHmGcYZQejk8dLUt0T17Qzz_0/s320/FLAGS.png&quot; width=&quot;238&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Flags&lt;br /&gt;
&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
Cada uno refiere a un motivo diferente.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Overflow Flag&lt;/span&gt; (&lt;b&gt;desbordamiento&lt;/b&gt;) Indica que se desbordo un bit despues de una operacion matematica.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Direction Flag&lt;/span&gt; (&lt;b&gt;direccion&lt;/b&gt;) Indica la direccion hacia la izquierda o derecha para mover o comparar cadenas de caracteres.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Interruption Flag&lt;/span&gt; (&lt;b&gt;interrupcion&lt;/b&gt;) Indica si deben ser tomadas en cuenta las interrupciones externas.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Trap Flag&lt;/span&gt; (&lt;b&gt;trampa&lt;/b&gt;) permite la ejecuccion paso por paso, para debugeo.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Sign Flag&lt;/span&gt; (&lt;b&gt;signo&lt;/b&gt;) el ultimo bit de la mantisa, contiene si es positivo o negativo&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Zero Flag&lt;/span&gt; (&lt;b&gt;cero&lt;/b&gt;) indica si el resultado de una comparacion aritmetica es uno(resultado es cero) o zero(resultado diferente de cero)&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Auxiliar Flag&lt;/span&gt; (&lt;b&gt;auxiliar&lt;/b&gt;) contiene un acarreo externo del BIT 3 en un dato de 8 bits para&amp;nbsp;aritmética especializada.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Parity Flag&lt;/span&gt; (&lt;b&gt;paridad&lt;/b&gt;) indica paridad en los bits de bajo nivel&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffd966;&quot;&gt;Carry Flag&lt;/span&gt; (&lt;b&gt;acarreo&lt;/b&gt;) contiene el acarreo de alto nivel despues de operaciones aritmeticas.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Referencias:&lt;br /&gt;
PDF assembly work creado por &lt;a href=&quot;mailto:carlosnuel@gmail.com&quot;&gt;Carlos Navarro&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://heather.cs.ucdavis.edu/~matloff/50/LinuxAssembly.html&quot;&gt;Linux Assembly&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blutintegrado.blogspot.com/feeds/163467307770030613/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blutintegrado.blogspot.com/2012/02/lenguaje-ensamblador.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/163467307770030613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/163467307770030613'/><link rel='alternate' type='text/html' href='http://blutintegrado.blogspot.com/2012/02/lenguaje-ensamblador.html' title='Lenguaje Ensamblador'/><author><name>Everardo medina</name><uri>http://www.blogger.com/profile/06546729504173814351</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibiBPjbY_uvBpNn5XjKtqrrjXsxrlFYUQ7nmg3qvPXjIMWJ2bCtGdAg64CtvfDwwjkvhPfMVZfnv9wt9cgHRrEXllc0hrl-xGR7m_BmoiJQ1oAnYXQhjwJriksWWkatFo/s220/20191016_235701.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE3JXvOL1n6jmTyp0qCRpNN7dkpUCMEVLAR1zWVRDTWspsCNgP9wDHfK57SoamUIXvLDMEUHJnKrlyldzFpu1BBRSRGYJupHFjvwTSgsk_3QOiGoh3-JBddWeE-DLPgmrcqeIqQQTG4Qec/s72-c/Registros.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2537808901356183239.post-3855014837960314951</id><published>2012-02-14T20:22:00.000-08:00</published><updated>2012-02-26T13:34:59.607-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Laboratorio"/><category scheme="http://www.blogger.com/atom/ns#" term="Sistemas Integrados"/><title type='text'>Sistemas Integrados</title><content type='html'>Un sistema integrado tiene muchas definiciones, algunas de ellas son:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Es aquel en el cual un programa interactua directamente con el hardware computacional principalmente.&lt;/li&gt;
&lt;li&gt;Es un sistema en el cual la codificacion esta estrechamente ligada a el hardware que se utilizara.&lt;/li&gt;
&lt;li&gt;Es un sistema que esta diseñado especificamente para realizar una tarea que no este directamente activada por la interaccion humana.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;
Todos los dias usamos sistemas embebidos sin darnos cuenta, por ejemplo la licuadora, el refrigerador, el control remoto, el celular, el mouse, el teclado, etc..&lt;/div&gt;
&lt;div&gt;
Por lo general los sistemas embebidos constan de un pequeño microprocesador para poder realizas acciones especificas utilizando algo de logica matematica sencilla y alojando memoria a pequeña escala para asi lograr cumplir sus funciones.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
La computadora esta diseñada para poder realizar un gran espectro de acciones y utilidades para la vida cotidiana, en cambio un sistema embebido suele ser creado para cumplir una funcion especifica que minimize la dependencia de jerarquias complejas en su diseño para ser utilizado satisfactoriamente.&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhtgdGu7h0vSiuM46E83JYWaFJmzora5Lcq28ABicFN7-IFwnMnlDabZLSLNHh_dmUlq68h3TFpHUzrlkk11vest8mSATT2NAevYkDlnicbwEpG_E3J4quMl17K-TsPOavcKEmF8cN9wMD/s1600/IMG_20120214_210922.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhtgdGu7h0vSiuM46E83JYWaFJmzora5Lcq28ABicFN7-IFwnMnlDabZLSLNHh_dmUlq68h3TFpHUzrlkk11vest8mSATT2NAevYkDlnicbwEpG_E3J4quMl17K-TsPOavcKEmF8cN9wMD/s200/IMG_20120214_210922.jpg&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk_YXMKJ6mNSuhmfOMPLkgJRCuEBhzLWPQ6tacrtLC2nYfGYr3GFNzUz_3hN3b4K9B0_SAneQfsxX2MgHJG7ujybKHiYtrrv2-XUe7oAkZB5LjTMjgrzQWMZAhfwLUBlnPKvdn_pDOOPV7/s1600/IMG_20120214_203736.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk_YXMKJ6mNSuhmfOMPLkgJRCuEBhzLWPQ6tacrtLC2nYfGYr3GFNzUz_3hN3b4K9B0_SAneQfsxX2MgHJG7ujybKHiYtrrv2-XUe7oAkZB5LjTMjgrzQWMZAhfwLUBlnPKvdn_pDOOPV7/s200/IMG_20120214_203736.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
Este es un ejemplo de un sistema&amp;nbsp;embebido, consta de dos cuatro push buttons, un diodo emisor de infrarojos, un decoder, y un microprocesador ATMEL entre otras cosas mas.&lt;br /&gt;
El proposito de este pequeño sistema integrado es el de codificar señales dependiendo de la posicion de la tarjeta mediante la lectura de señales infrarojas. Ademas posee tres señales que van directas de push buttons ( una señal utiliza dos push ) que van directas al microprocesador y despues son enviadas mediante wireless. Dicho dispositivo no es mas que un Mouse inalambrico.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Otra forma de hablar de sistemas integrados es pensar en ellos como una diminuta computadora dispuesta a realizar determinada accion.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.fraunhofer.de/en/research-topics/information-communication/embedded-systems/_jcr_content/stage/image.img.jpg/1318434770421.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;128&quot; src=&quot;http://www.fraunhofer.de/en/research-topics/information-communication/embedded-systems/_jcr_content/stage/image.img.jpg/1318434770421.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
La importancia de los sistemas integrados esta implicita, son totalmente necesarios y sin duda aportan una gran usabilidad al tener sistemas y equipo para diversas acciones como los celulares, las camaras web, los reproductores de musica portatiles y en aplicaciones en la industria pueden ser controladores de maquinaria, robots, dispositivos electronicos. Dichos sistemas nos ahorran grandes componentes electronicos, nos permite tener componentes unitarios y que cumplan funciones diversas pero especificas a bajos costos y con un uso mas simple por su diseño ad hoc.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
Inclusive podemos hablar de los sistemas embebidos &quot;vestibles&quot; ya que a medida que el desarrollo de microprocesadores y nano tecnologia se han incrementado se han logrado diseñar sistemas integrados muy pequeños capaces de ser transportados en el bolsillo, o en otras partes. Este tipo de sistemas se hacen diferentes propositos como el de recabar informacion clave de un individuo como sus latidos y pulsos etc. Un ejemplo de este tipo de sistemas es nano-tera el cual desarrolla un reloj que opera muchos de las señales de vida de un hombre para propositos medicos la liga a la pagina con mas informacion es esta&amp;nbsp;&lt;a href=&quot;http://www.nano-tera.ch/program/research/wearable.html&quot;&gt;Nano-tera&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i.imgur.com/XJ0RU.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://i.imgur.com/XJ0RU.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Referencias:&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://www.dmoz.org/Computers/Software/Operating_Systems/Linux/Embedded/&quot;&gt;Embedded linux&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://www.engstuff.info/2011/02/what-is-embedded-system.html&quot;&gt;engstuff&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.nano-tera.ch/program/research/wearable.html&quot;&gt;Nano Tera&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blutintegrado.blogspot.com/feeds/3855014837960314951/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blutintegrado.blogspot.com/2012/02/sistemas-integrados.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/3855014837960314951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/3855014837960314951'/><link rel='alternate' type='text/html' href='http://blutintegrado.blogspot.com/2012/02/sistemas-integrados.html' title='Sistemas Integrados'/><author><name>Everardo medina</name><uri>http://www.blogger.com/profile/06546729504173814351</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibiBPjbY_uvBpNn5XjKtqrrjXsxrlFYUQ7nmg3qvPXjIMWJ2bCtGdAg64CtvfDwwjkvhPfMVZfnv9wt9cgHRrEXllc0hrl-xGR7m_BmoiJQ1oAnYXQhjwJriksWWkatFo/s220/20191016_235701.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhtgdGu7h0vSiuM46E83JYWaFJmzora5Lcq28ABicFN7-IFwnMnlDabZLSLNHh_dmUlq68h3TFpHUzrlkk11vest8mSATT2NAevYkDlnicbwEpG_E3J4quMl17K-TsPOavcKEmF8cN9wMD/s72-c/IMG_20120214_210922.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2537808901356183239.post-4362528610770105824</id><published>2012-01-24T16:44:00.000-08:00</published><updated>2012-01-24T16:50:16.137-08:00</updated><title type='text'>Computo Integrado</title><content type='html'>Programare algo bueno bonito y eficiente (:</content><link rel='replies' type='application/atom+xml' href='http://blutintegrado.blogspot.com/feeds/4362528610770105824/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blutintegrado.blogspot.com/2012/01/computo-integrado.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/4362528610770105824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2537808901356183239/posts/default/4362528610770105824'/><link rel='alternate' type='text/html' href='http://blutintegrado.blogspot.com/2012/01/computo-integrado.html' title='Computo Integrado'/><author><name>Everardo medina</name><uri>http://www.blogger.com/profile/06546729504173814351</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibiBPjbY_uvBpNn5XjKtqrrjXsxrlFYUQ7nmg3qvPXjIMWJ2bCtGdAg64CtvfDwwjkvhPfMVZfnv9wt9cgHRrEXllc0hrl-xGR7m_BmoiJQ1oAnYXQhjwJriksWWkatFo/s220/20191016_235701.png'/></author><thr:total>0</thr:total></entry></feed>