<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>trece dBs</title>
	<atom:link href="http://trecedb.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://trecedb.wordpress.com</link>
	<description>Cuando AM no es suficiente...</description>
	<lastBuildDate>Tue, 03 Jan 2012 22:34:04 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='trecedb.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>trece dBs</title>
		<link>http://trecedb.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://trecedb.wordpress.com/osd.xml" title="trece dBs" />
	<atom:link rel='hub' href='http://trecedb.wordpress.com/?pushpress=hub'/>
		<item>
		<title>La familia PIC16F87x</title>
		<link>http://trecedb.wordpress.com/2011/05/29/la-familia-pic16f87x/</link>
		<comments>http://trecedb.wordpress.com/2011/05/29/la-familia-pic16f87x/#comments</comments>
		<pubDate>Sun, 29 May 2011 11:27:21 +0000</pubDate>
		<dc:creator>Fernando</dc:creator>
				<category><![CDATA[Microcontroladores]]></category>
		<category><![CDATA[PIC]]></category>
		<category><![CDATA[16f877]]></category>
		<category><![CDATA[microcontroladores]]></category>

		<guid isPermaLink="false">http://trecedb.wordpress.com/?p=128</guid>
		<description><![CDATA[Hasta ahora hemos visto generalidades sobre los microcontroladores: qué son, para qué sirven y qué casas los fabrican. Así mismo hemos hecho especial énfasis en los microcontroladores de la casa Microchip, por sen en los que nos vamos a centrar en el presente curso. Ahora toca, por fin, entar un poco más en materia hablando [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=128&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Hasta ahora hemos visto generalidades sobre los microcontroladores: qué son, para qué sirven y qué casas los fabrican. Así mismo hemos hecho especial énfasis en los microcontroladores de la casa Microchip, por sen en los que nos vamos a centrar en el presente curso. Ahora toca, por fin, entar un poco más en materia hablando del modelo concreto que emplearemos.</p>
<p style="text-align:justify;">Como se ve en el título, no hablaremos únicamente de un modelo concreto, pues éstos se agrupan por familias que tienen unas características muy similares y que, por lo tanto, se estudian a la vez. En nuestro caso hablaremos de la familia PIC16F87x, por tratarse de una de gama media que permite llevar a cabo la mayoría de las aplicaciones típicas de los microcontroladores. Así mismo, todo el código escrito de ahora en adelante será ensamblador.</p>
<p style="text-align:justify;">En la actualidad existen compiladores para multitud de lenguajes, de forma que pueda programarse con ellos un microcontrolador. Todos ellos son de más alto nivel que ensamblador, lo que se traduce en una programación más intuitiva y menos propensa a errores. ¿Por qué usar ensamblador entonces? Porque es la base de todo: con ensamblador seremos nosotros los que indicaremos al microcontrolador que tiene que hacer en cada instante, controlando hasta el último rincón del mismo.</p>
<p style="text-align:justify;">Esto nos dará un conocimiento sobre su funcionamiento mucho mayor que si usásemos, por ejemplo, un compilador de C que cuenta con librerías ya implementadas para llevar a cabo la mayor parte del trabajo. Podemos decir que ensamblador es para aprender y los demás para programar. Dicho esto, comenzamos.</p>
<h3 style="text-align:justify;">La familia PIC16F87x</h3>
<p style="text-align:justify;">Tal y como ya comentamos, al trabajar con microcontroladores PIC se habla no tanto de un modelo concreto sino de familias, pues la diferencia entre los miembros de la misma son mínimos. Sin embargo, en última instancia y más allá de motivos académicos, se trabaja con un modelo concreto. En nuestro caso será con el PIC16F877. Por lo tanto, de ahora en adelante se usará ese modelo por comodidad.</p>
<p style="text-align:justify;">El PIC16F877 es un microncontrolador de ocho bits y 28 0 40 pines, disponible en múltiples encapsulados. Nosotros emplearemos el PDIP, pues los de tipo SMD no son tan propensos al montaje de circuitos caseros, dada la dificultad de su manejo motivada por su pequeño tamaño.</p>
<p style="text-align:justify;">Pueden consultarse todas sus características de forma detallada en la hoja de características facilitado por el fabricante pero, no obstante, os comento a continuación las más relevantes:</p>
<ul>
<li>Frecuencia de funcionamiento de hasta 20 MHz.</li>
<li>Manejo de hasta 14 fuentes de interrupción.</li>
<li>Watchdog interno.</li>
<li>Modo Sleep de bajo consumo.</li>
<li>Modo de programación serie sobre el circuito, o ICSP, mediante dos pines.</li>
<li>Tres módulos temporizadores.</li>
<li>Dos módulos CCP.</li>
<li>Un conversor analógico digital multientrada de 10 bits.</li>
<li>Módulos SPI, I2C y USART para comunicación con otros dispositivos.</li>
</ul>
<div>Obviamente, a estas alturas del curso, no se comprenderán la inmensa mayoría de las características recién descritas, pero se citan aquí por completud y para que sirvan de referencia en un futuro. Con esto concluye esta nueva entrega del curso de microcontraladores PIC. En la siguiente introduciremos ya la circuitería básica necesaria para el funcionamiento del PIC y desarrollaremos nuestro primer programa.</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trecedb.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trecedb.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trecedb.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trecedb.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trecedb.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trecedb.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trecedb.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trecedb.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trecedb.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trecedb.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trecedb.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trecedb.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trecedb.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trecedb.wordpress.com/128/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=128&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trecedb.wordpress.com/2011/05/29/la-familia-pic16f87x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7459ddd2a551f27c72ed656530017552?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fernandocereijo</media:title>
		</media:content>
	</item>
		<item>
		<title>Integrando MATLAB en nuestras aplicaciones Java (y II)</title>
		<link>http://trecedb.wordpress.com/2011/05/27/integrando-matlab-en-nuestras-aplicaciones-java-y-ii/</link>
		<comments>http://trecedb.wordpress.com/2011/05/27/integrando-matlab-en-nuestras-aplicaciones-java-y-ii/#comments</comments>
		<pubDate>Fri, 27 May 2011 17:53:44 +0000</pubDate>
		<dc:creator>Fernando</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[MATLAB]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[conexión]]></category>
		<category><![CDATA[integración]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[matlab]]></category>

		<guid isPermaLink="false">http://trecedb.wordpress.com/?p=123</guid>
		<description><![CDATA[Aquí os traigo la segunda y última entrega de este minitutorial de intregación de MATLAB y Java. En un principio tenía pensado hacer una serie más larga, pero estoy viendo que muchos de los temas que se tratan en el tutorial de la web oficial de MATLAB son relativamente avanzados. En principio mi idea era [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=123&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Aquí os traigo la segunda y última entrega de este minitutorial de intregación de MATLAB y Java. En un principio tenía pensado hacer una serie más larga, pero estoy viendo que muchos de los temas que se tratan en el tutorial de la web oficial de MATLAB son relativamente avanzados. En principio mi idea era limitar a introducir con algún ejemplo sencillo la conexión básica entre estos dos sistemas y creo que con este otro post quedan más que cubiertos mis objetivos.</p>
<p style="text-align:justify;">Esta nueva entrega vamos a hablar de la transferencia de información entre MATLAB y Java. En el ejemplo del post anterior programamos un <em>HelloWorld</em> que, aunque ilustrativo, no trata un tema fundamental como es el intercambio de información entre los códigos de uno y otro lenguaje. En esta ocasión vamos a implementar un sumador, de forma que desde la aplicación Java se llame a una función MATLAB que sume los dos números que le pasemos como parámetros y que nos devuelva el resultado de la operación.</p>
<h3 style="text-align:justify;">Sumador</h3>
<p style="text-align:justify;">Dado que en post anterior ya expliqué cómo generar el paquete Java, en esta ocasión me limitaré a explicar qué hay que hacer profundizar mucho en el cómo. Vamos a implementar un sumador, así que lo primero es programar el código MATLAB, al cual llamaremos a<em>dd.m</em>:</p>
<pre>function [total] = add(a, b)
    total = a + b;
end</pre>
<p style="text-align:justify;">Como se observa, el código no tiene ningún misterio y se limita a sumar los dos números que pasamos como parámetros. Generamos mediante <em>deploytool</em> un paquete Java de nombre <em>AdderProject</em> y le añadimos una clase <em>AdderClass</em> que contenga el fichero <em>add.m</em></p>
<p style="text-align:justify;">En el código Java, una vez incluido la librería y el paquete MATLAB que acabamos de crear, basta con incluir el siguiente código:</p>
<pre>    double a, b;
    Object[] results = null;
    Adder adder = new Adder();

    double a = 4;
    double b = 7;

    results = adder.add(1, a, b);

    MWArray result = (MWNumericArray) results[0];
    double[][] total = (double[][]) result.toDoubleArray();</pre>
<p style="text-align:justify;">Antes de comentar el código aquí expuesto, quiero aclarar que ésta no es la única forma de pasar y recibir datos a/desde MATLAB. De hecho, en la documentación oficial se habla de diferentes métodos. En esta guía he optado por emplear el más sencillo de ellos, pues resulta suficiente a efectos de comprender el funcionamiento de la aplicación.</p>
<p style="text-align:justify;">El código anterior se limita a definir dos variables de tipo <em>double</em>: a<em> y b</em>, que serán los valores que vamos a sumar. En general, el tipo de datos double será el que tenga una conversión más natural entre MATLAB y Java, y por ello será el que utilicemos en lugar de otros como int, que podrían usarse perfectamente en este caso.</p>
<p style="text-align:justify;">A continuación, se llama a la función <em>add</em> con los parámetros <em>1, a, b</em>. En la entrega anterior había comentado que no tenía claro qué indicaba el uno del principio. Al parecer, sirve para definir cuántos datos devolverá la función. En nuestro caso, únicamente esperamos recibimos uno: el resultado de la operación. Como se observa, los parámetros se pasan directamente sin hacer ningún tipo de conversión, pues se está haciendo uso de la conversión automática que, aunque menos eficiente, es muy sencilla de emplear.</p>
<p style="text-align:justify;">El resultado devuelto por la función se almacena en una variable de tipo <em>Object[]</em>. Como ya supondréis, es un vector que contendrá todos los valores devueltos por la función.</p>
<p style="text-align:justify;">Posteriormente se crea un objecto de tipo <em>MWArray</em>, que contendrá uno y sólo uno de las variables devueltas. Por lo tanto, nos limitamos a escoger la que deseemos del array results, en este caso la primera y única, y la convertimos a <em>MWNumericArray</em>. Hecho esto, nos limitamos a convertirla en un array bidimensional de tipo <em>double</em>, donde almacenaremos el resultado de la suma ya listo para su empleo en Java.</p>
<p style="text-align:justify;">Merece la pena reseñar que en MATLAB cualquier tipo de dato es una matriz. Por lo tanto, al recuperar los datos desde Java se hace como matriz también, aunque en este caso sea de dimensión 1&#215;1.</p>
<p style="text-align:justify;">Con esto doy por concluida esta pequeña guía de integración de MATLAB y Java. Sé que he dejado muchas cosas en el tintero, pero en principio esto es suficiente para la mayoría de aplicaciones. En cualquier caso, no dudéis en comentarme las dudas que tengáis e intentaré responderos.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trecedb.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trecedb.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trecedb.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trecedb.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trecedb.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trecedb.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trecedb.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trecedb.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trecedb.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trecedb.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trecedb.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trecedb.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trecedb.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trecedb.wordpress.com/123/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=123&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trecedb.wordpress.com/2011/05/27/integrando-matlab-en-nuestras-aplicaciones-java-y-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7459ddd2a551f27c72ed656530017552?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fernandocereijo</media:title>
		</media:content>
	</item>
		<item>
		<title>Integrando MATLAB en nuestras aplicaciones Java (I)</title>
		<link>http://trecedb.wordpress.com/2011/05/21/integrando-matlab-en-nuestras-aplicaciones-java/</link>
		<comments>http://trecedb.wordpress.com/2011/05/21/integrando-matlab-en-nuestras-aplicaciones-java/#comments</comments>
		<pubDate>Sat, 21 May 2011 20:19:09 +0000</pubDate>
		<dc:creator>Fernando</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[MATLAB]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[conexión]]></category>
		<category><![CDATA[integración]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[matlab]]></category>

		<guid isPermaLink="false">http://trecedb.wordpress.com/?p=115</guid>
		<description><![CDATA[Quería iniciar con este post la primera parte de un pequeño tutorial sobre cómo ejecutar código fuente escrito en MATLAB desde Java. Aunque es cierto que en la mayoría de los cálculos que hay que llevar a cabo son de baja complejidad y pueden llevarse a cabo directamente con Java, es posible que en un [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=115&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Quería iniciar con este post la primera parte de un pequeño tutorial sobre cómo ejecutar código fuente escrito en MATLAB desde Java. Aunque es cierto que en la mayoría de los cálculos que hay que llevar a cabo son de baja complejidad y pueden llevarse a cabo directamente con Java, es posible que en un momento determinado necesitemos calcular expresiones matemáticas más complejas.</p>
<p>En mi caso, lo que me motivo a buscar información sobre este tema no fue tanto el querer hacer cálculos desde Java, sino diseñar en Java mediante componentes Swing la interfaz gráfica de un programa escrito en MATLAB, pues, aunque bien es cierto que éste último cuenta con un editor incorporado llamado guide, deja bastante que desar si lo que se desea es un resultado más o menos profesional.</p>
<p>Antes de nada me gustaría aclarar que todo lo aquí expuesto no es más que una traducción/recopilación de lo visto en otras páginas webs, especialmente de la propia web de MATLAB. <a href="http://www.mathworks.com/help/toolbox/javabuilder/ug/brlu1as-1.html">http://www.mathworks.com/help/toolbox/javabuilder/ug/brlu1as-1.html</a>. Dicho esto, comenzamos.</p>
<h3>¡Hola mundo!</h3>
<p>En un alarde de original el ejemplo sobre el que va a girar esta primera parte será el más que clásico Hola Mundo. La idea será escribir un código en MATLAB que imprima en pantalla dicho mensaje para luego ejecutarlo desde Java. Lo primero que hay que hacer por lo tanto es escribir dicho código. Hay que recordar que, en principio, tiene que estructurarse el código en forma de funciones, de forma que luego puedan ejecutarse desde nuestra aplicación Java.</p>
<p>Escribimos el siguiente código en MATLAB en un fichero que llamaremos <em>helloWorldClass.m:</em></p>
<pre>function helloWorldFunction
    fprintf(1,'Hello World!\n' );</pre>
<p>Como se observa el código no tiene ningún misterio. A continuación hay que convertir este código en otro que pueda ejecutarse desde java. Para ello, basta con ejecutar el comando<em> deploytool.</em> Nos aparecerá ahora un menú como el que se muestra en la siguiente imagen:</p>
<p><em><a href="http://trecedb.files.wordpress.com/2011/05/fig1.png"><img class="aligncenter size-medium wp-image-118" title="Creando un paquete Java desde MATLAB" src="http://trecedb.files.wordpress.com/2011/05/fig1.png?w=300&#038;h=180" alt="Cuadro de diálogo para crear un paquete Java desde MATLAB" width="300" height="180" /></a><br />
</em></p>
<p><em><br />
</em></p>
<p>Como veis, es un cuadro de diálogo sin mucho misterio. Para seguir el ejemplo lo ideal sería que lo dejaseis con los mismos valores que aparecen en la imagen. A continuación nos aparecerá una ventana en la que deberemos indica qué clases queremos crear y qué ficheros .m contendrá cada una. Por lo tanto, hacemos clic en el enlace <em>Add class</em> y le damos el nombre que queramos, como por ejemplo, <em>HelloWorldClass</em>. A continuación añadimos el fichero .m creado previamente a dicha clase mediante <em>Add files</em>.</p>
<p>Hecho esto sólo resta clicar en el botón de Build situado en la parte superior de la ventana del deploytool. Si todo ha ido bien, tras un tiempo relativamente pequeño tendremos nuestro paquete Java listo para usar.</p>
<p>Para programar en Java yo empleo el entorno de desarrollo NetBeans, así que lo explicado a continuación supondrá que también vosotros lo usáis. No obstante se puede hacer también sin mayores problemas en otros entornos.</p>
<p>Creamos un nuevo proyecto Java y añadimos como librería el fichero .jar que se creó mediante <em>deploytool</em> y que se encuentra en el directorio <em>c:\helloworld\contrib</em>. Debe añadirse también de la misma forma el fichero javabuilder.jar, que puede encontrase en <em>directorio_raiz_de_matlab\toolbox\javabuilder\jar</em>.</p>
<p>Hecho esto, basta con añadir a nuestro código las siguientes líneas:</p>
<pre>import com.mathworks.toolbox.javabuilder.*;
import HelloWorldProject.HelloWorldClass;<em> </em></pre>
<p>En este momento, estamos listos para poder ejecutar nuestro código MATLAB desde Java. Para ello hay que limitarse a crear un objeto de la clase <em>HelloWordClass</em> y llamar a la función que nos interese, como se muestra en el siguiente ejemplo:</p>
<pre>HelloWorldClass helloWorld = new HelloWorldClass();
helloWorld.helloWorldFunction(1);
if (helloWorld != null) {
    helloWorld.dispose();
}</pre>
<p>El código es muy sencillo: como dijimos, se limita a crear un objeto y a llamar a una de las funciones que contiene, en este caso, <em>helloWorldFunction</em>, que fue la que definimos previamente en el fichero .m. Finalmente se liberan los recursos ocupados. Tengo que comentar que desconozco el sentido del parámetro que se pasa como argumento a nuestra función, pero venía así con los ejemplos de la web de MATLAB y sin él no funciona.</p>
<p>Con esto llegamos al final de la primera de las partes de este minitutorial. Espero que os haya gustado y que estéis al tanto de las partes que faltan.</p>
<p><strong>Actualización: </strong>comentaba más arriba que no sabía cuál era la misión del primer parámetro que se le pasa a la función MATLAB desde Java. Parece ser que indica el número de variables que va a devolver la función, lo cual explica que el valor más habitual sea uno.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trecedb.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trecedb.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trecedb.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trecedb.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trecedb.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trecedb.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trecedb.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trecedb.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trecedb.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trecedb.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trecedb.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trecedb.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trecedb.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trecedb.wordpress.com/115/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=115&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trecedb.wordpress.com/2011/05/21/integrando-matlab-en-nuestras-aplicaciones-java/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7459ddd2a551f27c72ed656530017552?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fernandocereijo</media:title>
		</media:content>

		<media:content url="http://trecedb.files.wordpress.com/2011/05/fig1.png?w=300" medium="image">
			<media:title type="html">Creando un paquete Java desde MATLAB</media:title>
		</media:content>
	</item>
		<item>
		<title>Rama de estudiantes del IEEE de la Universidad de Oviedo</title>
		<link>http://trecedb.wordpress.com/2009/04/04/rama-de-estudiantes-del-ieee-de-la-universidad-de-oviedo/</link>
		<comments>http://trecedb.wordpress.com/2009/04/04/rama-de-estudiantes-del-ieee-de-la-universidad-de-oviedo/#comments</comments>
		<pubDate>Sat, 04 Apr 2009 15:38:55 +0000</pubDate>
		<dc:creator>Fernando</dc:creator>
				<category><![CDATA[IEEE]]></category>
		<category><![CDATA[Universidad]]></category>
		<category><![CDATA[estudiantes]]></category>
		<category><![CDATA[oviedo]]></category>
		<category><![CDATA[rama]]></category>

		<guid isPermaLink="false">http://trecedb.wordpress.com/?p=98</guid>
		<description><![CDATA[Como podéis ver en la pestaña Acerca de, soy estudiante de Ingeniería de Telecomunicación en la Universidad de Oviedo. El caso es que recientemente se fundó la rama de estudiantes del IEEE de dicha universidad. Para el que no lo sepa, el IEEE es el Instituto de Ingeniería Eléctrica y Electrónica, una organización sin ánimo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=98&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Como podéis ver en la pestaña <a title="Acerca de" href="http://trecedb.wordpress.com/acerca-de/">Acerca de</a>, soy estudiante de <a title="Ingeniería de Telecomunicación" href="http://directo.uniovi.es/catalogo/DetallePlan.asp?plan=ISTELECO">Ingeniería de Telecomunicación</a> en la <a title="Universidad de Oviedo" href="http://uniovi.es">Universidad de Oviedo</a>. El caso es que recientemente se fundó la <a title="Rama de estudiiantes del IEEE" href="http://ieeesb-uniovi.es/">rama de estudiantes del IEEE</a> de dicha universidad. Para el que no lo sepa, el <a title="IEEE" href="http://www.ieee.org/portal/site">IEEE</a> es el Instituto de Ingeniería Eléctrica y Electrónica, una organización sin ánimo de lucro que trabaja a nivel mundial. Es la asociación de este tipo más relevante; como ejemplo, indicar que, aproximadamente, el treinta por ciento de la literatura escrita sobre electricidad, electrónica, software&#8230; es suya.</p>
<p>Las ramas de estudiantes son asociaciones de, valga la redundancia, estudiantes, al frente de las cuales se encuentra un profesor de la universidad correspondiente miembro del IEEE. Al menos en la nuestra, cualquier estudiante de la Universidad de Oviedo, incluso posiblemente cualquier persona interesada en la materia, puede participar.</p>
<p>Por el momento, somos unos treinta y nos reunimos una media de una vez a la semana para tratar temas que nos interesan como son los citados anteriormente. Aunque cada uno puedo diseñar lo que quiera, ahora mismo, estamos construyendo un pequeño robot <em>siguelíneas</em> o velocista (a elección del consumidor).</p>
<p>Realmente se trata de una buena iniciativa. Yo mismo había estado informándome sobre estas ramas de estudiantes, pero no existía una aún en la Universidad de Oviedo (a decir verdad si existía, pero estaba completamente abandonada). Esperemos que dure.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trecedb.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trecedb.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trecedb.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trecedb.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trecedb.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trecedb.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trecedb.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trecedb.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trecedb.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trecedb.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trecedb.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trecedb.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trecedb.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trecedb.wordpress.com/98/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=98&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trecedb.wordpress.com/2009/04/04/rama-de-estudiantes-del-ieee-de-la-universidad-de-oviedo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7459ddd2a551f27c72ed656530017552?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fernandocereijo</media:title>
		</media:content>
	</item>
		<item>
		<title>Vuelta a la normalidad</title>
		<link>http://trecedb.wordpress.com/2009/04/04/vuelta-a-la-normalidad/</link>
		<comments>http://trecedb.wordpress.com/2009/04/04/vuelta-a-la-normalidad/#comments</comments>
		<pubDate>Sat, 04 Apr 2009 14:40:03 +0000</pubDate>
		<dc:creator>Fernando</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[examenes]]></category>
		<category><![CDATA[rutina]]></category>

		<guid isPermaLink="false">http://trecedb.wordpress.com/?p=93</guid>
		<description><![CDATA[Por fin puedo decir que vuelvo a la rutina. Tras más de dos meses en los que se juntaron exámenes, entregas de prácticas y avería de ordenador, parece que tengo nuevamente algo de tiempo para poder actualizar el blog. Esperemos que siga así la cosa, porque tengo bastantes cosas que contar .<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=93&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Por fin puedo decir que vuelvo a la rutina. Tras más de dos meses en los que se juntaron exámenes, entregas de prácticas y avería de ordenador, parece que tengo nuevamente algo de tiempo para poder actualizar el blog. Esperemos que siga así la cosa, porque tengo bastantes cosas que contar <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trecedb.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trecedb.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trecedb.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trecedb.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trecedb.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trecedb.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trecedb.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trecedb.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trecedb.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trecedb.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trecedb.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trecedb.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trecedb.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trecedb.wordpress.com/93/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=93&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trecedb.wordpress.com/2009/04/04/vuelta-a-la-normalidad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7459ddd2a551f27c72ed656530017552?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fernandocereijo</media:title>
		</media:content>
	</item>
		<item>
		<title>PICs: los microcontroladores de Microchip</title>
		<link>http://trecedb.wordpress.com/2009/03/21/pics-los-microcontroladores-de-microchip/</link>
		<comments>http://trecedb.wordpress.com/2009/03/21/pics-los-microcontroladores-de-microchip/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 18:31:18 +0000</pubDate>
		<dc:creator>Fernando</dc:creator>
				<category><![CDATA[Microcontroladores]]></category>
		<category><![CDATA[PIC]]></category>
		<category><![CDATA[microcontroladres]]></category>
		<category><![CDATA[familias]]></category>
		<category><![CDATA[16f877]]></category>

		<guid isPermaLink="false">http://trecedb.wordpress.com/?p=82</guid>
		<description><![CDATA[Hasta ahora hemos hecho una pequeña introducción a los microcontroladores. En este post empezaremos a centrarnos en los PIC, un tipo concreto de microcontroladores diseñado por la casa Microchip. Sin embargo, además de estos micocontroladores, existen muchas otras marcas, cada una de ellas implementada generalmente por un fabricante distinto. Cabe preguntarse, por lo tanto, por [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=82&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hasta ahora hemos hecho una pequeña introducción a los microcontroladores. En este post empezaremos a centrarnos en los PIC, un tipo concreto de microcontroladores diseñado por la casa <a title="Microchip" href="http://www.microchip.com">Microchip</a>.</p>
<p>Sin embargo, además de estos micocontroladores, existen muchas otras marcas, cada una de ellas implementada generalmente por un fabricante distinto. Cabe preguntarse, por lo tanto, por qué escoger los PICs entre la gran variedad de microcontroladores existentes en el mercado. Aalgunos motivos son los siguientes:</p>
<ul>
<li>Gran gama de microcontroladores</li>
<li>Rapidez de ejecución</li>
<li>Arquitectura Harvard</li>
<li>Eficiencia del código</li>
<li>Juego de instrucciones reducido (RISC) de fácil aprendizaje</li>
<li>Compatibilidad con dispositivos de la misma familia e incluso con los de otras distintas</li>
<li>Gran soporte, así como herramientas abundantes y de bajo coste</li>
<li>Protección de código frente a lecturas no deseadas</li>
</ul>
<p>Podemos decir que estos son los motivos técnicos o más o menos objetivos. Sin embargo, existen otros motivos como son el estudio de estos microcontroladores en mucha universidades o la buena política de promoción de Microchip, que fomenta el uso de sus microcontroladores a través de, entre otras, el envío de muestras gratuitas o <em>samples</em>.</p>
<p>Acabamos de comentar que muchas casas fabrican diferentes microcontroladores y que, en concreto, Microchip diseña los PIC. Sin embargo, dentro de ellos existen, tal y como ya introdujimos previamente, una gran cantidad de modelos distintos que sigue aumentando día a día. Actualmente podemos clasificarlos en dos grandes grupos: los PICs clásicos y los dsPICs. Estos últimos incluyen características de DSP, lo que permite llevar a cabo tareas de procesamiento de audio o vídeo, entre otros.</p>
<p>Nosotros nos centraremos en los primeros. Los PICs clásicos se encuentran divididos en siete familias, de forma que los microcontroladores de una familia determinada comparten muchas características entre ellos y los diferencian de los de las demás. Haciendo una nueva división tenemos microcontroladores de 8, 16 y 32 bits.  Hablaremos en entregas posteriores de qué significa esto; de momento, basta saber que el PIC que será el eje de este curso, el 16F877, pertenece al primer grupo, exactamente a la familia PIC16. Así mismo, existen otras como son la PIC10, PIC12 o PIC32.</p>
<p>En una primera aproximación, podemos decir que, cuanto más alto sea el número identificativo de la familia, mayores prestaciones nos ofrecerán los PICs que pertenezcan a ella. Con el objetivo de ilustrar esto de una forma más aclara, abajo puede verse una <em>gráfica </em>comparativa extraída de la web de Microchip:</p>
<div id="attachment_87" class="wp-caption aligncenter" style="width: 520px"><img class="size-full wp-image-87" title="comparativa_pics" src="http://trecedb.files.wordpress.com/2009/03/comparativa.jpg?w=510&#038;h=382" alt="Comparativa entre las distintas familias de PICs" width="510" height="382" /><p class="wp-caption-text">Comparativa entre las distintas familias de PICs</p></div>
<p>Hasta aquí llega esta mínima introducción a los microcontroladores PIC. En la próxima entrega nos centraremos ya en el PIC1F877, explicando sus características particulares y qué seremos capaces de llegar a desarrollar con él.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trecedb.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trecedb.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trecedb.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trecedb.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trecedb.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trecedb.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trecedb.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trecedb.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trecedb.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trecedb.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trecedb.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trecedb.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trecedb.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trecedb.wordpress.com/82/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=82&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trecedb.wordpress.com/2009/03/21/pics-los-microcontroladores-de-microchip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7459ddd2a551f27c72ed656530017552?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fernandocereijo</media:title>
		</media:content>

		<media:content url="http://trecedb.files.wordpress.com/2009/03/comparativa.jpg" medium="image">
			<media:title type="html">comparativa_pics</media:title>
		</media:content>
	</item>
		<item>
		<title>Diff y Patch: parcheando aplicaciones</title>
		<link>http://trecedb.wordpress.com/2009/02/18/diff-y-patch-parcheando-nuestros-programas/</link>
		<comments>http://trecedb.wordpress.com/2009/02/18/diff-y-patch-parcheando-nuestros-programas/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 22:12:51 +0000</pubDate>
		<dc:creator>Fernando</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[diff]]></category>
		<category><![CDATA[parche]]></category>
		<category><![CDATA[patch]]></category>

		<guid isPermaLink="false">http://trecedb.wordpress.com/?p=78</guid>
		<description><![CDATA[Todo aquel que sea programador o se dedique de una u otra forma al noble arte de picar código sabrá  qué es un parche. Para los que no lo sepan, digamos que un parche es una sección de código que se añade a un programa con el objetivo de modificar su funcionalidad. Alguno quizá se [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=78&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Todo aquel que sea programador o se dedique de una u otra forma al noble arte de picar código sabrá  qué es un parche. Para los que no lo sepan, digamos que un parche es una sección de código que se añade a un programa con el objetivo de modificar su funcionalidad. Alguno quizá se esté preguntando por qué se crean parches en lugar de modificar directamente el código del programa. La respuesta a esta pregunta está directamente ligada con el peso de los ficheros.</p>
<p style="text-align:justify;">Imaginemos que estamos trabajando en el desarrollo de un procesador de texto con miles de líneas de código, en el que resulta que la opción de centrar texto no funciona correctamente. Así que nos ponemos manos a la obra y solucionamos el problema. Llegados a este punto, querremos hacer pública esta mejora y para ello tendremos dos opciones: volver a distribuir todo el código del programa o limitarnos a enviar un simple fichero que indique los cambios que han llevado a cabo sobre el programa original. Obviamente, elegiremos esta última opción pues reduciremos considerablemente la cantidad de información a transmitir.</p>
<p style="text-align:justify;">Vista la ventaja de los parches la siguiente pregunta que cabe formularse es si existe alguna forma de automatizar este proceso, ya que sería realmente tedioso generar a mano un fichero en el que se listen las diferencias entre dos archivos para luego llevar a cabo las modificaciones pertinentes. Es aquí donde entran en juego las aplicaciones diff y patch, las cuales pueden instalarse en un sistema Debian, si es que no lo están ya, mediante aptitude:</p>
<pre style="text-align:justify;">aptitude install diff patch</pre>
<p style="text-align:justify;">La primera de ellas se encarga de generar el fichero de diferencias entre los dos archivos y la segunda de aplicarlas. Veamos esto con un ejemplo: supongamos que nuestro proyecto consta de un único fichero llamado <em>main.cpp</em>, el cual se muestra a continuación:</p>
<pre>#include &lt;iostream&gt;

using namespace std;

int main() {

    int i=0;

    while (i&lt;10) {
        cout &lt;&lt; i &lt;&lt; " ";
        i++;
    }

    return 0;
}</pre>
<p style="text-align:justify;">Como puede verse, el programa se limita a mostrar por pantalla los números del 0 al 9 separados por un espacio. Resulta que ahora decidimos que esta funcionalidad (si es que puede llamarse así) estaría mejor implementada de otra forma, por lo que creamos otro fichero llamado <em>patch.cpp</em> a partir del anterior:</p>
<pre style="text-align:justify;">#include &lt;iostream&gt;

using namespace std;

int main() {

    for (int i=0; i&lt;10; i++0) {
        cout &lt;&lt; i &lt;&lt; endl;
    }

    return 0;
}</pre>
<p style="text-align:justify;">En esta ocasión, mostramos cada número en cada línea en lugar de todos seguidos. Ya tenemos, además del código original, el modificado. Así que llega el momento de ejecutar el comando <em>diff</em>, que hallará las diferencias entre ambos ficheros. Para poder trabajar con ellas más tarde, las volcaremos en el fichero <em>main.diff</em>:</p>
<pre>diff main.cpp patch.cpp &gt; main.diff</pre>
<p style="text-align:justify;">Ahora sólo resta aplicar los cambios, empleando para ello el comando <em>patch</em>:</p>
<pre>patch -o main2.cpp main.cpp main.diff</pre>
<p style="text-align:justify;">que creará el fichero <em>main2.cpp</em>, que será el resultado de aplicar las modificaciones indicadas en el fichero <em>main.diff</em> sobre el archivo <em>main.cpp</em>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trecedb.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trecedb.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trecedb.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trecedb.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trecedb.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trecedb.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trecedb.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trecedb.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trecedb.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trecedb.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trecedb.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trecedb.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trecedb.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trecedb.wordpress.com/78/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=78&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trecedb.wordpress.com/2009/02/18/diff-y-patch-parcheando-nuestros-programas/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7459ddd2a551f27c72ed656530017552?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fernandocereijo</media:title>
		</media:content>
	</item>
		<item>
		<title>Teclado numérico en Vim</title>
		<link>http://trecedb.wordpress.com/2009/02/14/teclado-numerico-en-vim/</link>
		<comments>http://trecedb.wordpress.com/2009/02/14/teclado-numerico-en-vim/#comments</comments>
		<pubDate>Sat, 14 Feb 2009 21:27:00 +0000</pubDate>
		<dc:creator>Fernando</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[kde 4]]></category>
		<category><![CDATA[konsole]]></category>
		<category><![CDATA[numérico]]></category>
		<category><![CDATA[teclado]]></category>
		<category><![CDATA[term]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://trecedb.wordpress.com/?p=73</guid>
		<description><![CDATA[Estaba programando en C++ con Vim cuando de repente me doy cuenta de que el teclado numérico no funciona y muestra letras en lugar de números. Me sorprendió bastante porque ayer funcionaba perfectamente. Además los demás programas que he probado no presentan este problema. La solución pasó por buscar en Google. Así llegué a un [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=73&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Estaba programando en C++ con <a title="Vim" href="http://es.wikipedia.org/wiki/Vim">Vim</a> cuando de repente me doy cuenta de que el teclado numérico no funciona y muestra letras en lugar de números. Me sorprendió bastante porque ayer funcionaba perfectamente. Además los demás programas que he probado no presentan este problema.</p>
<p style="text-align:justify;">La solución pasó por buscar en Google. Así llegué a un foro en el que comentaban que se debía a un problema con la <a title="Variable de entorno" href="http://es.wikipedia.org/wiki/Variable_de_entorno">variable de entorno</a> $TERM, que indica el tipo de terminal que estamos utilizando en ese momento. Si esta variable de entorno no está bien configurada, los diferentes programas con los que trabajemos no reconocerán bien todos los caracteres que tecleemos.</p>
<p style="text-align:justify;">Supongo que mi problema en concreto se debía a que, por un motivo que aún desconozco, $TERM cambió de valor, provocando los ya citados problemas con el teclado numérico. Para arreglarlo, basta con ejecutar el siguiente comando:</p>
<pre style="text-align:justify;">export $TERM=linux</pre>
<p style="text-align:justify;">De esta forma, establecemos <em>linux</em> como valor de $TERM.</p>
<p style="text-align:justify;"><strong>Actualización: </strong>tras escribir este post me di cuenta de que esta solución no es eficaz, pues a pesar de conseguir que funcionara el teclado numérico hacía fallas las teclas especiales, como <em>inicio</em> o <em>fin</em>. Seguí buscando en Google pero no encontré nada. Sin embargo, al final lo solucioné de casualidad cambiando la configuración de Konsole. Exactamente a través de la opción<em> Editar perfil&#8230; </em>del menú <em>Preferencias. </em>En la ventana que nos aparecerá basta con eligir, dentro de la pestaña <em>Entrada, </em>la opción <em>Consola Linux.</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trecedb.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trecedb.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trecedb.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trecedb.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trecedb.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trecedb.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trecedb.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trecedb.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trecedb.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trecedb.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trecedb.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trecedb.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trecedb.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trecedb.wordpress.com/73/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=73&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trecedb.wordpress.com/2009/02/14/teclado-numerico-en-vim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7459ddd2a551f27c72ed656530017552?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fernandocereijo</media:title>
		</media:content>
	</item>
		<item>
		<title>Partes del microcontrolador</title>
		<link>http://trecedb.wordpress.com/2009/02/13/partes-del-microcontrolador/</link>
		<comments>http://trecedb.wordpress.com/2009/02/13/partes-del-microcontrolador/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 15:28:24 +0000</pubDate>
		<dc:creator>Fernando</dc:creator>
				<category><![CDATA[Microcontroladores]]></category>
		<category><![CDATA[microcontrolador]]></category>
		<category><![CDATA[partes]]></category>
		<category><![CDATA[cpu]]></category>
		<category><![CDATA[memoria]]></category>
		<category><![CDATA[entrada]]></category>
		<category><![CDATA[salida]]></category>

		<guid isPermaLink="false">http://trecedb.wordpress.com/?p=56</guid>
		<description><![CDATA[En el post anterior hicimos una pequeña introducción al concepto de microcontrolador. En esta ocasión, profundizaremos en él haciendo especial hincapié en los componentes fundamentales que componen uno: la CPU o unidad central de proceso, la memoria y las unidades de entrada salida. La CPU Podemos decir que la CPU, siglas en inglés de unidad [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=56&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">En el post anterior hicimos una pequeña introducción al concepto de microcontrolador. En esta ocasión, profundizaremos en él haciendo especial hincapié en los componentes fundamentales que componen uno: la CPU o unidad central de proceso, la memoria y las unidades de entrada salida.</p>
<h3>La CPU</h3>
<p style="text-align:justify;">Podemos decir que la CPU, siglas en inglés de unidad central de proceso, es el núcleo del microcontrolador. Se encarga de ejecutar las instrucciones almacenadas en la memoria, de la que hablaremos más adelante. Es lo que habitualmente llamamos procesador o microprocesador, término que a menudo se confunde con el de microcontrolador. En esta línea cabe aclarar que, tal y como estamos viendo, ambos términos no son lo mismo: el microprocesador es una parte de un microcontrolador y sin él no sería útil; un microcontrolador, en cambio, es un sistema completo que puede llevar a cabo de forma autónoma una labor.</p>
<p style="text-align:justify;">Podemos ver al microprocesador como el cerebro de una persona y al microcontrolador como el cuerpo: el cerebro se encarga de procesar toda la información, pero necesita a los demás órganos para funcionar. De la misma forma, el microprocesador, que únicamente se encarga de ejecutar las instrucciones, necesita, por un lado, un lugar donde almacenarlas, es decir, la memoria, y por otro, un medio para interactuar con el exterior, es decir, los dispositivos de entrada/salida.</p>
<h3>Memoria</h3>
<p style="text-align:justify;">Entendemos por memoria los diferentes componentes del microcontrolador que se emplean para almacenar información durante un periodo determinado de tiempo. La información que necesitaremos durante la ejecución del programa será, por un lado, el propio código, y por otro, los diferentes datos que usemos durante la ejecución del mismo. Hablaremos por tanto de memoria de programa y de memoria de datos, respectivamente.</p>
<p style="text-align:justify;">La diferente naturaleza de la información que hay que almacenar hace necesario el uso de diferentes tipos memorias. Sin hacer especial énfasis en este apartado, sí habrá que tener en cuenta una clasificación básica, que distingue entre memoria volátil y no volátil. La primera es aquella que pierde la información que almacena al desconectarla de la alimentación; la segunda, como resulta obvio, no. Por lo tanto, se hace evidente que al menos la memoria de programa deberá ser no volátil: no sería práctico que el programa grabado en el microcontrolador se borrara cada vez que apagáramos el dispositivo. Con respecto a la memoria de datos, diremos por el momento según la situación puede interesarnos una u otra.</p>
<p style="text-align:justify;">La existencia de dos tipos de información a almacenar, nos lleva también al concepto de arquitectura. Entendemos por arquitectura el conjunto de componentes del microcontrolador y la forma en la que éstos se relacionan. Las más conocidas son la arquitectura Harvard y la arquitectura Von Neumann. En la primera, datos y programa estas almacenados en dos memorias físicamente separadas, cada una de ellas con un bus de comunicaciones propio. En la segunda, datos y programa se encuentran en el mismo dispositivo de memoria, por lo que comparten un mismo.</p>
<div id="attachment_57" class="wp-caption aligncenter" style="width: 439px"><img class="size-full wp-image-57" title="harvard" src="http://trecedb.files.wordpress.com/2009/02/harvard.png?w=510" alt="Arquitectura Harvard"   /><p class="wp-caption-text">Arquitectura Harvard</p></div>
<h4>
<p><div id="attachment_58" class="wp-caption aligncenter" style="width: 275px"><img class="size-full wp-image-58" title="von_neumann" src="http://trecedb.files.wordpress.com/2009/02/von_neumann.png?w=510" alt="Arquitectura Von Neumann"   /><p class="wp-caption-text">Arquitectura Von Neumann</p></div></h4>
<h3>Unidades de entrada/salida</h3>
<p style="text-align:justify;">Ya hemos visto qué parte del microcontrolador ejecuta las instrucciones de nuestro programa y de dónde las lee. Ahora sólo nos falta ver qué son las unidades de entrada/salida. Las unidades de entrada/salida son los sistemas que emplea el microcontrolador para comunicarse con el exterior. Imaginemos una televisión: por un lado tiene un dispositivo de salida, como es la pantalla, y por otro lado, de entrada, como son los botones de subir o bajar volumen y de cambio de canal. Así, los dispositivos de entrada nos permitirán introducir información en el microcontrolador y los de salida nos servirán para que éste la saque al exterior.</p>
<p style="text-align:justify;">En el futuro haremos mucho más hincapié en estos dispositivos, pues son fundamentales a la hora de desarrollar una aplicación: ¿qué sentido tendría diseñar un programa que hiciera ciertas operaciones para al final no mostrar ningún resultado al usuario final?</p>
<p style="text-align:justify;">El post de hoy ha sido una pequeña introducción teórica a los conceptos básicos que rodean al funcionamiento interno del microcontrolador. Es posiblemente uno de los temas más <em>aburridos</em>, por tratarse únicamente de teoría. Era de todas formas una lección necesaria y que nos ayudará en el futuro a comprender el comportamiento de un microcontrolador.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trecedb.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trecedb.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trecedb.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trecedb.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trecedb.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trecedb.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trecedb.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trecedb.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trecedb.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trecedb.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trecedb.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trecedb.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trecedb.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trecedb.wordpress.com/56/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=56&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trecedb.wordpress.com/2009/02/13/partes-del-microcontrolador/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7459ddd2a551f27c72ed656530017552?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fernandocereijo</media:title>
		</media:content>

		<media:content url="http://trecedb.files.wordpress.com/2009/02/harvard.png" medium="image">
			<media:title type="html">harvard</media:title>
		</media:content>

		<media:content url="http://trecedb.files.wordpress.com/2009/02/von_neumann.png" medium="image">
			<media:title type="html">von_neumann</media:title>
		</media:content>
	</item>
		<item>
		<title>Introducción a los microcontroladores: qué son y para qué sirven</title>
		<link>http://trecedb.wordpress.com/2009/02/11/introduccion-a-los-microcontroladores/</link>
		<comments>http://trecedb.wordpress.com/2009/02/11/introduccion-a-los-microcontroladores/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 20:56:54 +0000</pubDate>
		<dc:creator>Fernando</dc:creator>
				<category><![CDATA[Microcontroladores]]></category>
		<category><![CDATA[microcontrolador]]></category>
		<category><![CDATA[microchip]]></category>
		<category><![CDATA[circuito]]></category>
		<category><![CDATA[integrado]]></category>

		<guid isPermaLink="false">http://trecedb.wordpress.com/?p=32</guid>
		<description><![CDATA[Estamos rodeados de microchips; o al menos eso oímos continuamente en los medios: que si el móvil que llevamos con nosotros lleva uno, que si los coches los usarán para conducir solos y que incluso la lavadora hace uso de uno para saber cuanto detergente es necesario para lavar la ropa. Mucha gente emplea estos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=32&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Estamos rodeados de microchips; o al menos eso oímos continuamente en los medios: que si el móvil que llevamos con nosotros lleva uno, que si los coches los usarán para conducir solos y que incluso la lavadora hace uso de uno para saber cuanto detergente es necesario para lavar la ropa. Mucha gente emplea estos términos, pero no tanta sabe realmente qué un microchip y en qué se diferencia de otros términos similares.</p>
<p style="text-align:justify;">Así que, empezando por el principio, un microchip o circuito integrado es una pastilla de silicio en la que se implementan ciertos componentes electrónicos para que juntos puedan llevar a cabo una función determinada. Este <em>trozo </em>de silicio se encuentra recubierto generalmente por una cápsula de plástico para protegerlo del exterior. La conexión con el exterior se lleva a cabo mediante unas patillas metálicas denominadas pines.</p>
<div id="attachment_41" class="wp-caption aligncenter" style="width: 330px"><img class="size-full wp-image-41" title="microchips" src="http://trecedb.files.wordpress.com/2009/02/microchips.png?w=510" alt="Circuitos integrados"   /><p class="wp-caption-text">Circuitos integrados con ventana que permite ver su interior</p></div>
<p>El microchip supone una gran ventaja de cara a la miniaturización,</p>
<p>de un dispositivo, sino a su encapsulado, es decir, la forma en la que se presenta. El gran avance que supuso el microchip radica en que se redujo drásticamente el tamaño necesario para montar un circuito, pues todo lo necesario venía integrado y miniaturizado.</p>
<p style="text-align:justify;">
<p style="text-align:justify;">
<p style="text-align:justify;">
<p style="text-align:justify;">Existen circuitos integrados que desempeñan multitud de funciones: amplificación, regulación de tensión, conversión analógico/digital y digital/analógico, temporización&#8230; Y es que, el término microchip no hace referencia a la función del dispositivo, sino que simplemente engloba a todos aquellos dispositivos electrónicos encapsulados de una forma similar a la de los que vemos en la imagen.</p>
<p style="text-align:justify;">El disponer en el mercado de circuitos integrados que realizan una labor completa de forma autónoma es una gran ventaja y ayuda enormemente en el diseño de un proyecto más complejo. Sin embargo, la situación podría ser más favorable  aún si en lugar de tener muchos dispositivos que llevan a cabo una función concreta, tuviéramos sólo uno, pero que pudiera llevar a cabo distintas funciones según nuestros intereses. Eso es lo que conocemos como microcontrolador.</p>
<p style="text-align:justify;">Un microcontrolador es un dispositivo programable que ejecuta las instrucciones grabadas en su memoria. De esta forma, el microcontrolador se convierte en un pequeño ordenador y es el desarrollador el encargado de programarlo según sus necesidades. Además de la flexibilidad que esto aporta, los microcontroladores suelen contar con otros módulos  que añaden nuevas funcionalidades que analizaremos más adelante, como temporizadores, conversores analógico digital, módulos CCP&#8230;</p>
<p style="text-align:justify;">Todas estas características convierten a los microcontroladores en dispositivos todoterreno con un sin fin de aplicaciones: desde un reloj despertador como el que todos tenemos en la mesilla de noche hasta el control de tracción de un coche.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trecedb.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trecedb.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trecedb.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trecedb.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trecedb.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trecedb.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trecedb.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trecedb.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trecedb.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trecedb.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trecedb.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trecedb.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trecedb.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trecedb.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trecedb.wordpress.com&amp;blog=4779470&amp;post=32&amp;subd=trecedb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trecedb.wordpress.com/2009/02/11/introduccion-a-los-microcontroladores/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7459ddd2a551f27c72ed656530017552?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fernandocereijo</media:title>
		</media:content>

		<media:content url="http://trecedb.files.wordpress.com/2009/02/microchips.png" medium="image">
			<media:title type="html">microchips</media:title>
		</media:content>
	</item>
	</channel>
</rss>
