tag:blogger.com,1999:blog-21372566508670009262024-03-05T06:05:07.822+01:00Desarrollo de productos electrónicosDiego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.comBlogger22125tag:blogger.com,1999:blog-2137256650867000926.post-22366372719094648242011-05-28T13:11:00.002+02:002011-05-30T17:05:49.926+02:00Conversor digital analógico (DAC) I2C<span style="font-family: Arial,Helvetica,sans-serif;">La finalidad de este ejercicio es, usando el protocolo I2C, comunicar un pic 18F4550 con el conversor PCF8591 para así poder realizar una conversión digital- analógica.</span><br />
<br />
<span style="color: black; font-family: arial;"></span><br />
<span style="color: black; font-family: arial;"><b></b></span> <br />
<div style="color: white;"><span style="font-family: arial;">Lo primero que debemos tener en cuenta para la realización del ejercicio es como tenemos que configurar el componente para que realice la comunicación I2C correctamente.</span></div><div style="color: white;"><span style="font-family: arial;">Como siempre nos vamos a guiar del <a href="http://www.datasheetcatalog.org/datasheet/philips/PCF8591_6.pdf">datasheet del PCF859</a>1. Cuando sepamos como configurarlo para que realice la comunicación I2C es hora de diseñar y montar el circuito en cuestión.</span></div><span style="color: black; font-family: arial;"> </span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1w5GJnLPw0MBKyWJq2r4ZEF3QiH0g_BpSNeJrPq68OiY-VJQpRwKwCrCs3nmvz4EugRKUjVhVaJpr-SQFG_E-Mbpb7-CNTaO60s-0ptPsB_JfTMjIKSUzNd4dAJXI0LAwkwNivDA7YtE/s1600/dac_i2c.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1w5GJnLPw0MBKyWJq2r4ZEF3QiH0g_BpSNeJrPq68OiY-VJQpRwKwCrCs3nmvz4EugRKUjVhVaJpr-SQFG_E-Mbpb7-CNTaO60s-0ptPsB_JfTMjIKSUzNd4dAJXI0LAwkwNivDA7YtE/s320/dac_i2c.png" width="320" /></a></div><br />
<br />
<br />
<br />
<div style="color: white;"><span style="font-family: arial;">Colocamos el pic que vamos a utilizar, en este caso el 18F4550, el conversor (PCF8591), y un lcd para poder observar la tensión que hay en cada momento.</span></div><div style="color: white;"><span style="font-family: arial;"><br />
</span></div><div style="color: white;"><span style="font-family: arial;">El código que hemos utilizado es el siguiente:</span></div><span style="color: black; font-family: arial;"><br />
</span><br />
<div style="background-color: #eeeeee;"><span style="color: black; font-family: arial;"><span style="background-color: #eeeeee; font-size: x-small;">////////////////////////////////////////////////////////////////////////////////////<br />
// AUTOR: Diego Lavín Fernández <br />
////////////////////////////////////////////////////////////////////////////////////<br />
// PROGRAMA: Conversor Digital-Analógico <br />
// DISPOSITIVO: PIC18F4550 COMPILADOR: CCS 4. <br />
// Entorno IDE: SIMULADOR: Proteus 7.7 sp2 <br />
// TARJETA DE APLICACIÓN: DEBUGGER: <br />
////////////////////////////////////////////////////////////////////////////////////<br />
//Comunicación entre PIC 18F4550 y PCF8591 mediante protocolo I2C <br />
////////////////////////////////////////////////////////////////////////////////////<br />
// CABECERA //////////////////////////////////////////////////////////////////////<br />
////////////////////////////////////////////////////////////////////////////////////<br />
#include <18F4550.h> //librería pic<br />
#fuses INTHS<br />
#use delay(internal=8mhz,RESTART_WDT)<br />
#use i2c(Master,sda=PIN_B0,scl=PIN_B1,restart_wdt)<br />
#include <lcd.c> //librería lcd<br />
///////////////////////////////////////////////////////////////////////////////<br />
// VARIABLES GLOBALES /////////////////////////////////////////////////////////<br />
int tension=0;<br />
float a;<br />
///////////////////////////////////////////////////////////////////////////////<br />
// FUNCIONES //////////////////////////////////////////////////////////////////<br />
///////////////////////////////////////////////////////////////////////////////<br />
// PRINCIPAL //////////////////////////////////////////////////////////////////<br />
///////////////////////////////////////////////////////////////////////////////<br />
void main() <br />
{<br />
lcd_init();<br />
lcd_putc('\f'); <br />
lcd_gotoxy(1,1);<br />
<br />
i2c_start(); <br />
delay_ms(20); <br />
i2c_write(0b10010000); // direcciono para escritura<br />
delay_ms(20); <br />
i2c_write(0b01000000); // Configuro en modo conversor digital-analógico<br />
delay_ms(20); <br />
do<br />
{<br />
if((input(pin_a0)==1)&&(tension<400)) //si pulso aumentar y es menor que 500<br />
{<br />
i2c_write(tension); <br />
tension++; // Incremento la variable<br />
delay_ms(20); <br />
}<br />
<br />
lcd_gotoxy(1,1); <br />
a=tension*0.01945098; //convierto en tensión<br />
printf(lcd_putc,"V=%2.3lfV",a); <br />
}<br />
while(1); <br />
}</lcd.c></span></span></div><span style="color: black; font-family: arial;"><br />
</span><br />
<div style="color: white;"><span style="font-family: arial;">Una vez hecho el código lo compilamos para asegurarnos que no existe ningún error y lo insertamos en el pic. Si todo ha ido bien el conversor estará funcionando como en la imagen que se muestra a continuación:</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxy5G5h5z8fj9VOGz1PC1kwQnC4Fnu-uvdtFubeLAFnizeTFws-MHbVKsrvYvR-McdTvL8Pnfu0OXWK3IlpAn1q-q1Nl-nu0URtBhkEu8nSia7bmM55upHtrgjCsGxjiEufBCSuhx6fXA/s1600/dac_i2c_func.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxy5G5h5z8fj9VOGz1PC1kwQnC4Fnu-uvdtFubeLAFnizeTFws-MHbVKsrvYvR-McdTvL8Pnfu0OXWK3IlpAn1q-q1Nl-nu0URtBhkEu8nSia7bmM55upHtrgjCsGxjiEufBCSuhx6fXA/s320/dac_i2c_func.png" width="320" /></a></div><br />
<div style="color: white;"><span style="font-family: arial;">Ahora podemos crear el layout con el Ares y ver como quedaría en 3d.</span></div><div style="color: white;"><span style="font-family: arial;">Puede ser que al abrir el Ares nos de problemas con los packages de los componentes, esto se debe a que en proteus debemos indicar en propiedades el tipo de encapsulado que queremos.</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjr_LzjML8kRA7wM_8YVrQczbYsAAxDUnAnVWBCBQtS03NpNa_AqNJS91OuLpH1sWQbmmJHi7hDyHB93tcDG4oSmrn5vkCWNbQDbXFX9D9ymYc2m6bN9WcrOh7DiZcCUHvT_S5yvab5vUQ/s1600/dac_i2c_ares.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjr_LzjML8kRA7wM_8YVrQczbYsAAxDUnAnVWBCBQtS03NpNa_AqNJS91OuLpH1sWQbmmJHi7hDyHB93tcDG4oSmrn5vkCWNbQDbXFX9D9ymYc2m6bN9WcrOh7DiZcCUHvT_S5yvab5vUQ/s320/dac_i2c_ares.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVLW-p7GJ9rhDlqwFvqTkvrEySrkN4xgDTlRT0cNLXo_o-UA7LIAu6wK2UYfWEwGJa-Bqw9d63-6pCs9L9ZBPl95AyaSzSqQ3aHanszQTwRkJMdwDcsRP56J5uUCQf5wEyumDy-3xfLwg/s1600/dac_i2c_ares3d.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVLW-p7GJ9rhDlqwFvqTkvrEySrkN4xgDTlRT0cNLXo_o-UA7LIAu6wK2UYfWEwGJa-Bqw9d63-6pCs9L9ZBPl95AyaSzSqQ3aHanszQTwRkJMdwDcsRP56J5uUCQf5wEyumDy-3xfLwg/s320/dac_i2c_ares3d.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjr_LzjML8kRA7wM_8YVrQczbYsAAxDUnAnVWBCBQtS03NpNa_AqNJS91OuLpH1sWQbmmJHi7hDyHB93tcDG4oSmrn5vkCWNbQDbXFX9D9ymYc2m6bN9WcrOh7DiZcCUHvT_S5yvab5vUQ/s1600/dac_i2c_ares.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div><span style="color: black; font-family: arial;"><br />
</span>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com1tag:blogger.com,1999:blog-2137256650867000926.post-86838142282140196312011-05-02T14:12:00.002+02:002011-05-30T16:11:39.250+02:00Medidor de temperatura TC77 con SPI<span style="font-family: Arial,Helvetica,sans-serif;">En este ejercicio, debemos leer la temperatura mediante un TC77 utilizando la comunicación SPI y un PIC18F4550. Se mostrará la temperatura en un lcd.</span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Antes de nada debemos estudiar el funcionamiento del TC77, para ello vamos al <a href="http://ww1.microchip.com/downloads/en/DeviceDoc/20092a.pdf">datasheet.</a></span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Una vez tengamos las cosas mas claras es hora de pasar a programar el pic, con el Pic c Compiler, como hasta ahora.</span><br />
<br />
<div style="background-color: #eeeeee;"><span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;">//////////////////////////////////////////////////////////////////////////////<br />
// AUTOR: Diego Lavín Fernández Abril-2011 //<br />
//////////////////////////////////////////////////////////////////////////////<br />
// PROGRAMA: LEER TEMPERATURA DE UN TC77 VERSIÓN: <br />
// DISPOSITIVO: PIC18F4550 COMPILADOR: CCS vs4.93<br />
// Entorno IDE: SIMULADOR: Proteus 7.7 sp2<br />
// TARJETA DE APLICACIÓN: DEBUGGER: <br />
//////////////////////////////////////////////////////////////////////////////<br />
<br />
//////////////////////////////////////////////////////////////////////////////<br />
//Leer temperatura desde tc77 //<br />
//////////////////////////////////////////////////////////////////////////////<br />
<br />
//////////////////////////////////////////////////////////////////////////////<br />
// CABECERA //////////////////////////////////////////////////////////////////<br />
//////////////////////////////////////////////////////////////////////////////<br />
#include <18F4550.h><br />
#fuses INTHS //oscilador interno<br />
#use delay(internal=8Mhz) <br />
#include <lcd_puertod.c><br />
<br />
//////////////////////////////////////////////////////////////////////////////<br />
// VARIABLES GLOBALES ////////////////////////////////////////////////////////<br />
//////////////////////////////////////////////////////////////////////////////<br />
long int a,b;<br />
int th,tl;<br />
<br />
//////////////////////////////////////////////////////////////////////////////<br />
// FUNCIONES /////////////////////////////////////////////////////////////////<br />
//////////////////////////////////////////////////////////////////////////////<br />
<br />
//////////////////////////////////////////////////////////////////////////////<br />
// PRINCIPAL /////////////////////////////////////////////////////////////////<br />
//////////////////////////////////////////////////////////////////////////////<br />
void main(void)<br />
{<br />
setup_spi(spi_master | spi_l_to_h | spi_clk_div_16); //configurar spi como maestro<br />
lcd_init(); //iniciar lcd<br />
lcd_gotoxy(1,1); //cursor lcd a posicion 1,1<br />
lcd_putc("Temperatura:"); //escribe en lcd<br />
<br />
for (;;)<br />
{<br />
a=0;<br />
b=0;<br />
<br />
output_low(pin_a0); //habilito cs<br />
th=spi_read(0x00); //leo valor de th<br />
<br />
if(bit_test(th,6)){a=a+128.0;} <br />
if(bit_test(th,5)){a=a+64.0;} <br />
if(bit_test(th,4)){a=a+32.0;} <br />
if(bit_test(th,3)){a=a+16.0;} <br />
if(bit_test(th,2)){a=a+8.0;} <br />
if(bit_test(th,1)){a=a+4.0;} <br />
if(bit_test(th,0)){a=a+2.0;} <br />
<br />
tl=spi_read(0x00);<br />
if(bit_test(tl,7)){a=a+1.0;} <br />
if(bit_test(tl,6)){b=b+500;} <br />
if(bit_test(tl,5)){b=b+250;} <br />
if(bit_test(tl,4)){b=b+125;} <br />
<br />
output_high(pin_a0);<br />
delay_ms(100);<br />
<br />
lcd_gotoxy(1,2);<br />
if(bit_test(th,7)) <br />
{<br />
a=511-(a+256); <br />
printf(lcd_putc,"-%lu",a);<br />
<br />
b=1000-b; <br />
} <br />
else{<br />
printf(lcd_putc,"%lu",a);<br />
}<br />
printf(lcd_putc,".%lu ",b);<br />
<br />
}<br />
} </lcd_puertod.c></span></div><div style="background-color: #eeeeee;"><br />
</div><div style="background-color: white;"><br />
</div><div style="background-color: white;"><span style="font-family: Arial,Helvetica,sans-serif;">Cuando finalicemos, hay que montar el circuito en Proteus y comprobar que la temperatura que marca el TC77 es igual a la que se nos muestra por el lcd (milésimas arriba o abajo, ya que cuanto más preciso lo querramos, mas largo se hace el programa).</span></div><div class="separator" style="background-color: white; clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFad_aMNK5LDZ6xUiydzgeoQgCCfvdQyXb6oClh78TfsxJHcLJRK3aCIfKao8dzcRkge84URwKiIsFxwpeY3PhNQYaYpOAhh6h6_kWj5OjMyrOgYhIUIJ5_9rYaYMBsuJGKU4w_vPyOtk/s1600/tc77+proteus.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFad_aMNK5LDZ6xUiydzgeoQgCCfvdQyXb6oClh78TfsxJHcLJRK3aCIfKao8dzcRkge84URwKiIsFxwpeY3PhNQYaYpOAhh6h6_kWj5OjMyrOgYhIUIJ5_9rYaYMBsuJGKU4w_vPyOtk/s320/tc77+proteus.png" width="320" /></a></div><div class="separator" style="background-color: white; clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDzOHIef1cxzXwi97pPfYJli97U6ymEVxFdYJVysqgPp_opb3nr_iqqbEm-Ob_e3A6IhtdhO0m3YQLhTEb5Pzbym83ZSYoQztISYqEwCqXnArM6jt1RcDTNYHErk0Lr5tll5M1c-Y3xJ0/s1600/spi_tc77.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="215" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDzOHIef1cxzXwi97pPfYJli97U6ymEVxFdYJVysqgPp_opb3nr_iqqbEm-Ob_e3A6IhtdhO0m3YQLhTEb5Pzbym83ZSYoQztISYqEwCqXnArM6jt1RcDTNYHErk0Lr5tll5M1c-Y3xJ0/s320/spi_tc77.png" width="320" /></a></div><div style="background-color: white;"><br />
</div><div style="background-color: white;"><span style="font-family: Arial,Helvetica,sans-serif;">También hay que comprobar que en el SPI debugger esté actuando correctamente y que envíe los datos que debe enviar.</span></div><div style="background-color: white;"><span style="font-family: Arial,Helvetica,sans-serif;">Cuando comprobemos que todo está bien, vamos al Ares y creamos nuestra placa:</span></div><div class="separator" style="background-color: white; clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIGLXR6VbfG5HjEr-UOdALNeEhFFeVaokqIqz7h96Wp31v07HQ2VuUWtXKy03XJzn81SDKXci4dHo6MfJA4BkNlcXOrTsx5zMuvCfhxOS0hf-Kl_GCDJPvRIUbNxnOf8m6-HzyDX-o_6Q/s1600/ares-tc77.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="319" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIGLXR6VbfG5HjEr-UOdALNeEhFFeVaokqIqz7h96Wp31v07HQ2VuUWtXKy03XJzn81SDKXci4dHo6MfJA4BkNlcXOrTsx5zMuvCfhxOS0hf-Kl_GCDJPvRIUbNxnOf8m6-HzyDX-o_6Q/s320/ares-tc77.png" width="320" /></a></div><div style="background-color: white;"><span style="font-family: Arial,Helvetica,sans-serif;">Vista en 3d:</span></div><div class="separator" style="background-color: white; clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglcAWgxPbiqkuLg2MYaHK3t2MxL2Kzyb37pcOvNigtQIwAu3Ecw31ycBSH7HYdQaPPsp62CHIIGpRyHZGZ_3JI3kP5_gD0zNSKbkpCmPnMOAaD2FlVM3-qHMRxkjFr0pU5jx8gAzk7ox8/s1600/ares-tc773d.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglcAWgxPbiqkuLg2MYaHK3t2MxL2Kzyb37pcOvNigtQIwAu3Ecw31ycBSH7HYdQaPPsp62CHIIGpRyHZGZ_3JI3kP5_gD0zNSKbkpCmPnMOAaD2FlVM3-qHMRxkjFr0pU5jx8gAzk7ox8/s320/ares-tc773d.png" width="320" /></a></div><div style="background-color: white;"><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span></div><div style="background-color: white;"><span style="font-family: Arial,Helvetica,sans-serif;">Para descargar los archivos: <a href="http://www.blogger.com/%09http://www.adrive.com/public/2477e4bfe8b0b8127d3d3a937d36f1203928df47d4629826b83b8b8f2e1eafa4.html">AQUI</a></span></div>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com0tag:blogger.com,1999:blog-2137256650867000926.post-28791531947854495402011-05-02T12:47:00.001+02:002011-05-02T12:51:26.095+02:00EEPROM SPI<span style="font-family: Arial,Helvetica,sans-serif;">El ejercicio consiste en escribir y leer de una eeprom 25LC020, que está disponible en Proteus, utilizando el bus SPI. Todo ello utilizando el PIC18F4550.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Empezaremos haciendo el código en C (Pic c Compiler).</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Hay comentarios para aclarar las distintas funciones que se utilizan: </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<div style="background-color: #999999;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="background-color: #f3f3f3; font-size: x-small;"><span style="background-color: #999999;">///////////////////////////////////////////////////////////////////////////////</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> // AUTOR: Diego Lavín Abril/2011</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> //////////////////////////////////////////////////////////////////////////////</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> // PROGRAMA:Escribir en eeprom VERSIÓN: 1.0</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> // DISPOSITIVO: PIC 18F4550 COMPILADOR: Pic c Compiler 4,093</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> // Entorno IDE: SIMULADOR: Proteus 7.7 sp2</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> // TARJETA DE APLICACIÓN: DEBUGGER: </span><br style="background-color: #999999;" /><span style="background-color: #999999;"> ///////////////////////////////////////////////////////////////////////////////</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> ///////////////////////////////////////////////////////////////////////////////</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> ///////////////////////////////////////////////////////////////////////////////</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> //Escribir en una eeprom con el PIC 18F4550 utilizando el bus SPI.</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> //Se mostrará en un lcd los datos escritos y los que ha leido.</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> ///////////////////////////////////////////////////////////////////////////////</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> ///////////////////////////////////////////////////////////////////////////////</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> // CABECERA ///////////////////////////////////////////////////////////////////</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> ///////////////////////////////////////////////////////////////////////////////</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> #include <18F4550.h></span><br style="background-color: #999999;" /><span style="background-color: #999999;"> #fuses inths //oscilador interno</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> #use delay(internal=8Mhz) </span><br style="background-color: #999999;" /><span style="background-color: #999999;"> #include </span><lcd_puertod.c><br style="background-color: #999999;" /><span style="background-color: #999999;"> ///////////////////////////////////////////////////////////////////////////////</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> // VARIABLES GLOBALES /////////////////////////////////////////////////////////</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> ///////////////////////////////////////////////////////////////////////////////</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> int a,b;</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> ///////////////////////////////////////////////////////////////////////////////</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> // FUNCIONES //////////////////////////////////////////////////////////////////</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> ///////////////////////////////////////////////////////////////////////////////</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> ///////////////////////////////////////////////////////////////////////////////</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> // PRINCIPAL //////////////////////////////////////////////////////////////////</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> ///////////////////////////////////////////////////////////////////////////////</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> void main()</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> {</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> </span><br style="background-color: #999999;" /><span style="background-color: #999999;"> setup_spi(spi_master | spi_l_to_h | spi_clk_div_16); //spi como maestro</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> lcd_init(); //iniciar lcd</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> do{</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> output_low(pin_a0); //habilita cs </span><br style="background-color: #999999;" /><span style="background-color: #999999;"> lcd_putc("\fEscribe\n "); //escribe en lcd</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> for(a=0x00;a<=0x09;a++) //cuenta desde 0 a 9</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> { </span><br style="background-color: #999999;" /><span style="background-color: #999999;"> spi_write(a); //escribe el valor de a </span><br style="background-color: #999999;" /><span style="background-color: #999999;"> printf(lcd_putc,"%u",a); //muestra el valor de a por lcd</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> delay_ms(200); </span><br style="background-color: #999999;" /><span style="background-color: #999999;"> }</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> output_high(pin_a0); //deshabilita cs</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> delay_ms(1500); </span><br style="background-color: #999999;" /><span style="background-color: #999999;"> lcd_putc("\fLee\n "); //escribe en lcd</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> output_low(pin_a0); //habilita cs</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> spi_read(0x03); //configurar lectura</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> spi_read(0x00); //lee desde la posicion 0</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> for(b=0x00;b<=0x09;b++) //desde la 0 hasta la 9</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> { </span><br style="background-color: #999999;" /><span style="background-color: #999999;"> a=(spi_read(b)); //lee el puerto b</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> printf(lcd_putc,"%u",a); //escribe el valor de a</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> delay_ms(200); </span><br style="background-color: #999999;" /><span style="background-color: #999999;"> } </span><br style="background-color: #999999;" /><span style="background-color: #999999;"> </span><br style="background-color: #999999;" /><span style="background-color: #999999;"> output_high(pin_a0); //deshabilita cs</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> delay_ms(2000);</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> }while(1);</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> }</span> </lcd_puertod.c></span></span></div><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Ahora nos queda relizar el esquemático con Proteus</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh47tcIAGP8FNq7ZiXMCHxJtnXWu70kobQAEIMYLwcthXPsdZ2dxUOvzMNtNmIrwl9QmKFqohk_2RRZRHO1r8wLaXLS_8cUjU8lD_n2qkzbhusu88KqYFYlG9KaPGaYEUCHtmJYD5M66ak/s1600/eeprom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh47tcIAGP8FNq7ZiXMCHxJtnXWu70kobQAEIMYLwcthXPsdZ2dxUOvzMNtNmIrwl9QmKFqohk_2RRZRHO1r8wLaXLS_8cUjU8lD_n2qkzbhusu88KqYFYlG9KaPGaYEUCHtmJYD5M66ak/s320/eeprom.png" width="320" /></a></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;"> </span><span style="font-family: Arial,Helvetica,sans-serif;">Así queda el circuito con todos sus componentes, ahora vamos a ver el funcionamiento del programa en sí.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj3G-eo3wyBH6l-M_XeTQo9fowV_uOVvt7tA4wvN_eA_yO-1J5mykahFjP4bPzPdiiTcjotnFC7jdH0ZCWv9n_3aaJ5kGZFv6yW_R_tysSZWg6iQnEgicOPProsyfQRPlQArKRezjkb6M/s1600/spi+memory.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="264" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj3G-eo3wyBH6l-M_XeTQo9fowV_uOVvt7tA4wvN_eA_yO-1J5mykahFjP4bPzPdiiTcjotnFC7jdH0ZCWv9n_3aaJ5kGZFv6yW_R_tysSZWg6iQnEgicOPProsyfQRPlQArKRezjkb6M/s320/spi+memory.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1JMihSDd5UbPDF_j2fHeznE1jvkBvCKT0SujC19J88bbvr5Gmz01MlV2pioq_TQAchqVO_jz4dwSET_Jex7mSDRxvWdvbbw_0zMmTLUbkwrPf418NTQ_p_26jHDSITspCIy21uGuqcQ8/s1600/spi+memory2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1JMihSDd5UbPDF_j2fHeznE1jvkBvCKT0SujC19J88bbvr5Gmz01MlV2pioq_TQAchqVO_jz4dwSET_Jex7mSDRxvWdvbbw_0zMmTLUbkwrPf418NTQ_p_26jHDSITspCIy21uGuqcQ8/s320/spi+memory2.png" width="320" /></a></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<br />
<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Podemos ver como escribimos y leemos, en este caso una secuencia de 0-9 como se programó en C. </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Lo que se muestra por el LCD es lo mismo que muestra la eeprom.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxaQn5rGZ-fA0D8diJu5ZKuTYdZqveVov32NfdKuD0iGYhcXVNbUqbEBZ01kvDBLB8jKwQI-2ib0zy91OAKBP17XDGbO5TUoM5vWpaS-upO7GFRhOwrT5kfBa6xvfn4ekeaVXvwqqkTzg/s1600/ares_eeprom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxaQn5rGZ-fA0D8diJu5ZKuTYdZqveVov32NfdKuD0iGYhcXVNbUqbEBZ01kvDBLB8jKwQI-2ib0zy91OAKBP17XDGbO5TUoM5vWpaS-upO7GFRhOwrT5kfBa6xvfn4ekeaVXvwqqkTzg/s320/ares_eeprom.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOgJsQPMtOA2Dp740-GzXDxqK39Ac9yC9wAo6uUQ3ko7uPk8Qx7F8DR0J-1x8MN7pXpbbG5r-NtsZGS30cUVyW3fICX2d6S0umJbEnPQiSZhNZ6vxxl1L0y0cssL4Cbxu7fS18j0dCdsI/s1600/ares_eeprom3d.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOgJsQPMtOA2Dp740-GzXDxqK39Ac9yC9wAo6uUQ3ko7uPk8Qx7F8DR0J-1x8MN7pXpbbG5r-NtsZGS30cUVyW3fICX2d6S0umJbEnPQiSZhNZ6vxxl1L0y0cssL4Cbxu7fS18j0dCdsI/s320/ares_eeprom3d.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Para descargar el ejercicio: <a href="http://www.adrive.com/public/07e655497bf4a5f47b0b78d46e66598647d5f70eef626fd99dbc31fd100a2053.html">AQUI</a></span>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com0tag:blogger.com,1999:blog-2137256650867000926.post-46599113029382232802011-03-01T15:54:00.001+01:002011-03-02T09:57:15.657+01:00Leer una base de datos (Access) y mostrar los resultados gráficamente<span style="font-family: Arial,Helvetica,sans-serif;">El ejercicio consiste en leer una tabla de una base de datos de Access y posteriormente mostrar todos esos datos en una gráfica mediante Labview.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">En mi ejercicio voy a simular la tempertaura en 30 días aleatorios utilizando unas temperaturas también aleatorias comprendidas entre -5 y 30 ºC.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIMzleOcQz-KFlZ_wDyRqpn6zgY8N4TQx6WJ2_IKKYME62GVBVyg9YdkSq6gsZT14sdXm6w44j7WnzjxMjyMYpIdgm2uE4yaW8JoeSz41HjPLgShHKprO53CIwoi6EhCk0kxOwuowRMXw/s1600/labview_temp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="164" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIMzleOcQz-KFlZ_wDyRqpn6zgY8N4TQx6WJ2_IKKYME62GVBVyg9YdkSq6gsZT14sdXm6w44j7WnzjxMjyMYpIdgm2uE4yaW8JoeSz41HjPLgShHKprO53CIwoi6EhCk0kxOwuowRMXw/s320/labview_temp.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;">Lo primero que vamos a hacer es crear nuestro get udl personal, que será donde se especifique la ruta en la que está guardada la base de datos que vamos a utilizar.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8MLnnpyIxHuRoxXHI2Yl_7oDlq9xq9cZ1I9_sjUSK2KBmRYOEhWRMPXGT7O2t3yaoLniuoiFOlaA_J-xVyjhFBbVG2B2LDn5SZN5ZyEsBYg8T0YeTOZrXC9JlVj0V3UbqcegtRjA-4xQ/s1600/get+udl.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="82" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8MLnnpyIxHuRoxXHI2Yl_7oDlq9xq9cZ1I9_sjUSK2KBmRYOEhWRMPXGT7O2t3yaoLniuoiFOlaA_J-xVyjhFBbVG2B2LDn5SZN5ZyEsBYg8T0YeTOZrXC9JlVj0V3UbqcegtRjA-4xQ/s320/get+udl.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;">Después de abrir y limpiar los posibles datos que haya anteriormente en esa tabla, creamos una nueva con datos aleatorios.</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-ug3kqCbUikwkMBSv0IiD561KcENU7_6X0gO1fRlzCpW3rZ81J6O7xZ913umar6iA1qmHGHhvV0Rd-3N2XkEhpCrHRM8GtVyd7ekfW9qHSJipfBcy3qFX3jyiBBuHqmOYEhWbLTkBo8I/s1600/labview_temp_codigo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-ug3kqCbUikwkMBSv0IiD561KcENU7_6X0gO1fRlzCpW3rZ81J6O7xZ913umar6iA1qmHGHhvV0Rd-3N2XkEhpCrHRM8GtVyd7ekfW9qHSJipfBcy3qFX3jyiBBuHqmOYEhWbLTkBo8I/s320/labview_temp_codigo.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;">Cada vez que se nos muestra por pantalla el gráfico, es porque ha creado una base de datos nueva y los ha generado como una función.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUY6kVFNWgA0PHW2cAkNYRnwiPTdcw-a9h3RuOsaPhuibXAxPFmPcr93CEadLvz0zW9J1alQWKFrZx-oox9q6gEKR8WJPJLwzhXvNKavvHMc6g4KVsuzOg4x9ZpaQIF2ALUC-BwQg9gs0/s1600/acces.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUY6kVFNWgA0PHW2cAkNYRnwiPTdcw-a9h3RuOsaPhuibXAxPFmPcr93CEadLvz0zW9J1alQWKFrZx-oox9q6gEKR8WJPJLwzhXvNKavvHMc6g4KVsuzOg4x9ZpaQIF2ALUC-BwQg9gs0/s320/acces.png" width="223" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><a href="http://www.adrive.com/public/c6ebefa09a0d63b722a49455143129a8886643f02f2e4bcfe8ea6f804b9b9e24.html"><span style="font-size: large;"><span style="background-color: black; color: white;">DESCARGA EL EJERCICIO</span></span></a><br />
</span>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com0tag:blogger.com,1999:blog-2137256650867000926.post-41977184662084297542011-02-25T11:10:00.002+01:002011-03-14T16:03:09.194+01:00Medir un objeto con visión artificial<span style="font-family: Arial,Helvetica,sans-serif;">El ejercicio consiste en medir la longitud de un objeto utilizando el programa <a href="http://joule.ni.com/nidu/cds/view/p/id/1402/lang/en">Vision Builder 2009</a>.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Utilizando este programa y una webcam seremos capaces de saber la longitud de cualquier objeto que pase ante la cam en tiempo real.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">El primer paso que debemos hacer es seleccionar la cámara que vamos a utilizar:</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlhrdj2VZlNkRk6QY9J2r1EWG31Gz8_1kgKXnMFZxAvtzhHXJCMmYQ8dfmjIxnwBhm8mSQOEwrz7kRb7ZWdkxmmsf1l7StrwfMhdjYTUuhyeix1IV6DgHiYEd8YkPpGWlyF_o_Eoa7LnM/s1600/cam1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlhrdj2VZlNkRk6QY9J2r1EWG31Gz8_1kgKXnMFZxAvtzhHXJCMmYQ8dfmjIxnwBhm8mSQOEwrz7kRb7ZWdkxmmsf1l7StrwfMhdjYTUuhyeix1IV6DgHiYEd8YkPpGWlyF_o_Eoa7LnM/s320/cam1.png" width="320" /></a></div><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Una vez seleccionada debemos filtrar la imagen, ya que algunos de los pasos que vamos a realizar así lo exigen. Para ello nos vamos a la pestaña Inspection Steps: Enhance Images y escogemos la opción de Vision Assistant, cuando nos pregunte por la región de interes marcamos Full Image y luego vamos a Edit. Aquí se nos abre una nueva ventana con otra aplicación de Vision. En esta lo que vamos a hacer va a ser extraer el color</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp4z38Bpe_5tXGt0AWS-DA2goqFy7YV-u7BO_KJfiHTbR18F_aFt8Wc2ZEf8xv5Rg9agQ8Ilzo36_0XqdQ7EGgiAJ9fWz7D7WiTVQliirGMEiZo17sC4-vBYHee70vNC0-WbH86m9bt0s/s1600/color.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp4z38Bpe_5tXGt0AWS-DA2goqFy7YV-u7BO_KJfiHTbR18F_aFt8Wc2ZEf8xv5Rg9agQ8Ilzo36_0XqdQ7EGgiAJ9fWz7D7WiTVQliirGMEiZo17sC4-vBYHee70vNC0-WbH86m9bt0s/s1600/color.png" /></a></div><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Ahora ya podemos seguir.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">El siguiente paso va a ser calibrar la imagen. Podemos poner una regla en frente de la cámara y así calibrar la distancia que deseemos.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Una vez hecha la calibración, escogeremos la opción Caliper para seleccionar la zona donde queremos que se realize la medición.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqXJEzRk_4n9b21OpOacxqaKZpfi_CRfqDVXo-Ifs54j0IN-4SFG8q-WnmBGmmAhNMPIS8RG157Z5vpfsEOlQV9TXz26y6wJfCq-Zf6qJUypQe4ICeobophAJoX-XJsr1E1CS1qsSIUpw/s1600/caliper.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqXJEzRk_4n9b21OpOacxqaKZpfi_CRfqDVXo-Ifs54j0IN-4SFG8q-WnmBGmmAhNMPIS8RG157Z5vpfsEOlQV9TXz26y6wJfCq-Zf6qJUypQe4ICeobophAJoX-XJsr1E1CS1qsSIUpw/s320/caliper.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Lo último que nos queda es mostrar la medida, teniendo como referencia la calibración hecha anteriormente.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixlPZEA-VhHiUuJABnUWZdkzOcSePx1h8hXrHmWIqLzIc0F-xK_ibP3GVXslR3FYgbui8_x4ze8jTqUTJPlBJcPGLrGRhtzt_WHQ9sgsWqaVW8sg3oKxx2pouQ_qVamET6oVVngMduqxM/s1600/calibrated.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixlPZEA-VhHiUuJABnUWZdkzOcSePx1h8hXrHmWIqLzIc0F-xK_ibP3GVXslR3FYgbui8_x4ze8jTqUTJPlBJcPGLrGRhtzt_WHQ9sgsWqaVW8sg3oKxx2pouQ_qVamET6oVVngMduqxM/s320/calibrated.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Ya está finalizado, ahora podemos poner un objeto y nos lo medirá en tiempo real</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPsIeCENAy6KObnb_5vnu5pxoUk4m4yJZaaRPHW0v_4dvGzM7SgJpSa06NQfPNy266IVf_b67Zi_5PJb_5VSTkBF4lR7f-E8xtZVO_nCHD1Dnk7UoRzpbay7gDr91tXR9ySH9Y0cLDqx8/s1600/cam.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPsIeCENAy6KObnb_5vnu5pxoUk4m4yJZaaRPHW0v_4dvGzM7SgJpSa06NQfPNy266IVf_b67Zi_5PJb_5VSTkBF4lR7f-E8xtZVO_nCHD1Dnk7UoRzpbay7gDr91tXR9ySH9Y0cLDqx8/s320/cam.png" width="320" /></a></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><a href="http://www.adrive.com/public/042df7f42b52f13a666123428ad834dc3d3b62875a27fdbcfdf9d937037793af.html">DESCARGA EL EJERCICIO</a><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com1tag:blogger.com,1999:blog-2137256650867000926.post-49175840445270099352011-02-20T17:06:00.002+01:002011-03-14T16:54:15.878+01:00Comunicación SPI entre PIC´s<span style="font-family: Arial,Helvetica,sans-serif;">En este ejercicio vamos a comunicar dos PIC18F4550, utilizando el bus SPI (Serial Peripheral Interface)</span><span style="font-family: Arial,Helvetica,sans-serif;">. </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Como en el <a href="http://electronicalavin.blogspot.com/2011/02/lcd-grafico-y-pic18f4550.html">ejercicio anterior </a>vamos a utilizar el CCS C para programar y compilar en C y el Proteus 7.7 sp2 para simular el circuito. Finalmente usaremos el Ares para diseñar el pcb y ver como quedaría finalmente.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"> </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">En este caso existen dos PIC´s, por lo que tendrá que haber dos progrmas distintos, uno para cada pic. El primero actuará como maestro que se encargará de mandar un dato al otro pic, el esclavo que leerá el dato.</span><br />
<div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjQOeVhtRoPcR49PYcTzIFAg8m-8QjO-I78k9aPpgsyCNW26jsQPwAo7QVK5XDbi0wR9bQljqN2D8JNYWfGlUdhrbdFW2z-L15ID6BouwDPYPSEZ3cw9ZqHhQMVivn-UoH7ncCilregqQ/s1600/comunicacion+spi.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="221" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjQOeVhtRoPcR49PYcTzIFAg8m-8QjO-I78k9aPpgsyCNW26jsQPwAo7QVK5XDbi0wR9bQljqN2D8JNYWfGlUdhrbdFW2z-L15ID6BouwDPYPSEZ3cw9ZqHhQMVivn-UoH7ncCilregqQ/s320/comunicacion+spi.png" width="320" /></a><span style="font-family: Arial,Helvetica,sans-serif;"> </span></div><div style="text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">En la imagen se ve como en el primer pic (maestro) hay un switch y en el segundo (esclavo) hay un diodo led rojo, el otro símplemente es de prueba. Cuando el switch está activado se enciende el led, por lo que está habiendo una comunicación entre pic´s.</span></div><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">El código del maestro, en el que configuro el pic como maestro para el uso del SPI y escribo en un pin:</span><br />
<br />
<div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">// AUTOR: Diego Lavín Febrero/2011 </span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">// PROGRAMA: </span><span style="font-size: small;">Comunicación entre PICs</span><span style="font-size: small;"> VERSIÓN: 1.0<br />
// DISPOSITIVO: PIC18F4550 COMPILADOR: CCS vs4.93<br />
// Entorno IDE: SIMULADOR: Proteus 7.7 sp2<br />
// TARJETA DE APLICACIÓN: DEBUGGER: </span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">//</span><span style="font-size: small;">Comunicar 2 PICs 18F4550 utilizando el protocolo SPI. Cuando hay un "1" lógico<br />
//en el pin ra1 se enciende un diodo led. <br />
</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">//</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">//CABECERA///////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">#include < 18f4550.h> //pic a utilizar<br />
#fuses inths //oscilador interno<br />
#use delay(internal=8Mhz) //frecuencia del oscilador </span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;"><br />
</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">//VARIABLES GLOBALES////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span> </div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">//FUNC<span style="background-color: #999999;">IONES/////////////////////////////////////////////////////////////</span></span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">//PRINCIPAL/////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span><br />
<span style="background-color: #999999; font-family: Times,"Times New Roman",serif; font-size: small;"><span style="background-color: #999999;">void main( )</span></span><span style="font-family: Arial,Helvetica,sans-serif;"><span style="background-color: #999999; font-family: Times,"Times New Roman",serif; font-size: small;"><br />
{<br />
setup_spi(spi_master | spi_l_to_h | spi_clk_div_16); //configurar spi como maestro<br />
while(1)<br />
{<br />
// spi_write(input(pin_a0)); //escribir en el pin ra0<br />
spi_write(input(pin_a1)); //escribir en el pin ra1<br />
delay_ms(1000);<br />
}<br />
} </span></span><span style="font-size: small;"><br />
</span></div><div style="font-family: Times,"Times New Roman",serif;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="background-color: #999999; font-family: Times,"Times New Roman",serif; font-size: small;"></span><br />
</span></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Código del esclavo, aquí configuro el pic como esclavo y leo continuamente si hay dato en el SPI y si le hay que active el puerto c como salida:</span><br />
<br />
<div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">// AUTOR: Diego Lavín Febrero/2011 </span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">// PROGRAMA: </span><span style="font-size: small;">Comunicación entre PICs</span><span style="font-size: small;"> VERSIÓN: 1.0<br />
// DISPOSITIVO: PIC18F4550 COMPILADOR: CCS vs4.93<br />
// Entorno IDE: SIMULADOR: Proteus 7.7 sp2<br />
// TARJETA DE APLICACIÓN: DEBUGGER: </span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">//</span><span style="font-size: small;">Comunicar 2 PICs 18F4550 utilizando el protocolo SPI. Cuando hay un "1" lógico<br />
//en el pin ra1 se enciende un diodo led. <br />
</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">//</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">//CABECERA///////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">#include < 18f4550.h> //pic a utilizar<br />
#fuses inths //oscilador interno<br />
#use delay(internal=8Mhz) //frecuencia del oscilador </span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;"><br />
</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">//VARIABLES GLOBALES////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span> </div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">//FUNCIONES/////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">//PRINCIPAL/////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span><br />
<span style="font-size: small;">void main()<br />
{<br />
setup_spi(spi_slave | spi_l_to_h | spi_clk_div_16); //configurar spi como esclavo<br />
for(;;)<br />
{<br />
if(spi_data_is_in()) //si hay un dato en el spi<br />
{ <br />
//output_d(spi_read()); <br />
output_c(spi_read()); <br />
}<br />
}<br />
}</span></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Vista en Ares y como dije anteriormente cuidado con los packages de los componentes porque pueden faltar al no haber sido asignados en el Proteus o porque no existe package de ese componente:</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYeSROJ_Acprl2RFw6DE-LBkX9zY-BehR3_eho55xUtdG9PNnvk9-Xxj089gx7yLsCjIMpHXs8yzBUMYTrNJyOvmqVEhpOtFKqSf0u9YwkL89RZNN70KMIfVRMwQssyIHo42A3S9NdkJ0/s1600/comunicacion+ares.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="283" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYeSROJ_Acprl2RFw6DE-LBkX9zY-BehR3_eho55xUtdG9PNnvk9-Xxj089gx7yLsCjIMpHXs8yzBUMYTrNJyOvmqVEhpOtFKqSf0u9YwkL89RZNN70KMIfVRMwQssyIHo42A3S9NdkJ0/s320/comunicacion+ares.png" width="320" /></a></div><br />
<br />
<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">3D:</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh71XFtaNQth36yuIHezhXDEmWQSLN6llAe4io3B7NlEDkH29aQAweKst4uTuLU5rpQlXT68C_Bh-nuk4UQKSa1jxyvCCKl3bslSQGA7vZexkrBkIjJORLHxCxo65fh9Hhfn6Kmo9ZEgRw/s1600/ares+comunicacion.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="283" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh71XFtaNQth36yuIHezhXDEmWQSLN6llAe4io3B7NlEDkH29aQAweKst4uTuLU5rpQlXT68C_Bh-nuk4UQKSa1jxyvCCKl3bslSQGA7vZexkrBkIjJORLHxCxo65fh9Hhfn6Kmo9ZEgRw/s320/ares+comunicacion.png" width="320" /></a></div><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSDpDKdJHljEsldilDSUWthTw8lvkTzAeEEcvKrVXIMzNdh2GAV68_UKlp5qatZWhwX4X-LEe5cwyh8zl61bMIsvweZNA-xS5D0iufzpcNGdTsFcXsi_n6jvkPfYb-pTP-VP8kNkLrCwY/s1600/arescomunicacion2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="284" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSDpDKdJHljEsldilDSUWthTw8lvkTzAeEEcvKrVXIMzNdh2GAV68_UKlp5qatZWhwX4X-LEe5cwyh8zl61bMIsvweZNA-xS5D0iufzpcNGdTsFcXsi_n6jvkPfYb-pTP-VP8kNkLrCwY/s320/arescomunicacion2.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"> </span><br />
<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><a href="http://www.adrive.com/public/21ef57bbe4de12d7366cbf9eec319cc7fbfd05cfdbeab087e506d751482760b2.html">DESCARGA EL EJERCICIO</a></span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"> </span>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com3tag:blogger.com,1999:blog-2137256650867000926.post-74027054506957660172011-02-20T16:32:00.003+01:002011-03-14T16:58:29.533+01:00LCD gráfico y PIC18F4550<span style="font-family: Arial,Helvetica,sans-serif;">En esta práctica vamos a utilizar un LCD gráfico, el cual será controlado por un PIC18F4550. La programación la llevaremos a cabo con el <a href="http://www.ccsinfo.com/content.php?page=compiler-details">CCS C Compiler</a> y la posterior simulación será realizada con Proteus (7.7 sp2).</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjgvlYWY3uRLnMKXwe7ZBOzIvjQbCB5ua3MzuBE8uSA-CdYGEjIP4N_L0AECT7HMIXqW678sUaWDQ0bhzN-8sJYKKjhyphenhyphenCnksPH-hurTNGbr6NelAdIoPJ786AoJbza9wogTWv_h5LqLMI/s1600/lcd+grafico.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjgvlYWY3uRLnMKXwe7ZBOzIvjQbCB5ua3MzuBE8uSA-CdYGEjIP4N_L0AECT7HMIXqW678sUaWDQ0bhzN-8sJYKKjhyphenhyphenCnksPH-hurTNGbr6NelAdIoPJ786AoJbza9wogTWv_h5LqLMI/s1600/lcd+grafico.png" /></a></div><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-vUwuqPG_l4zvN7yKpQYPsiZM0Mzog763AtQF9-bdq0_N0-wj0BMnQGE8tb11plfW8HC-n4Rrgfs3y56piJuS8zSpVh_gSu8PnUbwQprq1uYRaIFPlTVB6fNFK_obBaB3oV7YlDTYIuM/s1600/lcd_proteus.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="220" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-vUwuqPG_l4zvN7yKpQYPsiZM0Mzog763AtQF9-bdq0_N0-wj0BMnQGE8tb11plfW8HC-n4Rrgfs3y56piJuS8zSpVh_gSu8PnUbwQprq1uYRaIFPlTVB6fNFK_obBaB3oV7YlDTYIuM/s320/lcd_proteus.png" width="320" /> </a></div><div style="text-align: left;"><br />
</div><div style="text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">En Proteus podeis encontrar varios tipos de LCD gráfico pero en mi caso he utilizado el </span>LGM12641BS1R. </div><div style="text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">Ahora vamos a empezar con la programación del PIC, para ello debemos de crear un nuevo proyecto desde el CCS C y empezar con la programación en sí.</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHbcjCEOIcp-nkxpYTuZkZZQcbTvz4GA2AlCvpv8SbpnWGtx38DgySm2ZAM-Eu5uXSpTgbT6dcgJgoJEiWYP5fVsL_jQXA9LAJL9SVv_CZOgID4UNBV1sEafrB1HDmMht0_qAVX80Rbi0/s1600/ccs+c.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHbcjCEOIcp-nkxpYTuZkZZQcbTvz4GA2AlCvpv8SbpnWGtx38DgySm2ZAM-Eu5uXSpTgbT6dcgJgoJEiWYP5fVsL_jQXA9LAJL9SVv_CZOgID4UNBV1sEafrB1HDmMht0_qAVX80Rbi0/s320/ccs+c.png" width="320" /></a></div><div style="text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span></div><div style="text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">El código programado en el PIC es el siguiente:</span></div><div style="text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">// AUTOR: Diego Lavín Febrero/2011 </span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">// PROGRAMA: LCD Gráfico VERSIÓN: 1.0<br />
// DISPOSITIVO: PIC18F4550 COMPILADOR: CCS vs4.93<br />
// Entorno IDE: SIMULADOR: Proteus 7.7 sp2<br />
// TARJETA DE APLICACIÓN: DEBUGGER: </span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">//Muestra distintos caracteres por un lcd gráfico</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">//</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">//CABECERA///////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">#include <18F4550.h><br />
#fuses inths //oscilador interno<br />
#use delay(internal=8Mhz) //frecuencia del oscilador<br />
#include < hdm64gs12.c> //drivers lcd<br />
#include < graphics.c> //contiene funciones para dibujar círculos, lineas...</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;"></span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;"></span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;"><br />
</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">//VARIABLES GLOBALES////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span> </div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">char voltext[ ]="Diego"; //introduzco variables para introducir texto<br />
char voltext3[ ]="Lavin";<br />
char voltext2[ ]="2011";</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;"><br />
</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">//FUNCIONES/////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><br />
</div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">//PRINCIPAL/////////////////////////////////////////////////////////////</span></div><div style="background-color: #999999; font-family: Times,"Times New Roman",serif;"><span style="font-size: small;">/////////////////////////////////////////////////////////////////////////////////////</span><br />
<div style="font-family: Times,"Times New Roman",serif;"><span style="font-size: small;"><span style="background-color: #999999;">void main( )</span><br style="background-color: #999999;" /><span style="background-color: #999999;">{</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> glcd_init(on); //enciende lcd</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> glcd_line(20,47,80,53,on); //dibuja una linea</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> glcd_rect(100,5,120,20,yes,ON); // dibuja un rectángulo con relleno</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> glcd_text57(1,1,voltext,1,ON); //introduzco las variables de texto</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> glcd_text57(35,1,voltext3,1,ON);</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> glcd_text57(100,55,voltext2,1,ON);</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> </span><br style="background-color: #999999;" /><span style="background-color: #999999;"> glcd_circle(30,25,15,no,on); //dibuja círculo </span><br style="background-color: #999999;" /><span style="background-color: #999999;"> glcd_circle(30,24,5,yes,ON); //dibuja un círculo con relleno</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> glcd_circle(70,25,15,no,on);</span><br style="background-color: #999999;" /><span style="background-color: #999999;"> glcd_circle(70,24,5,yes,ON);</span><br style="background-color: #999999;" /><span style="background-color: #999999;">} </span></span></div></div><div style="font-family: Times,"Times New Roman",serif;"><span style="font-size: small;"><span style="background-color: #999999;"><br />
</span><span style="background-color: #999999;"></span></span></div><div style="font-family: Times,"Times New Roman",serif;"><span style="font-family: Times,"Times New Roman",serif; font-size: small;"> </span><span style="font-size: small;"> </span></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div style="font-family: Times,"Times New Roman",serif;"></div><div style="font-family: Times,"Times New Roman",serif;"><span style="font-family: Arial,Helvetica,sans-serif;">Ahora vamos a ver como queda la placa una vez finalizada. Hay que tener precaución con los packages usados en Proteus ya que algunos componentes no tienen o no se puede simular por lo que hay que deshabilitarlo para que la simulación se realize correctamente. De todas maneras en el Ares se pueden modificar los Footprints para que aquí ya sean los definitivos. </span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Vista en Ares</span>:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs_CXmFn114-_z3XNjANKZ8nztn1_H_mlcuwuVyakbc_6DciO-cDmpMgC1mIesKIl_KUa_o9HYhuBnA5QNFhGkXZ-g4BjHPMF2il8GdWdOP9SaVW4cc75gN-ZP5Y9eXVDrk8hrufbyZ_k/s1600/lcd_ares.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="269" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs_CXmFn114-_z3XNjANKZ8nztn1_H_mlcuwuVyakbc_6DciO-cDmpMgC1mIesKIl_KUa_o9HYhuBnA5QNFhGkXZ-g4BjHPMF2il8GdWdOP9SaVW4cc75gN-ZP5Y9eXVDrk8hrufbyZ_k/s320/lcd_ares.png" width="320" /></a></div><div style="font-family: Times,"Times New Roman",serif;"><span style="font-family: Arial,Helvetica,sans-serif;">Vista en 3D:</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEillcVj_NyL6VUXxotuBh1QipxdjmE7-CZWX-dJEioAFX7uELV82JoCf1uY2nEm35sCdrHB5jP0xa4v_ZuM3Mlnva0gigv-gOaQ4qRpIEkJx88quUm93PXh87FFcqgVDEjzMQu-SJGn6yA/s1600/3d+lcd.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="270" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEillcVj_NyL6VUXxotuBh1QipxdjmE7-CZWX-dJEioAFX7uELV82JoCf1uY2nEm35sCdrHB5jP0xa4v_ZuM3Mlnva0gigv-gOaQ4qRpIEkJx88quUm93PXh87FFcqgVDEjzMQu-SJGn6yA/s320/3d+lcd.png" width="320" /></a></div></div><div style="font-family: Times,"Times New Roman",serif;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFFGZ1mbWUFVYK5jOZx7atXy4QcyYQLcbyWaKHlofmDNFglx63yJRigdV30iof5AQoLx2aORMNeizClkpfJvVwh-hvQRg37mVyr1gi1aLJSXMELWbcvr-eQ3-KtjdakbvDpDxXcG_1Cas/s1600/lcd+down.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="273" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFFGZ1mbWUFVYK5jOZx7atXy4QcyYQLcbyWaKHlofmDNFglx63yJRigdV30iof5AQoLx2aORMNeizClkpfJvVwh-hvQRg37mVyr1gi1aLJSXMELWbcvr-eQ3-KtjdakbvDpDxXcG_1Cas/s320/lcd+down.png" width="320" /></a></div><br />
<br />
<a href="http://www.adrive.com/public/b8cfa85db75412ae67ddf05e4c24ec60bdec0a08deba3037476d27e9f4ffdc40.html"><span style="font-family: Arial,Helvetica,sans-serif;">DESCARGA EL EJERCICIO</span></a><br />
<br />
</div>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com4tag:blogger.com,1999:blog-2137256650867000926.post-56471324610695094892011-02-20T14:30:00.002+01:002011-03-14T17:05:30.494+01:00Generar y leer una señal analógica<span style="font-family: Arial,Helvetica,sans-serif;">Como en anteriores ejercicios, utilizando un DAQ 6008 y Labview, debemos generar una señal analógica y luego leerla.</span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Este ejercicio, para entenderlo mejor estará dvidido en dos partes. La primera que será donde genero la función deseada, símplemente usando un generador de señales. Luego esta señal estará configurada como salida analógica para así en la segunda parte del ejercicio poder leerla como un dato de entrada. </span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgddyrUHhpVh8unHsMJwUOet34sNQkimdnAA-ELLIptiH9GaYfpcFmtDJ4o57UnQ9GXXd1bIdX8upXVyjEh14xFl-J4TPnAEx4oHmI_IhHIK3Zcx9dx2f4G4DaWfyrtja41iTGDtXjoC2s/s1600/leer-escribir_labview.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="177" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgddyrUHhpVh8unHsMJwUOet34sNQkimdnAA-ELLIptiH9GaYfpcFmtDJ4o57UnQ9GXXd1bIdX8upXVyjEh14xFl-J4TPnAEx4oHmI_IhHIK3Zcx9dx2f4G4DaWfyrtja41iTGDtXjoC2s/s320/leer-escribir_labview.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Viendo el panel frontal nos encontramos dos Wavefrom Chart, el primero correspone a la función generada y el de abajo a la leida. Habrá que jugar con el rate y the samples per channel para obtener la configuración mas satisfactoria.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGOEzv2XQLNVFGvD2y3xF0UlGyBJ3bgjh1shtpGWKQTLWgYYG_6RZO-V2yRgT4B6uxbcCKYer5-s89hBYdGB2FoBl8DuH9YlozMBfYFUarvQAfiaA3mC7aqhOejhG1Gsvo_eQP_dxPvSw/s1600/leer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGOEzv2XQLNVFGvD2y3xF0UlGyBJ3bgjh1shtpGWKQTLWgYYG_6RZO-V2yRgT4B6uxbcCKYer5-s89hBYdGB2FoBl8DuH9YlozMBfYFUarvQAfiaA3mC7aqhOejhG1Gsvo_eQP_dxPvSw/s320/leer.png" width="320" /></a></div><br />
<a href="http://www.adrive.com/public/86dd585f7f7a6788146ae895eeee1f9276f1741ed2ef4007031cd8b8c938b74c.html"><span style="font-family: Arial,Helvetica,sans-serif;">DESCARGA EL EJERCICIO</span></a><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com0tag:blogger.com,1999:blog-2137256650867000926.post-86942678730130537892011-02-16T19:07:00.002+01:002011-03-14T17:08:44.311+01:00Múltiples canales con DAQ 6008<span style="font-family: Arial,Helvetica,sans-serif;">Utilizando un DAQ 6008 y Labview, debemos de leer varios canales (5 en mi caso).</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Lo primero que debemos hacer es ir al MAX para configurar cada canal que vayamos a utilizar. Así evitaremos futuros conflictos entre los canales usados.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvOXYPB3JGi51AENzz73ZompnAtSlKko-d0pPq6_AlU9leg8NEePoGhZQef8vgJBR3SapH11Q-9yZebWuwu3tmGK5GN93PUdgCnQzmC2PPgHO8PX4C099yo4HaDtz9OWN0ntibeW-vI44/s1600/multi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvOXYPB3JGi51AENzz73ZompnAtSlKko-d0pPq6_AlU9leg8NEePoGhZQef8vgJBR3SapH11Q-9yZebWuwu3tmGK5GN93PUdgCnQzmC2PPgHO8PX4C099yo4HaDtz9OWN0ntibeW-vI44/s320/multi.png" width="320" /></a></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Como se ve he configurado una tarea con los 5 canales que voy a utilizar para llevar a cabo esta práctica.</span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;"> El código es muy sencillo, ya que tenemos nuestra entrada analógica (voltage) al cual le asignamos la tarea previamente hecha con el MAX, en el que está la configuración de nuestros canales.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh31jb6-WTOotxoLCteRny02Ee0ePlC1BC67AzEgF1ge1PvUC7FwgINLZDrphQVKPK-xziKFPvScQNKmkOtpZQp8w-eNQ2iOUaWyCbmGit2SNrlhaYcgFI_Su1i0aOFdMGR910PsY5aH28/s1600/multiples_codigo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="122" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh31jb6-WTOotxoLCteRny02Ee0ePlC1BC67AzEgF1ge1PvUC7FwgINLZDrphQVKPK-xziKFPvScQNKmkOtpZQp8w-eNQ2iOUaWyCbmGit2SNrlhaYcgFI_Su1i0aOFdMGR910PsY5aH28/s320/multiples_codigo.png" width="320" /> </a></div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">Si pasamos al Front Panel veremos como podemos leer la distintas tensiones que tenemos en cada canal al mismo tiempo.</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOCnaXyXL96mxHCcmgBNj8w50jiWOzMVRmD6IIQv0yhWQ9FD56vHvkdu-RAkRyKL6vM7GnuzB0WlvQKhpPUgJ7W4mWfcHW1YmYgTTsREF-Vlo63j2yGMnAV43aTLvAS4FdYz7_jwyYsUE/s1600/multiples+canales.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="148" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOCnaXyXL96mxHCcmgBNj8w50jiWOzMVRmD6IIQv0yhWQ9FD56vHvkdu-RAkRyKL6vM7GnuzB0WlvQKhpPUgJ7W4mWfcHW1YmYgTTsREF-Vlo63j2yGMnAV43aTLvAS4FdYz7_jwyYsUE/s320/multiples+canales.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;"> </span> </div><div class="separator" style="clear: both; text-align: left;"><a href="http://www.blogger.com/goog_1848511783"> </a><span style="font-family: Arial,Helvetica,sans-serif;"><a href="http://www.adrive.com/public/b7725862f20d67b59fc872b22ec853cbd9007c1a4cea67f285805f56d16292e8.html">DESCARGA EL EJERCICIO</a></span></div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNCQ4U6sAVOk9Hd7fOCmg-iguDn4GjtGvNXjKo-GntQf5cYTxdqmnUxNdp2OBQ_y7vyOhzeHYCeimam6yB1Rvf3ZnvRTUW_usvtQTB1CuhKx_tooY75qSzS7uE6i8KVhrn7yz8ojqfhCQ/s1600/multiples+canales.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div><span style="font-family: Arial,Helvetica,sans-serif;"> </span>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com0tag:blogger.com,1999:blog-2137256650867000926.post-39575706338734109692011-01-23T13:42:00.005+01:002011-03-14T17:13:31.577+01:00Carga y descarga de condensador<span style="font-family: Arial,Helvetica,sans-serif;">Con Labview y un DAQ 6008 debemos crear una señal analógica, que será la carga y descarga de un condensador. Ésta se tendrá que ver gráficamente.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl2t5zm3meAHxjminNvjRerkcCvNAhFhwrkSMEe9AnMqSf3EdG-DNCjQlp5QXC_Migq_U2QkIgHdScWw0HIHyfwyFNSUv4WLiBb1gSip0ibF-LZj4_f7jCb8Td0C0uPKyGIfNiw-9DxbA/s1600/condensador.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="99" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl2t5zm3meAHxjminNvjRerkcCvNAhFhwrkSMEe9AnMqSf3EdG-DNCjQlp5QXC_Migq_U2QkIgHdScWw0HIHyfwyFNSUv4WLiBb1gSip0ibF-LZj4_f7jCb8Td0C0uPKyGIfNiw-9DxbA/s320/condensador.png" width="320" /></a></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Con este código leemos una entrada analógica (con el AI Voltage). Esta entrada se puede configurar con el MAX (Measurement & Automation Explorer), una aplicación de National Instruments.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiISvRFqMSD1P6ab1HPJ3Yn71Z2anCGdSlaNR-WrMe2owP8Z-F2Ng66DOdkCjWpMG347MFEvzJggv2NqJdRq6KQg5ePEu_PtYvkThMoB0WuKhoW3z8IDdDBhGyu-nP987eNipcYa5Jw1uI/s1600/max.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="236" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiISvRFqMSD1P6ab1HPJ3Yn71Z2anCGdSlaNR-WrMe2owP8Z-F2Ng66DOdkCjWpMG347MFEvzJggv2NqJdRq6KQg5ePEu_PtYvkThMoB0WuKhoW3z8IDdDBhGyu-nP987eNipcYa5Jw1uI/s320/max.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAoGpTKo86yMzPhHabGnlcjmj8ewXUC7sTe1vDZKzPL10xeuz18XY5FlqqYJFPHMSSEsbUq0aG6799I43NaHu8AaUugA9OVvv2gdJHFLqd43bU0Ty4g9HGyHc2YBSpeInYuyQPU9fDyYE/s1600/max_condensador.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAoGpTKo86yMzPhHabGnlcjmj8ewXUC7sTe1vDZKzPL10xeuz18XY5FlqqYJFPHMSSEsbUq0aG6799I43NaHu8AaUugA9OVvv2gdJHFLqd43bU0Ty4g9HGyHc2YBSpeInYuyQPU9fDyYE/s320/max_condensador.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;">Podemos crear canales y tareas como se ve en la imagen para poder tener distintas configuraciones para futuros proyectos.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Y directamente la podemos visualizar en un Waveform chart</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkSpi4m3iwunS7xSS1FMuBZpstIKFL5uCMp5khUe4uX81sAN6nhwFmTBmtArMGVY_YQJ0vBEOF14E4OCDjjU1dpZ0M0kdf3Dlq7sGwCNf_kyuDfuv_xAcgzR3PnsNAyTw3no1Bw_hTGTY/s1600/chart.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkSpi4m3iwunS7xSS1FMuBZpstIKFL5uCMp5khUe4uX81sAN6nhwFmTBmtArMGVY_YQJ0vBEOF14E4OCDjjU1dpZ0M0kdf3Dlq7sGwCNf_kyuDfuv_xAcgzR3PnsNAyTw3no1Bw_hTGTY/s320/chart.png" width="320" /></a></div><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">con el que debermos jugar con el rate y samples per channel para obtener la visualización que nos convenga. </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<a href="http://www.blogger.com/goog_1902476284"><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span></a><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><a href="http://www.adrive.com/public/71dc2b6d1e86741c646f903a0f356a633420763070ff817043616d1363122b26.html">DESCARGAR EL EJERCICIO</a><br />
</span>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com0tag:blogger.com,1999:blog-2137256650867000926.post-45781337618254516032011-01-23T13:11:00.001+01:002011-03-14T17:00:52.937+01:00Escribir y leer array en excel<span style="font-family: Arial,Helvetica,sans-serif;">Mediante LabVIEW, un programa de National Instruments, vamos a guardar un array de datos en Excel y posteriormente los leeremos, indicando la celda correspondiente.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">He generado una función, en este caso senoidal y los datos de esta serán los que compongan el array.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMayWh78Nq_KSXZtD9SxgGZ0nF7tnHX3coCkmuZD0zVo5RcMYq7ov9Hf5lTuxdx1VmRk1ZMu2pNRnTmRj7txyd5sD35ls6hvVWPKE330oROcmnxXCftSjaPypwW_VmTe8r0Rck0MJIBvA/s1600/excel.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMayWh78Nq_KSXZtD9SxgGZ0nF7tnHX3coCkmuZD0zVo5RcMYq7ov9Hf5lTuxdx1VmRk1ZMu2pNRnTmRj7txyd5sD35ls6hvVWPKE330oROcmnxXCftSjaPypwW_VmTe8r0Rck0MJIBvA/s320/excel.png" width="317" /></a></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;"> Como se ve en la imagen, a la entrada del array hay varias operaciones pero simplemente son para que haya mayor número de filas en el array y se pueda observar mejor.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Al ejecutarlo nos dirá donde queremos guardar los datos y elegimos un archivo de excel (.csv).</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Ahora en el panel frontal podemos elegir la celda exacta que queremos leer.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPOQnTSFXCYkDaJsiWmJw1PRHOLQpkb4-EkDSHPkLIb7uVriyJr3wQFHKufZWEcmPeqXsJSuuBXwRZhS8X5_vRBdMZg7r3Rke9NnwdEzWjXkcRri5A7DqrMlsRXrciDOlzXwWZPlSYHT8/s1600/fp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="102" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPOQnTSFXCYkDaJsiWmJw1PRHOLQpkb4-EkDSHPkLIb7uVriyJr3wQFHKufZWEcmPeqXsJSuuBXwRZhS8X5_vRBdMZg7r3Rke9NnwdEzWjXkcRri5A7DqrMlsRXrciDOlzXwWZPlSYHT8/s320/fp.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><a href="http://www.adrive.com/public/5c8a68d8bd39a0197905f8f450619c6491095ba213fadf1266398e7a7b7bd215.html">DESCARGA EL EJERCICIO</a><br />
</span>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com0tag:blogger.com,1999:blog-2137256650867000926.post-28126342208505459732011-01-12T17:55:00.000+01:002011-01-12T17:55:43.458+01:00Detector de secuencia<span style="font-family: Arial,Helvetica,sans-serif;">Este ejercicio le resolveremos mediante una máquina de estados tipo Moor. Consiste en expresar gráficamente la secuencia de del proceso de la máquina:</span><br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4L7PgHoqxp7FGvR5yicSut0NVBYTI5zq9Q__XxJrQxwTGpttdWbhJW9ozvk9HyEJqY3aoVQ8JEV6uTEQMpBsTI1WOl0FzVIAzjoRC_rGJLs8ZLsK9teMr6k1I_MoSXTi5_xjc_WgkoD0/s1600/Sin+t%25C3%25ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="90" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4L7PgHoqxp7FGvR5yicSut0NVBYTI5zq9Q__XxJrQxwTGpttdWbhJW9ozvk9HyEJqY3aoVQ8JEV6uTEQMpBsTI1WOl0FzVIAzjoRC_rGJLs8ZLsK9teMr6k1I_MoSXTi5_xjc_WgkoD0/s320/Sin+t%25C3%25ADtulo.png" width="320" /></a> </div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">El proceso es igual que en el ejercicio <a href="http://electronicalavin.blogspot.com/2011/01/maquina-rotativa.html">anterior.</a> Seguimos sus pasos hasta llegar al StateCAD, aquí debemos de introducir nuestras variables</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkUAsY_3YHObdi9ehpUnaOA9RER3K_nS6t5nIPYiD9UHVY87pRmpQFmXX_FdUzX-eAd_fQOz2n5P93cJxgj7uYYi4ZyW1le3UlXvyUS14mCHdxEulmf5m8CgGjGKCSUvCowLPo2R03l0Q/s1600/Sin+t%25C3%25ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="43" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkUAsY_3YHObdi9ehpUnaOA9RER3K_nS6t5nIPYiD9UHVY87pRmpQFmXX_FdUzX-eAd_fQOz2n5P93cJxgj7uYYi4ZyW1le3UlXvyUS14mCHdxEulmf5m8CgGjGKCSUvCowLPo2R03l0Q/s320/Sin+t%25C3%25ADtulo.png" width="320" /></a></div><br />
<div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;"></span></div><br />
<br />
<div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">y ponernos a añadir estados y transiciones</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw5vLMKYkCbVbU59gp45TeszRTYiC1JBW3Il7x6SgfTbNOa2YW54SGnXB0LQGX3ev0FERieisk5V6S2aZziRXj6dApt4MasSqNCT_MeKJOQ49Ate1B4UgEfnV3sMpoMBvZo1Nx-HZj_3s/s1600/Sin+t%25C3%25ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="57" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw5vLMKYkCbVbU59gp45TeszRTYiC1JBW3Il7x6SgfTbNOa2YW54SGnXB0LQGX3ev0FERieisk5V6S2aZziRXj6dApt4MasSqNCT_MeKJOQ49Ate1B4UgEfnV3sMpoMBvZo1Nx-HZj_3s/s320/Sin+t%25C3%25ADtulo.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">Seguimos todos los pasos del ejercicio <a href="http://electronicalavin.blogspot.com/2011/01/maquina-rotativa.html">anterior</a> teniendo en cuenta las restricciones, que en este caso son las siguientes:</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCbqkr_EA7-KwoE7_fqZqGiNTO3Xtms-wSHsuiZdyxbwrDXYOFCmIgQ54jIQVRY1Whq3XpTh4sRp-y7TG-Q1aXaEmqlX_zrbDNizuQ9VH4E9eVK_F9xBXan7iRiPDo7CBQZ0I9YkxpQuw/s1600/Sin+t%25C3%25ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="78" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCbqkr_EA7-KwoE7_fqZqGiNTO3Xtms-wSHsuiZdyxbwrDXYOFCmIgQ54jIQVRY1Whq3XpTh4sRp-y7TG-Q1aXaEmqlX_zrbDNizuQ9VH4E9eVK_F9xBXan7iRiPDo7CBQZ0I9YkxpQuw/s320/Sin+t%25C3%25ADtulo.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span></div><div class="separator" style="clear: both; text-align: left;"><br />
</div><br />
<span style="font-family: Arial,Helvetica,sans-serif;"> </span>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com0tag:blogger.com,1999:blog-2137256650867000926.post-79403922590974099662011-01-11T20:07:00.003+01:002011-01-12T17:37:25.842+01:00Máquina Rotativa<i><span style="font-family: Arial,Helvetica,sans-serif;">-Se desea proyectar el gobierno de un conmutador rotativo, que permite realizar un ciclo completo cuando el tambor</span><span style="font-family: Arial,Helvetica,sans-serif;"> haya efectuado una vuelta completa.</span></i><br />
<i><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;">El disco solidario del tambor lleva un saliente para actuar sobre el contacto (a).</span><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;">El pulsador (b) (botón de impulsos) da comienzo al ciclo.</span></i><br />
<i><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;">1) Estado inicial (reposo) a=1, b=0, M=0.</span><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;">2) (b) es accionado y después desaccionado rápidamente (impulso) -> M=1.</span><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;">3) Cuando el disco ha dado una vuelta, (a) es accionado por el saliente y el disco se para.</span></i><br />
<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Para llevar a cabo este ejercicio, primero vamos a hacer una tabla de estados. Será resuelto mediante una máquina de Mealy.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJrLDAyLNoKXdHXkBYS8VoILkp6QbUJasIXSGVvpU_zaL47ie4d8VP8iZR6ZF4vATu1v5uGfgHCh2RalxvNzf7HXuEoBIDDzxSG9s4j6FZzZ5n-CH_l0oLk2qr1247mu_qY4Zs7i3r9Vw/s1600/sfdsg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJrLDAyLNoKXdHXkBYS8VoILkp6QbUJasIXSGVvpU_zaL47ie4d8VP8iZR6ZF4vATu1v5uGfgHCh2RalxvNzf7HXuEoBIDDzxSG9s4j6FZzZ5n-CH_l0oLk2qr1247mu_qY4Zs7i3r9Vw/s1600/sfdsg.png" /></a></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Creamos un proyecto nuevo como ya <a href="http://electronicalavin.blogspot.com/2010/11/implementacion-de-un-sumador-completo.html">sabemos</a>, solo que esta vez añadiremos un<b> 'State Diagram' </b>y se nos abrirá una ventana nueva donde podemos empezar a diseñar nuestra máquina rotativa.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">En la pestaña Options->Variable iremos añadiendo todos los puertos que necesitemos</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikIheP1IHdixq6h4KjFdsHzKCJFk3hgITlPPRWLkeW0lk8eWsjQdEtsJsm5DE1fIxZsSddh6bgX8qBmctzqmBYk68LBoZm9gOxe1GurlzvWGL4cV5gYWtMfLx1NbmUL1lU7OIBQL_XuY4/s1600/qq.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="88" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikIheP1IHdixq6h4KjFdsHzKCJFk3hgITlPPRWLkeW0lk8eWsjQdEtsJsm5DE1fIxZsSddh6bgX8qBmctzqmBYk68LBoZm9gOxe1GurlzvWGL4cV5gYWtMfLx1NbmUL1lU7OIBQL_XuY4/s320/qq.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Una vez terminado dibujamos todos nuestros estados y añadimos sus transicciones</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8U7pFbpf58x5Nrn7X59pSdIEa22HYHmeUFVQA9uVcYaDpT88y0KkAF-mZMb8yno3TjTHHmOTdTGmdJYvXo5Zky5mMh2cMe1pHNjWxyYFv7ekNF5xyi23tz0Cuht-q0olPXUYZ0U9y80A/s1600/zzz.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="157" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8U7pFbpf58x5Nrn7X59pSdIEa22HYHmeUFVQA9uVcYaDpT88y0KkAF-mZMb8yno3TjTHHmOTdTGmdJYvXo5Zky5mMh2cMe1pHNjWxyYFv7ekNF5xyi23tz0Cuht-q0olPXUYZ0U9y80A/s320/zzz.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Finalizado este paso, tenemos que editar las condiciones. No sin antes olvidarnos de añadir un RESET al State0, para que arranque en el estado correcto.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-QlZXvmHrnVnKRSTDWJIVM6x-PQ5TPPZRVGOco4JQDlLYeQcet7bGJOJA3uaMHy0pE4e3k1WzOA8L2kr0AEJ76Y3NR6odMgdpxNdeXGXAcGLMfElhKiNlKfwxOvZdRC8Sb8hYGFLjByM/s1600/state.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="197" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-QlZXvmHrnVnKRSTDWJIVM6x-PQ5TPPZRVGOco4JQDlLYeQcet7bGJOJA3uaMHy0pE4e3k1WzOA8L2kr0AEJ76Y3NR6odMgdpxNdeXGXAcGLMfElhKiNlKfwxOvZdRC8Sb8hYGFLjByM/s320/state.png" width="320" /></a></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Verificación, tenemos que comprobar el funcionamiento del autómata. Para ello clickamos en 'State Bench' en la barra de tareas y se nos abre un simulador de estados y deberemos ver si pasa por todos los estados de forma correcta</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-win4SoOPMwyY1PYuN0Y1Dlfa9ZXIDjGznVxHbn3p9ItUlS_eK0TZRi5s3TheaCtTeYIJh8X7aWHpNDm88dQaFuxvV6XlMTslT0kQMAYCh8XRRRr5X8MmdYvQcIMo6OfjJkkhtSKgHco/s1600/Sin+t%25C3%25ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="219" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-win4SoOPMwyY1PYuN0Y1Dlfa9ZXIDjGznVxHbn3p9ItUlS_eK0TZRi5s3TheaCtTeYIJh8X7aWHpNDm88dQaFuxvV6XlMTslT0kQMAYCh8XRRRr5X8MmdYvQcIMo6OfjJkkhtSKgHco/s320/Sin+t%25C3%25ADtulo.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Después de comprobarlo todo, generamos el código VHDL (Generate HDL, en la barra de tareas).</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Ya hemos finalizado la primera parte. Ahora añadimos el fichero .vhd que acabamos de generar a nuestro proyecto de Xilinx</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp24IdpRd08pzsWhxOJ7MXlFMvTuzggcnu_OdJ5TAMNTIw_kN8Pd3iHZlqnF8eetscj7mrarCl2tD2_SPY5pVArKk1FAwBpZiS-NjVx7LgFzDJUT3_wTRcv4cXEmy77lIu-l4u5YXbvK0/s1600/Sin+t%25C3%25ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="229" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp24IdpRd08pzsWhxOJ7MXlFMvTuzggcnu_OdJ5TAMNTIw_kN8Pd3iHZlqnF8eetscj7mrarCl2tD2_SPY5pVArKk1FAwBpZiS-NjVx7LgFzDJUT3_wTRcv4cXEmy77lIu-l4u5YXbvK0/s320/Sin+t%25C3%25ADtulo.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Y creamos el 'Schematic Symbol'. Ya únicamente nos queda añadir los componentes</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivV7XxbeQDAQDE7IzpbBcXaYTUGh8IrY3DdNBYSfwnxw2mOQVfiqpl4SuU4wGtOBpVPgUT99xJt5l2gpbWym1TbsLhc3zVA5p7FJSJmSG8UCuK_UzSh87OAG1B008PKdxYUDlpuDlXYbU/s1600/Sin+t%25C3%25ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="101" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivV7XxbeQDAQDE7IzpbBcXaYTUGh8IrY3DdNBYSfwnxw2mOQVfiqpl4SuU4wGtOBpVPgUT99xJt5l2gpbWym1TbsLhc3zVA5p7FJSJmSG8UCuK_UzSh87OAG1B008PKdxYUDlpuDlXYbU/s320/Sin+t%25C3%25ADtulo.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<br />
<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">y crear las restricciones:</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJFKwwMfFLAdXOpDBz0DZlViieFuFI17Y1M4szuH7CSFfHSo2n1Mi_QBjcAPdmZG3qW9Yjc31TqQU8gjaCZY-eoi6ib1DpNxM-KquvYEz2xhGgMtJ5m8W0DSdDRnRZIgmRnvh_vXmO1eI/s1600/Sin+t%25C3%25ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="113" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJFKwwMfFLAdXOpDBz0DZlViieFuFI17Y1M4szuH7CSFfHSo2n1Mi_QBjcAPdmZG3qW9Yjc31TqQU8gjaCZY-eoi6ib1DpNxM-KquvYEz2xhGgMtJ5m8W0DSdDRnRZIgmRnvh_vXmO1eI/s320/Sin+t%25C3%25ADtulo.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">El último paso es programarlo igual que en los <a href="http://electronicalavin.blogspot.com/2010/11/implementacion-de-un-sumador-completo.html">ejercicios anteriores</a>.<br />
</span>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com0tag:blogger.com,1999:blog-2137256650867000926.post-49142264194395812222010-11-14T15:58:00.000+01:002010-11-14T15:58:45.250+01:00Máquina de estados<span style="font-family: Arial,Helvetica,sans-serif;">Una máquina se desplaza de derechas (D) y de izquierdas (I) y dos finales de carrera (A y B). Al actuar sobre el pulsador (P) la máquina se desplaza de A hacia B efectuando una operación (X). Al llegar a B regresa hasta A sin efectuar ninguna operación.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Al llegar a A inicia un nuevo movimiento hacia B realizando una operación (Y). Cuando llega a B vuelve a A sin ejecutar ninguna operación y se queda en reposo.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"> </span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1C-rb7MIfNaSu9kDoT03lGBynfIdK8Z1EXu46y0Xqdmx_7hj9wfXJsNc_6wfjRtUtQ100S3h6YHVXhtOpNIJlqBI_CK5jIC0O5tLK3Fz0-HUFpJ7A8dhS2UB2NQshdggePno139IARgw/s1600/estados.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="270" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1C-rb7MIfNaSu9kDoT03lGBynfIdK8Z1EXu46y0Xqdmx_7hj9wfXJsNc_6wfjRtUtQ100S3h6YHVXhtOpNIJlqBI_CK5jIC0O5tLK3Fz0-HUFpJ7A8dhS2UB2NQshdggePno139IARgw/s320/estados.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"> </span>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com0tag:blogger.com,1999:blog-2137256650867000926.post-3704737335500832912010-11-14T14:15:00.003+01:002011-01-11T19:45:40.403+01:00Contador BCD<div class="MsoNormal" style="line-height: normal; margin: 0cm 12.65pt 0.0001pt 6pt;"><span style="font-family: Arial,Helvetica,sans-serif;"> </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">El enunciado del ejercicio es el siguiente: </span><span style="color: black; font-family: "Arial","sans-serif"; font-size: 10pt; letter-spacing: 0.05pt;">Implement</span><span style="color: black; font-family: "Arial","sans-serif"; font-size: 10pt; letter-spacing: -0.05pt;">a</span><span style="color: black; font-family: "Arial","sans-serif"; font-size: 10pt;">r en el CP<span style="letter-spacing: -0.05pt;">L</span>D XC9<span style="letter-spacing: -0.05pt;">5</span>72 un <b>C<span style="letter-spacing: -0.05pt;">o</span>ntad<span style="letter-spacing: -0.05pt;">o</span>r BCD<span style="letter-spacing: -0.05pt;"> </span>con permiso<span style="letter-spacing: -0.05pt;"> </span>de reloj<span style="letter-spacing: 0.05pt;"> </span>y<span style="letter-spacing: -0.1pt;"> </span><span style="letter-spacing: 0.05pt;">b</span>orrado <span style="letter-spacing: -0.05pt;">a</span>sín<span style="letter-spacing: -0.05pt;">c</span>rono</b>.<span style="letter-spacing: -0.05pt;"> </span>Su sal<span style="letter-spacing: -0.05pt;">i</span>da s<span style="letter-spacing: -0.05pt;">e</span>rá decodificada<span style="letter-spacing: -0.05pt;"> </span>a 7 seg<span style="letter-spacing: -0.05pt;">m</span>ent<span style="letter-spacing: -0.05pt;">o</span>s s<span style="letter-spacing: -0.05pt;">o</span>bre <span style="letter-spacing: -0.05pt;">u</span>na<span style="letter-spacing: -0.05pt;"> </span><i>DISPLAY </i>de cáto<span style="letter-spacing: -0.05pt;">d</span>o co<span style="letter-spacing: -0.05pt;">mú</span>n de 7 s<span style="letter-spacing: -0.05pt;">e</span>gm<span style="letter-spacing: -0.05pt;">e</span>ntos.</span></div><div class="MsoNormal" style="line-height: normal; margin: 0cm 12.65pt 0.0001pt 6pt;"><br />
</div><div class="MsoNormal" style="line-height: normal; margin: 0cm 12.65pt 0.0001pt 6pt;"><span style="font-family: Arial,Helvetica,sans-serif;">Creamos un nuevo proyecto al igual que en los anteriores ejercicios. Colocamos un contador BCD, al que ya hemos añadido el BUFG para minimizar el skew</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYhmwUzRkuHE4y5NZ6t8dw6XOrTCY2wlXJeoG8AsXrxzM25gMOalyft_Lr7FpReubZe-iC5p5nG8mG72wexuaBorUMA0og0ypuZzI0Nhiw4U4iMVHf1GC6WYhPiEKjWaW0uw05HJ7sNwk/s1600/cd4ce.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="268" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYhmwUzRkuHE4y5NZ6t8dw6XOrTCY2wlXJeoG8AsXrxzM25gMOalyft_Lr7FpReubZe-iC5p5nG8mG72wexuaBorUMA0og0ypuZzI0Nhiw4U4iMVHf1GC6WYhPiEKjWaW0uw05HJ7sNwk/s320/cd4ce.png" width="320" /></a></div><div class="MsoNormal" style="line-height: normal; margin: 0cm 12.65pt 0.0001pt 6pt;"><br />
</div><div class="MsoNormal" style="line-height: normal; margin: 0cm 12.65pt 0.0001pt 6pt;"><span style="font-family: Arial,Helvetica,sans-serif;">Tenemos que diseñar el decodificador, en este caso, en código VHDL. Seguimos los siguientes pasos:</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDdQ95XfovJOFKJRydvaY8ObhEe9GSa1LuqJdQiTM7JkwQ7FacqULbiLvExB_FqG5ejOfKoKFw2iPeDi4czmBUY9xbaBAr4VpZXgtepyfZH2feUwXVNdon9xOly2n3VMFPaIt_iHRuP6E/s1600/config.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="278" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDdQ95XfovJOFKJRydvaY8ObhEe9GSa1LuqJdQiTM7JkwQ7FacqULbiLvExB_FqG5ejOfKoKFw2iPeDi4czmBUY9xbaBAr4VpZXgtepyfZH2feUwXVNdon9xOly2n3VMFPaIt_iHRuP6E/s320/config.png" width="320" /></a></div><br />
<div class="MsoNormal" style="line-height: normal; margin: 0cm 12.65pt 0.0001pt 6pt;"><br />
</div><br />
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0cm 12.65pt 0.0001pt 6pt;"><span style="font-family: Arial,Helvetica,sans-serif;">Continuamos y se nos crea un fichero .vhd, si nos adentramos en él veremos un código como este</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOIMh7N0LqdOn33-_aME13xMZY7ajCRtL8h83IJCy7ad7v8Ls2oqi4RA-twwX-wFBX3oxAdGiWG3XMgchtHGNbO7FXkoIhRjtiBVZ7LMEHcfpUxrMHw9JlGLDTKwOYkBmPdUXumozGZDM/s1600/vhd.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOIMh7N0LqdOn33-_aME13xMZY7ajCRtL8h83IJCy7ad7v8Ls2oqi4RA-twwX-wFBX3oxAdGiWG3XMgchtHGNbO7FXkoIhRjtiBVZ7LMEHcfpUxrMHw9JlGLDTKwOYkBmPdUXumozGZDM/s320/vhd.png" width="320" /></a></div><div class="MsoNormal" style="line-height: normal; margin: 0cm 12.65pt 0.0001pt 6pt;"><br />
</div><br />
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0cm 12.65pt 0.0001pt 6pt;"><span style="font-family: Arial,Helvetica,sans-serif;">Tenemos las librerias creadas y la cabecera pero nos falta el programa en si, que lo podemos conseguir de las plantillas VHDL que el mismo programa nos proporciona. Para ello vamos a Edit-> Language Templates y buscamos un display de 7 segmentos, copiamos el código que nos haga falta en nuestro programa y ya estará</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw12nBakYhOatNsLkP9O85r_FbqZOQKMoQSij33fkt03D-X8bW8heKqAWgomRad4hnXCoyddyMGn5ybZpWNznyeLLDORfWeDntvMAqkadrf6DKaCMfglX7qBduasePGyUyjj9x5Y6ualM/s1600/vhdend.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw12nBakYhOatNsLkP9O85r_FbqZOQKMoQSij33fkt03D-X8bW8heKqAWgomRad4hnXCoyddyMGn5ybZpWNznyeLLDORfWeDntvMAqkadrf6DKaCMfglX7qBduasePGyUyjj9x5Y6ualM/s320/vhdend.png" width="297" /></a></div><div class="MsoNormal" style="line-height: normal; margin: 0cm 12.65pt 0.0001pt 6pt;"><br />
</div><br />
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0cm 12.65pt 0.0001pt 6pt;"><span style="font-family: Arial,Helvetica,sans-serif;">Teniendo en cuenta que dependiendo si el display es de ánodo común o de cátodo común habrá que cambiar los ceros por unos y viceversa (en la imagen es ánodo común) así que nosotros lo vamos a cambiar.</span></div><div class="MsoNormal" style="line-height: normal; margin: 0cm 12.65pt 0.0001pt 6pt;"><span style="font-family: Arial,Helvetica,sans-serif;">Ahora vamos a crear el símbolo y conectamos todo</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg13x3tyibwWhditsS2cObZT_X-OoTcrwdpzLuKn-NJOcdcd_uAriI2LzeEPyfr9nJw-GJ61l1_rzn1V4Z2NzDyTqMj36-JHnZCt_xBz-Qv-a4RlXbSKvYxtUXWDNUhSJO9-EBTzOVrcO0/s1600/dfr.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg13x3tyibwWhditsS2cObZT_X-OoTcrwdpzLuKn-NJOcdcd_uAriI2LzeEPyfr9nJw-GJ61l1_rzn1V4Z2NzDyTqMj36-JHnZCt_xBz-Qv-a4RlXbSKvYxtUXWDNUhSJO9-EBTzOVrcO0/s320/dfr.png" width="320" /></a></div><div class="MsoNormal" style="line-height: normal; margin: 0cm 12.65pt 0.0001pt 6pt;"><br />
</div><br />
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0cm 12.65pt 0.0001pt 6pt;"><span style="font-family: Arial,Helvetica,sans-serif;">Creamos el Test Bench como ya hemos hecho en otros ejercicios y nos vamos al ModelSim</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1FKCqSkfrPvt1TGa-I17Ly_ZnNZO-uKSI5GrvMwtc4B3EWtucYXBE5IjPFZSmM6TmhX-G0tMRCRcBHQMZ6iygcJnRNJJkfukAiubqhqaaGTT962Y9gxLvOXIF5HF4C8j6wDAb_qCRQqg/s1600/urow.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1FKCqSkfrPvt1TGa-I17Ly_ZnNZO-uKSI5GrvMwtc4B3EWtucYXBE5IjPFZSmM6TmhX-G0tMRCRcBHQMZ6iygcJnRNJJkfukAiubqhqaaGTT962Y9gxLvOXIF5HF4C8j6wDAb_qCRQqg/s320/urow.png" width="320" /></a></div><div class="MsoNormal" style="line-height: normal; margin: 0cm 12.65pt 0.0001pt 6pt;"><br />
<span style="font-family: Arial,Helvetica,sans-serif;"> </span><span style="color: black; font-family: "Arial","sans-serif"; font-size: 10pt;"> </span></div><span style="font-family: Arial,Helvetica,sans-serif;">Asignamos los pines como en la imagen</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiChlE4JEBO9k-zBCTkSm4BgsXFYPfavH1GvvbseQvV90c-BpNqa-7y0np-tq_-kMHeXQjblUpoRwvfuM6Pb9uvF1WkrXK__gX987RklAayx7LlKWJWFgBBA_lLhAT4AtGTNVS5D2yVFmU/s1600/bcdu.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="174" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiChlE4JEBO9k-zBCTkSm4BgsXFYPfavH1GvvbseQvV90c-BpNqa-7y0np-tq_-kMHeXQjblUpoRwvfuM6Pb9uvF1WkrXK__gX987RklAayx7LlKWJWFgBBA_lLhAT4AtGTNVS5D2yVFmU/s320/bcdu.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Y finalmente programar en la tarjeta, como ya hemos <a href="http://electronicalavin.blogspot.com/2010/11/implementacion-de-un-sumador-completo.html">visto</a>.</span><br />
<div class="MsoNormal" style="line-height: normal; margin: 0cm 12.65pt 0.0001pt 6pt;"><br />
</div>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com0tag:blogger.com,1999:blog-2137256650867000926.post-41232640504099096172010-11-14T13:15:00.004+01:002011-03-20T11:59:35.367+01:004-Bit binary counter<span style="font-family: Arial,Helvetica,sans-serif;"> </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">El siguiente ejercicio es un contador de 4 bit´s con permiso de reloj y borrado asíncrono</span><br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJSnJx13nY2GDQgEeApUw1gK3unmseuRIREnQnWVs3Tu7rJW-Ce0BRv-4KJPMoRHeUFD8Ed1vAzHh0ud3ZtjyTEqSFcS4oHhSqTYKlJKmJSDLB2OeiPc5k-1mp3fzPUwhjh-i-iF_9wLc/s1600/tabla.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="151" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJSnJx13nY2GDQgEeApUw1gK3unmseuRIREnQnWVs3Tu7rJW-Ce0BRv-4KJPMoRHeUFD8Ed1vAzHh0ud3ZtjyTEqSFcS4oHhSqTYKlJKmJSDLB2OeiPc5k-1mp3fzPUwhjh-i-iF_9wLc/s320/tabla.png" width="320" /></a></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Seguimos los pasos del <a href="http://electronicalavin.blogspot.com/2010/11/implementacion-de-un-sumador-completo.html">ejercicio anterior</a> para crear un nuevo proyecto. Añadimos el CB4CE, un contador que Xilins da por defecto</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfBdUNAtIWxf8lBnheEKyTxQO9C6abGUbqbWA5sxeyJ-THIwzYESVjOoJKfmYAybFgLHK6L4zWMNYT9c7zVxK6VnxH0HlxjBbh74vRFZPfAifeUCRw0OmVNNFUT8eV8mc3pgBr6QUaR5g/s1600/cb4ce.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="198" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfBdUNAtIWxf8lBnheEKyTxQO9C6abGUbqbWA5sxeyJ-THIwzYESVjOoJKfmYAybFgLHK6L4zWMNYT9c7zVxK6VnxH0HlxjBbh74vRFZPfAifeUCRw0OmVNNFUT8eV8mc3pgBr6QUaR5g/s320/cb4ce.png" width="320" /></a></div><br />
<br />
<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Para minimizar el skew añadiremos un BUFG en el reloj</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3vyIwAZKgtF4jrGRnuIgr9Aengp-F2yblazMpgucgX5vJXbQU55WbBaH6ePBwp0NpMo5mV9t8fapvihEJs2THOSOjImKXQ0B7EnKJMhnkgWTRzMyha5LPX0VRCIgMpuoMt5PxWu7-dwM/s1600/cb4ceskew.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3vyIwAZKgtF4jrGRnuIgr9Aengp-F2yblazMpgucgX5vJXbQU55WbBaH6ePBwp0NpMo5mV9t8fapvihEJs2THOSOjImKXQ0B7EnKJMhnkgWTRzMyha5LPX0VRCIgMpuoMt5PxWu7-dwM/s320/cb4ceskew.png" width="320" /></a></div><br />
<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Vamos a crear un símbolo de un esquema, para ello añadimos un nuevo fichero fuente y creamos el siguiente esquema</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCWz8TYcghRCoY6N1Tsb4Dr8pI2N85n94D8AfTFQCvJVEgwB4XqOb40TTL3UanZI6SRvndKbn_Eu0FToK86zx4bbHernRBK5DRRLHSpM72BQtSe0LWHfprZyKN62l_nKws7wac-_5XcAs/s1600/esru.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCWz8TYcghRCoY6N1Tsb4Dr8pI2N85n94D8AfTFQCvJVEgwB4XqOb40TTL3UanZI6SRvndKbn_Eu0FToK86zx4bbHernRBK5DRRLHSpM72BQtSe0LWHfprZyKN62l_nKws7wac-_5XcAs/s320/esru.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Una vez hecho, creamos el símbolo</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiGeNkCkmvhj4rpr64s0lERHjuMiJhLWkTxMnoRoPTtjwyMyTfE-NhVfWL8oTC3FlQN-ucGZzZImWz4m7C6NFwvjWKcZHyw1AyR0e-aqUq6ej5VZ7P0IEjJ8n1SSPFK3OVsPIOWLxCBMw/s1600/schematic.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="271" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiGeNkCkmvhj4rpr64s0lERHjuMiJhLWkTxMnoRoPTtjwyMyTfE-NhVfWL8oTC3FlQN-ucGZzZImWz4m7C6NFwvjWKcZHyw1AyR0e-aqUq6ej5VZ7P0IEjJ8n1SSPFK3OVsPIOWLxCBMw/s320/schematic.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><span style="color: black; font-family: Arial,Helvetica,sans-serif; font-size: 10pt; line-height: 115%;"><span style="letter-spacing: -0.05pt;"></span><span style="letter-spacing: -0.05pt;"></span><span style="letter-spacing: 0.05pt;"></span><span style="letter-spacing: -0.1pt;"></span><span style="letter-spacing: 0.05pt;"></span></span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Ahora ya podemos seleccionarlo como si fuera un componente más y lo conectamos todo</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0qrzjFSlrwKqLHNK05eGFdKRSQPvrqONtMK-zyySINVUdpoU9eHeQ2S0CPQjXzb718XHmUK8RDOji-3k2scKNXvvKKVlBvM1iHSVSvVmqprT5M2Qty9b3tvtlmO0imC3qtnY6HuZh4Gw/s1600/deco.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0qrzjFSlrwKqLHNK05eGFdKRSQPvrqONtMK-zyySINVUdpoU9eHeQ2S0CPQjXzb718XHmUK8RDOji-3k2scKNXvvKKVlBvM1iHSVSvVmqprT5M2Qty9b3tvtlmO0imC3qtnY6HuZh4Gw/s320/deco.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">En este ejercicio vamos a crear un fichero de restricciones para la localización de pines. Para ello vamos a Project->New Source->Implementation Constraints File.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Ahora se habrá creado un fichero .UCF en el cuál podremos poner el orden de pines deseado.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTng4xmbv0-w9hmI_dkHvkTNu9ylHCkKRnVjEiGV68hoC7eHUIMDZwgIshG0qcn28AQiRTzXbez5oNfU2gZVUw4Ou4DFuCCsDEVPbkC0M6H983SGPqVhQt_MYsWAEtfnzqt8Zoys4wskY/s1600/uvfs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="198" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTng4xmbv0-w9hmI_dkHvkTNu9ylHCkKRnVjEiGV68hoC7eHUIMDZwgIshG0qcn28AQiRTzXbez5oNfU2gZVUw4Ou4DFuCCsDEVPbkC0M6H983SGPqVhQt_MYsWAEtfnzqt8Zoys4wskY/s320/uvfs.png" width="320" /></a></div><br />
<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Solo queda crear el Test Bench y programarlo, exactamente igual que en el <a href="http://electronicalavin.blogspot.com/2010/11/implementacion-de-un-sumador-completo.html">ejercicio anterior</a></span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMtuSZBeUtqwKFwjF6NuJyURQSNITeml629cDHqBIHFSXqwU1CpIp5C4oBx3l-Frcp-Iq1FTkIe9qAtlDO1nGvA8u8Sf3HGUUvWFIQN5ECp-CPggJSEo2yhWPE_jA8TBf3Lmt2zioQxMU/s1600/aa.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMtuSZBeUtqwKFwjF6NuJyURQSNITeml629cDHqBIHFSXqwU1CpIp5C4oBx3l-Frcp-Iq1FTkIe9qAtlDO1nGvA8u8Sf3HGUUvWFIQN5ECp-CPggJSEo2yhWPE_jA8TBf3Lmt2zioQxMU/s320/aa.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><span style="color: black; font-family: Arial,Helvetica,sans-serif; font-size: 10pt; line-height: 115%;"><span style="letter-spacing: -0.05pt;"></span><span style="letter-spacing: -0.05pt;"></span><span style="letter-spacing: 0.05pt;"></span><span style="letter-spacing: -0.1pt;"></span><span style="letter-spacing: 0.05pt;"></span></span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhabj6iJtCGWivDEHk0pMNJUhdXCvfD5v7V7dhe-A3G8c52PJU1Rc7LJs7fbyhH2e2r62bc8FWM9Jv1JaVo94ryetooz4br1y0dPE_GJuY0M9OoeMghHMl_13MzjdHq6nWW52L_RlLbV8Q/s1600/wave.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="148" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhabj6iJtCGWivDEHk0pMNJUhdXCvfD5v7V7dhe-A3G8c52PJU1Rc7LJs7fbyhH2e2r62bc8FWM9Jv1JaVo94ryetooz4br1y0dPE_GJuY0M9OoeMghHMl_13MzjdHq6nWW52L_RlLbV8Q/s320/wave.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><span style="color: black; font-family: Arial,Helvetica,sans-serif; font-size: 10pt; line-height: 115%;"><span style="letter-spacing: -0.05pt;"></span><span style="letter-spacing: -0.05pt;"></span><span style="letter-spacing: 0.05pt;"></span><span style="letter-spacing: -0.1pt;"></span><span style="letter-spacing: 0.05pt;"></span></span>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com0tag:blogger.com,1999:blog-2137256650867000926.post-20943572482450818312010-11-07T13:40:00.011+01:002011-03-22T18:57:44.339+01:00Implementation of a 1-bit full adder in the XC9572 CPLD<span style="font-family: Arial,Helvetica,sans-serif;"> </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">We will use </span><span style="font-family: Arial,Helvetica,sans-serif;"> ISE Webpack 10.1, that is a Xilinx´s application and a CPLD </span><span style="font-family: Arial,Helvetica,sans-serif;">XC9572.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Other aplication that we have to use is ModelSim that is another application whose function is to simulate the exercise</span><span style="font-family: Arial,Helvetica,sans-serif;">.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"> </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Our first exercise is:<b> IMPLEMENT A 1 BIT ADDER </b>using a CPLD (XC9572, in my case).</span><span class="short_text" id="result_box" lang="en"><span class="hps" title="Haz clic para obtener traducciones alternativas"></span><span class="hps" title="Haz clic para obtener traducciones alternativas"></span><span class="hps" title="Haz clic para obtener traducciones alternativas"></span><span class="hps" title="Haz clic para obtener traducciones alternativas"></span><span class="hps" title="Haz clic para obtener traducciones alternativas"></span></span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">To understand the operation of our adder, we have to make a true table:</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj45dSMI4MFraFyCvd9IuWIe-nvhrm9VVDNhH5tES3cmEFy62jFVYCI3ktob-HaHGbOHObH7TmvID7CMj1LQgI1u6Ih12-Nro0UPYBqjP4QHfkZWGEYG7wRmKLPKMkiJH3INLoHMXyVEkc/s1600/tabla.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj45dSMI4MFraFyCvd9IuWIe-nvhrm9VVDNhH5tES3cmEFy62jFVYCI3ktob-HaHGbOHObH7TmvID7CMj1LQgI1u6Ih12-Nro0UPYBqjP4QHfkZWGEYG7wRmKLPKMkiJH3INLoHMXyVEkc/s1600/tabla.png" /></a></div><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">This table contains two input data (A and B) + the input Carry and a output data + the output Carry. </span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxIYbbRHq84CYAllMFsMJqdsj20_Br7Nzwsyx92YOpRAs0o7LbjVyfNuw7Uiq528XhE6TyOEze3qCVZIMKUPC3-0pqbusKg6miV07mOnhirtqa993cLFdBCfiHKyHBlvQlDkoCzDqIw5g/s1600/tabla.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="217" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxIYbbRHq84CYAllMFsMJqdsj20_Br7Nzwsyx92YOpRAs0o7LbjVyfNuw7Uiq528XhE6TyOEze3qCVZIMKUPC3-0pqbusKg6miV07mOnhirtqa993cLFdBCfiHKyHBlvQlDkoCzDqIw5g/s320/tabla.png" width="320" /></a></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;">If we apply Karnaugh, our result is as follows:</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv5MQaKxlFnNO8ZYIkP61rCTq_0ZBSoqHmJXespMPZaia41AVZ7LWKA45gMIfB4tgicwcUmNj6RU5RqdOd1BQGEvKY3EIhuB2kZ4tYCRhigx3Jz_w68sw1EzBUqAo_yO5LfK-j-sAhtZ0/s1600/karnaugh.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv5MQaKxlFnNO8ZYIkP61rCTq_0ZBSoqHmJXespMPZaia41AVZ7LWKA45gMIfB4tgicwcUmNj6RU5RqdOd1BQGEvKY3EIhuB2kZ4tYCRhigx3Jz_w68sw1EzBUqAo_yO5LfK-j-sAhtZ0/s1600/karnaugh.png" /> </a></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><br />
</div><span style="font-family: Arial,Helvetica,sans-serif;"> </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">The next step is to design a schematic circuit. For this, we have to open ISE Webpack 10.1 (Project Navigator) and we must select <i>'File'</i>--> <i>'New Project'</i>. </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Now, will be opened a window like this:</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkiD36THMsnALARebv4vLAePCSRi4NQQWTRmPELMojORkjvQ-6wlbOQvEd-NcX_JVUTPsHJ3i-Sad0Z9EkPt8kgseLtL4-32bpRRrZ4wrmaUyZiW3TNizGDbuLoNOOizLMEYN5LVUhyphenhyphen6Q/s1600/nuevo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="227" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkiD36THMsnALARebv4vLAePCSRi4NQQWTRmPELMojORkjvQ-6wlbOQvEd-NcX_JVUTPsHJ3i-Sad0Z9EkPt8kgseLtL4-32bpRRrZ4wrmaUyZiW3TNizGDbuLoNOOizLMEYN5LVUhyphenhyphen6Q/s320/nuevo.png" width="320" /></a></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Here, we must put the Project name (sumador) and the Project location (C:\Xilinx\Projects\sumador). At last we need to select the type of source for the project that will be 'Schematic'.</span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">In the next window, we have must to configure our device properties. The device and the family are XC9572 and XC9500 CPLDs respectively. Our Package is PC84 and the speed -7.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Later we must select the programming language that we prefer, I prefer VHDL. </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">To simulate the program, I have to use ModelSim simualator.</span><span class="short_text" id="result_box" lang="en"><span class="hps" title="Haz clic para obtener traducciones alternativas"><br />
</span></span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLTN7nux1JqHnd5yZr4nUOnXSiXQAU7dTiogwDzSkvLQXGHQ8RACLHiqQ1MBmqt23Llb9zGHx6MyCcXkZqSSclx8Gvmel1mgBS-jk7nz1qKT_B0RLnGuK4t3Faq_YxyWbDCWvlz6JXWaI/s1600/Sin+t%C3%ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="229" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLTN7nux1JqHnd5yZr4nUOnXSiXQAU7dTiogwDzSkvLQXGHQ8RACLHiqQ1MBmqt23Llb9zGHx6MyCcXkZqSSclx8Gvmel1mgBS-jk7nz1qKT_B0RLnGuK4t3Faq_YxyWbDCWvlz6JXWaI/s320/Sin+t%C3%ADtulo.png" width="320" /></a></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;">In the new window, we select Schematic for the design and we put the Location and the File name. </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">In the next window we click next because we don´t need to add any source.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGuQHOzLpmlurgUA6QAzr8fmjBYEI95ybx77aoOIkjlaRLo4rkhNLC2Xc3NrBXcQmhD1zry9i4Q55_6C6HxQiqtMjOfMh1NTypPyoVmGt2rbL4mYGBWnteoZis5G6AA2gUNLfuX8YzKDk/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="174" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGuQHOzLpmlurgUA6QAzr8fmjBYEI95ybx77aoOIkjlaRLo4rkhNLC2Xc3NrBXcQmhD1zry9i4Q55_6C6HxQiqtMjOfMh1NTypPyoVmGt2rbL4mYGBWnteoZis5G6AA2gUNLfuX8YzKDk/s320/2.png" width="320" /></a></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Now will be opened a new window with the working environment. </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">We have to go to 'Symbols' tab for select our components. In the window´s top there is a toolbar where we can select different options like 'Add wire' or 'Add Net name'.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpbOkL-zobx3M1-Eu0e1UJS1j-HWDQVsWzBLirG3DvsFmEPkjdhVEi8smYlp5qZPhHPWYDZId_U3QsGCud6-ik9rGzAruWaab-6Mgo4P_ILB690cEoiaj4LBCiIpitu81_iF20PPlgxEQ/s1600/sch.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpbOkL-zobx3M1-Eu0e1UJS1j-HWDQVsWzBLirG3DvsFmEPkjdhVEi8smYlp5qZPhHPWYDZId_U3QsGCud6-ik9rGzAruWaab-6Mgo4P_ILB690cEoiaj4LBCiIpitu81_iF20PPlgxEQ/s320/sch.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">We begin to select the components (2 AND gates, 2 XOR, 1 OR gate) and we add the nets.</span><br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDlQ0fDY3FZZ92ZLFl24aSVr6xAzvetfszvTJxK4BfiMev7x-6v2OWfELMhlvKeaKmk3ZKOhjzNiOC72G0YdSJsjah4KYBGZFwoKn6YrcwIuRuaeu9aZQlht9HZpfSvvOQ2-pSAFTUhj4/s1600/ab.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="128" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDlQ0fDY3FZZ92ZLFl24aSVr6xAzvetfszvTJxK4BfiMev7x-6v2OWfELMhlvKeaKmk3ZKOhjzNiOC72G0YdSJsjah4KYBGZFwoKn6YrcwIuRuaeu9aZQlht9HZpfSvvOQ2-pSAFTUhj4/s320/ab.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsFm2PitXp0t9-47KuIOxMJWlpxIhisYWjc6J9guDPc12-WnwZuzegye72J3rRHM-Y2T_fEa-nGCIzvnMQVhGlcpA1Sfn6W4cGgB0z3kCXroCkgnty3iJSs7Tn2BN8mL9rfgSFi3unsZA/s1600/initialize.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;"><b>Create the Test Bench file</b>, for this, we need to create a new source and we select Test Bench Waveform.</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">In this window we should select the internal clock like in the image:</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsFm2PitXp0t9-47KuIOxMJWlpxIhisYWjc6J9guDPc12-WnwZuzegye72J3rRHM-Y2T_fEa-nGCIzvnMQVhGlcpA1Sfn6W4cGgB0z3kCXroCkgnty3iJSs7Tn2BN8mL9rfgSFi3unsZA/s1600/initialize.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsFm2PitXp0t9-47KuIOxMJWlpxIhisYWjc6J9guDPc12-WnwZuzegye72J3rRHM-Y2T_fEa-nGCIzvnMQVhGlcpA1Sfn6W4cGgB0z3kCXroCkgnty3iJSs7Tn2BN8mL9rfgSFi3unsZA/s320/initialize.png" width="320" /></a></div><br />
<div class="separator" style="clear: both; text-align: left;"><br />
</div><br />
<div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">Now, we have to check the true table of the counter. We need to configure the time inputs for realize the simulation.</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAxa6Kt_DTA15uszR6bRBk6M4nF1GR8ZKYxJnIAY0HroIgUdgLTt0QaoSwGqAbaYYimx_nr8gUZVF_rOKMVCVotRgysEE20oGjlu2ieuT9Mp0ECYG-3bsxtYXiJYhZlC9HBVWrEHfocFY/s1600/onda.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="98" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAxa6Kt_DTA15uszR6bRBk6M4nF1GR8ZKYxJnIAY0HroIgUdgLTt0QaoSwGqAbaYYimx_nr8gUZVF_rOKMVCVotRgysEE20oGjlu2ieuT9Mp0ECYG-3bsxtYXiJYhZlC9HBVWrEHfocFY/s320/onda.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: left;"><br />
</div><br />
<br />
<div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">We have to add the Test Bench file to project and it will be opened ModelSim with the simulation. </span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY0QQ0vCRzMJjsRCR1YzR9vsop9jOeJ7cXgwEGXIMtsg7ioR8dZ1tUuoDEDdcE28tPBurNrozQXl9LF_zipr3GSsfShPxZKRq8yINl6FB0e1bUSlO_3-wDEcDpTRtzINEompyCcU8MDtQ/s1600/modelsimuh.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY0QQ0vCRzMJjsRCR1YzR9vsop9jOeJ7cXgwEGXIMtsg7ioR8dZ1tUuoDEDdcE28tPBurNrozQXl9LF_zipr3GSsfShPxZKRq8yINl6FB0e1bUSlO_3-wDEcDpTRtzINEompyCcU8MDtQ/s320/modelsimuh.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">Finally, we have to program the project in a CPLD.</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">For this we need a JTAG</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH0Ke5reLwhFg6vdJDdstyNt3_YHyTg07c2KcV_kOPFrWPqcXGSm3TR0qREUWHsy7-am3qKz7-G_LlP4aMFEMc-wRgeQX6ZU7w2nXyMBGUQtNCfEHgHqD9DdTVDEMzVURPnSho1AH8HW0/s1600/cable.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="167" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH0Ke5reLwhFg6vdJDdstyNt3_YHyTg07c2KcV_kOPFrWPqcXGSm3TR0qREUWHsy7-am3qKz7-G_LlP4aMFEMc-wRgeQX6ZU7w2nXyMBGUQtNCfEHgHqD9DdTVDEMzVURPnSho1AH8HW0/s320/cable.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: left;"><br />
</div><br />
<span style="font-family: Arial,Helvetica,sans-serif;">An ATX power source</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPzY4KBWwtyIN5SYuB7pHPqCqmdKuzfMVsqcPMV9w3Mh7wxWHWWenIWq1dFzppqx_X9-wad7PFao5eUZHLAE-eIZETNUajCCBR0a-lxrcp4Zj7vYsxRN3KZrxwZYsFTqmPsy9B6YAK2so/s1600/FUENTE+ATX.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="178" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPzY4KBWwtyIN5SYuB7pHPqCqmdKuzfMVsqcPMV9w3Mh7wxWHWWenIWq1dFzppqx_X9-wad7PFao5eUZHLAE-eIZETNUajCCBR0a-lxrcp4Zj7vYsxRN3KZrxwZYsFTqmPsy9B6YAK2so/s320/FUENTE+ATX.jpg" width="320" /></a></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">and the CPLD 'TAD-XC9572'.</span><br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCljkSfoE5Ngc75GXY4lDNeyMIjmN7cuVMOVSsKDslYP_32tiy3Pj-Lvdhg2YylwOa_Ml_elUwZ5TGbW24dw8Y0kzXzFQW_hn9AFBpmSrI5XL352IE5cGghn_TJetrMc2kwcySBKno2EI/s1600/Sin+t%25C3%25ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCljkSfoE5Ngc75GXY4lDNeyMIjmN7cuVMOVSsKDslYP_32tiy3Pj-Lvdhg2YylwOa_Ml_elUwZ5TGbW24dw8Y0kzXzFQW_hn9AFBpmSrI5XL352IE5cGghn_TJetrMc2kwcySBKno2EI/s1600/Sin+t%25C3%25ADtulo.png" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">At first we have to generate our programming file (.JED file)</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj78kID9pArOpOnRJ1FveIWPNKd1Tn6wrtKunxUhSuq0v1YrNX8cTlY8rOceQLkc5MK0HApCUnnnQSm9-4kaT52jq_zS7MMso7epUyp4gdzg0cysbKEkBHBM5HpAdKoSYFZwVtVnSnndiw/s1600/jed.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="171" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj78kID9pArOpOnRJ1FveIWPNKd1Tn6wrtKunxUhSuq0v1YrNX8cTlY8rOceQLkc5MK0HApCUnnnQSm9-4kaT52jq_zS7MMso7epUyp4gdzg0cysbKEkBHBM5HpAdKoSYFZwVtVnSnndiw/s320/jed.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">When we had generated the .JED, we must go to Impact (Xilinx´s application). And program the CPLD.</span><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;"> </span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;"> </span><span style="color: black; font-family: "Arial","sans-serif"; font-size: 14pt; line-height: 115%;"></span> </div>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com0tag:blogger.com,1999:blog-2137256650867000926.post-10142450596926290392010-10-17T15:48:00.004+02:002011-03-31T10:44:39.463+02:00Tarjeta de circuito impreso con PIC18F4550<span style="font-family: Arial,Helvetica,sans-serif;">Siguiendo el desarrollo de nuestro <a href="http://electronicalavin.blogspot.com/2010/09/diseno-de-circuito-con-el-pic18f4550-en.html">PROYECTO</a> en OrCAD Capture, es hora de pasar a diseñar lo que será el circuito impreso con otra aplicación de OrCAD, el Layout</span>.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic6kRiOf4dFPPyJ2s0Mre0ID2oJvq0_FVP6chFWcyecOTcpS_WFTgNtPLEjkiUKyaHv2-1D9_ifLceXVDz0-nhqXJ7wWOm3PEdYYV-zbs8ziB_UqhcDxLpiHO_us777HEW4hTKBWCX3_I/s1600/layout.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic6kRiOf4dFPPyJ2s0Mre0ID2oJvq0_FVP6chFWcyecOTcpS_WFTgNtPLEjkiUKyaHv2-1D9_ifLceXVDz0-nhqXJ7wWOm3PEdYYV-zbs8ziB_UqhcDxLpiHO_us777HEW4hTKBWCX3_I/s320/layout.png" width="320" /></a></div><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Suponiendo que no existan errores en Capture y hayamos elegido los Footprints adecuados es hora de comenzar nuestra placa en Layout</span>. <span style="font-family: Arial,Helvetica,sans-serif;">Para ello abrimos un nuevo proyecto, como se muestra en la imagen, cargando el archivo .MNL que corresponda a nuestro diseño de Capture.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRxy1Hu-R5MjeHcgubDczr3vkAZjKELenWg7J4_xxNRHB72Adup2o2AbxfdZFrEHRxDNE8ueoQqMhJRGwgEtuo0OOgdhgayrsOZ2p2aZUEiG0-NZoWwX6_-qmqAANkT-0Gc7tDoZ3-DoI/s1600/Sin+t%C3%ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRxy1Hu-R5MjeHcgubDczr3vkAZjKELenWg7J4_xxNRHB72Adup2o2AbxfdZFrEHRxDNE8ueoQqMhJRGwgEtuo0OOgdhgayrsOZ2p2aZUEiG0-NZoWwX6_-qmqAANkT-0Gc7tDoZ3-DoI/s320/Sin+t%C3%ADtulo.png" width="275" /></a></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;">En este punto nos pueden aparecer algunos errores que Capture solo nos marca como Warning, así que atentos.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Una vez esté todo correcto nos debería aparecer una pantalla con todos nuestros componentes.</span><br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPyC0hCl7Yq9mev_tu1Trl95gBWIzAmTiecIFDchTNJjs6JEQmenqbBZKciZssxwU7imAiIHwvEHleM61vkpt7ht3BfPwl45oEO7L_FMfxOLjYZGdakzgSGDEw5yUgIjpysP3ir-Q88XM/s1600/Sin+t%C3%ADt146ulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPyC0hCl7Yq9mev_tu1Trl95gBWIzAmTiecIFDchTNJjs6JEQmenqbBZKciZssxwU7imAiIHwvEHleM61vkpt7ht3BfPwl45oEO7L_FMfxOLjYZGdakzgSGDEw5yUgIjpysP3ir-Q88XM/s320/Sin+t%C3%ADt146ulo.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"> </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">En la imagen se pueden apreciar todas las conexiones entre componentes en color amarillo pero no están todavía 'hechas' por así decirlo hasta que no realicemos el autoroute.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"> </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Una vez aquí lo primero que vamos a hacer es crear un borde exterior para la placa, es decir, el contorno. Vamos a la barra de herramientas y veremos un icono llamado Obstacle Tool, lo seleccionamos y podemos dibujar el borde de nuestra placa (para comprobar la medida podemos ir a Options-> System Settings y configurarlo según nos convenga en cada momento).</span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Ahora vamos a definir las caras para el trazado, seleccionamos el icono View Spreadsheet y Layers y nos aparecerá una ventana que tendrá que quedar, en nuestro caso, así:</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-TV5ucsADbvv09uCHqtq6bNX67w4uokA5qksTqeqbIk9gV09Gf7IEw1uYeEc-U599ftitONsHglRwQ3cRpskPGNz9rITtjxPlqa-XZNbe42CSaUQjw22IjRwIt6btUKtJtwy1EE_mtNo/s1600/Sin+t%C3%ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="199" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-TV5ucsADbvv09uCHqtq6bNX67w4uokA5qksTqeqbIk9gV09Gf7IEw1uYeEc-U599ftitONsHglRwQ3cRpskPGNz9rITtjxPlqa-XZNbe42CSaUQjw22IjRwIt6btUKtJtwy1EE_mtNo/s320/Sin+t%C3%ADtulo.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"> </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Ya que solo vamos a trazar pistas en la cara TOP y BOTTOM.</span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">El siguiente paso es colocar los componentes dentro de nuestro borde, teniendo en cuenta que entre el borde de la placa y el componente tiene que haber una distancia mínima de 1.27mm y entre componentes de 0.76mm. </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Una vez colocado quedará algo tal que así</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibqV9fL5qDdBXOXU3aEZ5xLodb88g4GRcRVTj-1lzf-kyUUygfW5S8uteC9mnKh_ON42M4DkeeBAn6P-aBi09WU6DgzV1Wr-hjWvDqKXZShXeQ2crJbsZRFvLm6eLGIjlpUcqum_n9BDA/s1600/Sin+tg%C3%ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="221" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibqV9fL5qDdBXOXU3aEZ5xLodb88g4GRcRVTj-1lzf-kyUUygfW5S8uteC9mnKh_ON42M4DkeeBAn6P-aBi09WU6DgzV1Wr-hjWvDqKXZShXeQ2crJbsZRFvLm6eLGIjlpUcqum_n9BDA/s320/Sin+tg%C3%ADtulo.png" width="320" /></a></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Para comprobar que no hay errores vamos a Auto-> Design Rule Check-> Clear All-> Placement Spacing Violations y OK. </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Si existe algún error nos lo marcará con un cículo amarillo.</span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Ahora toca trazar las pistas, lógicamente de manera automática y teniendo en cuenta el grosor de pista que deseamos y la separación entre ellas. Seleccionando la opción Nets del menú.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Para trazarlas vamos a Auto-> Autoroute-> Component y el resultado final es este</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdD2wO06dDzKe6vSFwCLS5lQlcyJiPihYZMTyNPE0r1fiWbD-SqyhmT-IvHKNDJTlJdz_G_NviUsvgMYV_80-Zz4sMLDxicHGS9eied8wFsu5UdMoGVsnbuE5rNBQO9nIXautKSt8UvaU/s1600/dgdf.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="221" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdD2wO06dDzKe6vSFwCLS5lQlcyJiPihYZMTyNPE0r1fiWbD-SqyhmT-IvHKNDJTlJdz_G_NviUsvgMYV_80-Zz4sMLDxicHGS9eied8wFsu5UdMoGVsnbuE5rNBQO9nIXautKSt8UvaU/s320/dgdf.png" width="320" /></a></div><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Muchas veces no hace todas las pistas por lo que hay que borrarlas con Unroute Board y volver a trazarlas, podemos girar algún componente donde tenga mas pistas para facilitar la labor de trazado o mover de sitio algún componente.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Como vemos, solo hay dos colores: verde y rojo que corresponden a las caras Top y Bottom que antes hemos configurado.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Algo muy recomendable es colocar texto en la cara Top de la placa para tener cierta información sobre que componente es cada uno y así facilitar la labor a la hora de colocar los componentes.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Vamos a hacer un plano de masa en la cara BOT, para ello creamos un obstáculo del tamaño de la placa (como el borde) que sea BOT y vamos a propiedades y seguimos la información de la imagen</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5Amiqp3oRTIo6uu-9RDl8VDvKFm5ZWFC2ie4cvTECXZQkHgimzCkIAJOCAlUEu4fsYZOG1aMdgFpg7Na4MxA_tY5muY02Y68dcYvRkl1PBL6-CHTT5Nm6nBIHEh-Q9T3IjSqoSBjHjRM/s1600/grh.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5Amiqp3oRTIo6uu-9RDl8VDvKFm5ZWFC2ie4cvTECXZQkHgimzCkIAJOCAlUEu4fsYZOG1aMdgFpg7Na4MxA_tY5muY02Y68dcYvRkl1PBL6-CHTT5Nm6nBIHEh-Q9T3IjSqoSBjHjRM/s320/grh.png" width="316" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9U0o7EqEcGusmRvyIbj4yfOUUIcXWvPIH0SYLm6vcArLqRj2SdaX6QWPS237ZE7u5QoimKFR897Hd5GFPbMEc0st5BdbUKtaukAbVOvvcyTak8yEubkUpgcyI6oaH3pRkkrGV7GLyP9w/s1600/sfdhjfg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Damos OK y quedará algo así. El plano de masa sería toda la parte de color rojo, es decir, sería cobre.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEga9FgW4OEhIdEGu3ya4v1VtAfdsosHjOL1kNwLG7Hy4wRqOGOCY2gklwq8_D03O6XAGhT2MCUDiGGbrCxO6oJvIIChkIdAdPbm1qENzrwstPRC4AjHc5XyP6jLvPkO4kfE-OjQWvUJxbY/s1600/zz.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEga9FgW4OEhIdEGu3ya4v1VtAfdsosHjOL1kNwLG7Hy4wRqOGOCY2gklwq8_D03O6XAGhT2MCUDiGGbrCxO6oJvIIChkIdAdPbm1qENzrwstPRC4AjHc5XyP6jLvPkO4kfE-OjQWvUJxbY/s320/zz.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Antes de finalizar debemos crear los ficheros para la CNC (la máquina de taladrado y fresado). En primer paso vamos Window-> Post Process y habrá que configuralo como en la imagen</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_vgCEisEz38ugEhNgwhTgb5g4G0EKgkGYKRGUBRfYpwykK8PTDsTuZ1RilEOHhsXcdNY4nCuGgROsPPJSjQwanXvHOU0E9TdsKtYeHfJfeFBdOWcQmbAEo95W45NgWRcj9ji0_Gsy36I/s1600/zzzzz.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_vgCEisEz38ugEhNgwhTgb5g4G0EKgkGYKRGUBRfYpwykK8PTDsTuZ1RilEOHhsXcdNY4nCuGgROsPPJSjQwanXvHOU0E9TdsKtYeHfJfeFBdOWcQmbAEo95W45NgWRcj9ji0_Gsy36I/s320/zzzzz.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">A continuación vamos a generar los ficheros Gerber y Excellon. Vamos a Options->Gerber Settings y elegimos 3.4 Format, lo demás lo dejamos por defecto, le damos a Save y OK.</span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Seguidamente vamos a Post Process settings y habilitamos las capas que necesitemos (.GND y .PWR no son necesarias pero las habilitamos porque puden dar errores).</span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Por último ejecutamos el comando Auto-> Run Post Processor que generará todos los archivos que necesitamos. </span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Aquí acabaríamos nuestro diseño en Layout y nos quedaría exportar los ficheros que acabamos de generar al Circuit Cam y posteriormente al Board Master para poder comenzar con el taladrado y el fresado de la placa. </span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Primero vamos al CircuitCam e importamos los archivos anteriormente generados y veremos nuestra placa</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxwou4iwxsThcbdo8U33rqzxszycjcaFyLnd62IASx7_T57sjx8PHCq1WmnM9R-vzR7cMNOVwBKem5giNotd3cLLG8-ZabDWZnFnguBDYNu3Kwmols2XdcrU4cSDelzOJi2V1u9KDVre8/s1600/circuitcam.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="231" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxwou4iwxsThcbdo8U33rqzxszycjcaFyLnd62IASx7_T57sjx8PHCq1WmnM9R-vzR7cMNOVwBKem5giNotd3cLLG8-ZabDWZnFnguBDYNu3Kwmols2XdcrU4cSDelzOJi2V1u9KDVre8/s320/circuitcam.png" width="320" /></a></div><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"> </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"> </span>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com0tag:blogger.com,1999:blog-2137256650867000926.post-13283172564479032832010-10-05T17:28:00.001+02:002010-10-05T17:28:52.255+02:00MCP6S92 SPI FOOTPRINT<span style="font-family: Arial,Helvetica,sans-serif;">Vamos a crear un Footprint que no existe en Layout, este es el MCP6S92</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwvqEE5o8NgzIJJCuM5-ktYxkv8AIDuQ46f6jSO5XYAIYIOjRqgMcATmwmdMhwizVjFpCPo6ky9A_dAUtRlpshvDtcxIBlNCUe8BlkfNsfwXDnbqu7xAw3jTJVECw8RMipHhY6SeK06JY/s1600/Sin+t%C3%ADtulo.png" imageanchor="1"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwvqEE5o8NgzIJJCuM5-ktYxkv8AIDuQ46f6jSO5XYAIYIOjRqgMcATmwmdMhwizVjFpCPo6ky9A_dAUtRlpshvDtcxIBlNCUe8BlkfNsfwXDnbqu7xAw3jTJVECw8RMipHhY6SeK06JY/s1600/Sin+t%C3%ADtulo.png" width="256" /></a></div><br />
<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Y a continuación dejo la librería donde se puede encontrar, su nombre es SOIC_MCP6S92</span><br />
<a href="http://www.badongo.com/file/24283266%20"><span style="font-family: Arial,Helvetica,sans-serif;">http://www.badongo.com/file/24283266 </span></a>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com0tag:blogger.com,1999:blog-2137256650867000926.post-75331964455986426452010-09-29T18:42:00.068+02:002011-03-31T09:41:40.236+02:00Diseño de circuito con el PIC18F4550 en Capture<div style="text-align: justify;"><span style="font-family: arial;">Utlizando el Orcad Capture, hemos propuesto crear un entrenador con el PIC18F4550. Para poder realizar este proyecto deberemos estudiar el datasheet del pic, que podemos ver <a href="http://www.datasheetcatalog.org/datasheet/microchip/39617a.pdf">aquí</a>.</span></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><span style="font-family: Arial;">Como he dicho, vamos a utilizar el Orcad Capture y mas adelante utilizaremos el Layout, que son unas aplicaciones de Cadence para el diseño y desarrollo de circuitos electrónicos.</span><br />
<br />
<span style="font-family: Arial;">Abrimos Orcad Capture y podemos empezar</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG5gMA6P-aBOa7IDuw2v3fUBBvXVZjT-PKAX33l4vd-J-ZYdi04qXTe_5sqtFcSNlYyGyZHtmyiw3_t22NjgcX_aDwbz3mlHO4po-YBlufSAtn-3SH9bhg5hR1rVkkq3W5ayAqXpjwB0c/s1600/capture.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG5gMA6P-aBOa7IDuw2v3fUBBvXVZjT-PKAX33l4vd-J-ZYdi04qXTe_5sqtFcSNlYyGyZHtmyiw3_t22NjgcX_aDwbz3mlHO4po-YBlufSAtn-3SH9bhg5hR1rVkkq3W5ayAqXpjwB0c/s320/capture.png" width="320" /></a></div><span style="font-family: Arial;"> </span></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><span style="font-family: arial;">Lo primero que debemos hacer es crear la librería del PIC en el Capture, ya que no viene por defecto. Lo que podemos hacer es coger como plantilla cualquier otro pic que ya exista y guiándonos por el datasheet del PIC18F4550, ir modificando cada patilla de nuestra plantilla hasta que sea idéntico al esquema real del pic. Sino es así, a la hora de llevarlo a la realidad nunca funcionará correctamente. </span></div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG3AZNaudtcH8PY1JZ_2HRksLdcZUJA4zEDAarZFOjub-3raml65BU8HK-NU2tC8F26IRMXI6iSgoykT7A-72lGyeeZnsfVZF-nYX_K-_Eabazvpl7bouzxEEo5DIPZj3qIzscZmJpNbs/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="309" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG3AZNaudtcH8PY1JZ_2HRksLdcZUJA4zEDAarZFOjub-3raml65BU8HK-NU2tC8F26IRMXI6iSgoykT7A-72lGyeeZnsfVZF-nYX_K-_Eabazvpl7bouzxEEo5DIPZj3qIzscZmJpNbs/s320/1.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">Una vez terminada nuestra plantilla, y todos nuestros pines esten igual que en el datasheet del 18F4550 ya se podrá utilizar en la librería parar realizar el proyecto, vamos avanzando y haciendo las conexiones pertinentes, en este caso con los buses que determinarán los distintos puertos. Así como también deberemos ir colocándo etiquetas a cada pista y pin que utilicemos.</span></div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3mS0Qgf1W_YArwaBPPTt0_7hBtlGo8K7pZmSrsNm6U9txH4zX94HiP87xsrCHfbH953Id2E1HRkqWKl5l0w-qR2AWgAaDlQavsjKHLwngFsnufGKbDLEzzU7jmt3jgoXSpejOTb2EVCg/s1600/Sin+t%C3%ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="116" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3mS0Qgf1W_YArwaBPPTt0_7hBtlGo8K7pZmSrsNm6U9txH4zX94HiP87xsrCHfbH953Id2E1HRkqWKl5l0w-qR2AWgAaDlQavsjKHLwngFsnufGKbDLEzzU7jmt3jgoXSpejOTb2EVCg/s320/Sin+t%C3%ADtulo.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3NTL3sxlMrD3CnS0EhPVLARNxeRhUVRvyUa74q4r2arJE-rEMprxIDGOWDVMpO-W5E5yvmMJ3CZtTdQJ13Q9GaiyjUFhTksYUKBunzTrb1Ix8itvVhQWrPH90D4KqdVYpQWP4r6ITYPM/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div><div align="left" class="separator" style="clear: both; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">Una vez esté todo etiquetado, es decir, las conexiones hechas empezaremos a diseñar los distintos bloques que contendrá nuestro proyecto. </span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">Lo primero que vamos a hacer va a ser el RESET y el OSCILADOR EXTERNO. El reset símplemente será un pulsador para poder realizar un reset manual al PIC cuando lo necesitemos. El oscilador externo contiene un cristal de 20MHz, que es para determinar la frecuancia a la que trabajará el pic (su reloj).</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEE5hBcOhtNDx4yxJ2wfteYCcsKZkfy17yKURUP4zxsUmKlq640dKHT8-6YuZ03VGKMwsl01MaWpkg941pJtb27zxQrrx4DLAI2aWmTQd2J_TH_wIgHcqFvclmXJ2VGkfUUhDTBOLb2ok/s1600/Sin+t%C3%ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEE5hBcOhtNDx4yxJ2wfteYCcsKZkfy17yKURUP4zxsUmKlq640dKHT8-6YuZ03VGKMwsl01MaWpkg941pJtb27zxQrrx4DLAI2aWmTQd2J_TH_wIgHcqFvclmXJ2VGkfUUhDTBOLb2ok/s320/Sin+t%C3%ADtulo.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><br />
<div style="text-align: justify;"><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">Ahora vamos a poner un CONECTOR RIBBON que es un bloque de ampliación por si quisieramos conectar algún periferico externo mas adelante.</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM6qdHIGi8OerFWN6qJIV-unuFiwwaHm6sC4UYp0ZV_unqS851m8L4qhSIxrpYI0d9LkjaTKYLHbLKR3HKrO7D6DhyQGGkJ4oIRz1u0a0hEesfxbmOBKnUcg6SqlLzWig_qNr1wC3910c/s1600/Sin+t%C3%ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="177" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM6qdHIGi8OerFWN6qJIV-unuFiwwaHm6sC4UYp0ZV_unqS851m8L4qhSIxrpYI0d9LkjaTKYLHbLKR3HKrO7D6DhyQGGkJ4oIRz1u0a0hEesfxbmOBKnUcg6SqlLzWig_qNr1wC3910c/s320/Sin+t%C3%ADtulo.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0zriUTBNEaCFunOooLCsVS1W50c5qsEKes1WW2Au5NmurFZ-MFf49uVjLghzYVzlogs6MCwPJ7Ek2ZX8JrRmJ_LYr6gGjhSVtNO1y0PTOyRFDp6eNODaPBVzvZ4_-acNAggX_FsLVTco/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghFKPVz48Gd5CdMgGisBmJJNAbs-4Sn89C1fXKuoi-L5Ms4lPtrbJRYSZQ-Zi80yywiOwSWJ6DMszr3nCNdDNVMX-LtOJgWXQ4P7uw54pd_wL2wTAfLHKgexG3iqMpzCiYkC3a6wKXM3k/s1600/mdfs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div><div class="separator" style="clear: both; text-align: left;"><br />
</div></div><div style="text-align: justify;"><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">El siguiente bloque consistirá en las interrupciones. Habrá dos, una externa y la RB4 con un pulsador cada una para ponerlas a cero.</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz9TUn4kiOutxpfigNDTKFaMIE1fSBNMi8f5KnaAAia2j_aN_NkJ5HrlI8iRO_Y83IANPyBVh5jp5Fn-GEPlkNJLdXr4J65KwDAkTvu3iqIQof3l1ihigOTUeDqnOil6fHLb5_D7xIzzM/s1600/int.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="126" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz9TUn4kiOutxpfigNDTKFaMIE1fSBNMi8f5KnaAAia2j_aN_NkJ5HrlI8iRO_Y83IANPyBVh5jp5Fn-GEPlkNJLdXr4J65KwDAkTvu3iqIQof3l1ihigOTUeDqnOil6fHLb5_D7xIzzM/s320/int.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;"><br />
</div></div><div style="text-align: justify;"><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">El siguiente bloque contiene un conector DB9, el cual permitirá la conexión del PIC con el PC mediante una conexión RS-232.</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRTpfVcUDXLnOEAEBOHCrVgOvU45ZPjpFM7mLukpYPpQnNFrjphgzMFC5AhrvlG7mtqarxhb6hcF4JDgRuHwewN4zzeYQoC795j_56Ax2NibOP1IYmU4ARkqrwW73tVer3HZ6JqAOxC-Q/s1600/Sin+t%C3%ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="206" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRTpfVcUDXLnOEAEBOHCrVgOvU45ZPjpFM7mLukpYPpQnNFrjphgzMFC5AhrvlG7mtqarxhb6hcF4JDgRuHwewN4zzeYQoC795j_56Ax2NibOP1IYmU4ARkqrwW73tVer3HZ6JqAOxC-Q/s320/Sin+t%C3%ADtulo.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHmxPmqOgywLFL6X2eYToSfJkoI7Y3pjcPoFzlZN2pmOOFgnfSm3u6E2LNH-TzpKEWsAfxVjbFB8MO4Uh5cQvOxaqlVVRYLzsy1kT8WDciAb94horcCrl1DhXPANpo_-ytWqpnoZII1s/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXop8tpI8CrPNMZXA30NSngmMAB6k7skbN5rCH4UVhBr39ZrSf8yKVxBKUfPJVaJnjT7iT5sKw5wG460Eo3F74gg-aldnii5L1aR6hwzCuR0ok3QdWihodtORoz8hGOEwx9nh5ksQmBAU/s1600/db9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div><div class="separator" style="clear: both; text-align: left;"><br />
</div></div><div style="text-align: justify;"><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">Ahora introduciremos un Display LCD gráfico y otro Display común de 7 segmentos para coformar el bloque de la visualización.</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsHnbBOVDienpjks0k2NmV5BmOe0skUCeome3qB1Aa9VaxRFkLyuGVmSp2oQkUWLAGW88oSWuU1OoumA0jnYv1UG3RLmCJTwZYh-Z-T-uENTpKi65tGv6EgnbE_IwIuS9Jd6D04sNJqcc/s1600/lcd.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="169" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsHnbBOVDienpjks0k2NmV5BmOe0skUCeome3qB1Aa9VaxRFkLyuGVmSp2oQkUWLAGW88oSWuU1OoumA0jnYv1UG3RLmCJTwZYh-Z-T-uENTpKi65tGv6EgnbE_IwIuS9Jd6D04sNJqcc/s320/lcd.png" width="320" /> </a></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><br />
</div><span style="font-family: Arial,Helvetica,sans-serif;">Otro de los bloques que hay es un ICD2 para poder realizar una comunicación en lenguaje Assembler o C con el Mplab. Así podremos programar los distintos integrados que dispondrá nuestra placa.</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij3oiR_-9GkTNe9hToDDDsSKqVL6DAAdgEMS5r3AsNxBlttFmUQSXolnmUKgrW91AVqk0sxeFHLjhWVqXEJGRV-J73-1-_OkeutwGGd0Phec52Z70q9qM-RRfNgEA1AmrDkSJjpvapiOg/s1600/Sin+t%C3%ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="183" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij3oiR_-9GkTNe9hToDDDsSKqVL6DAAdgEMS5r3AsNxBlttFmUQSXolnmUKgrW91AVqk0sxeFHLjhWVqXEJGRV-J73-1-_OkeutwGGd0Phec52Z70q9qM-RRfNgEA1AmrDkSJjpvapiOg/s320/Sin+t%C3%ADtulo.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPaGPlsdQQzyfTsXYT4zk96dy_MICncm52BfqJxf_R_F0_1Ogh5cJ86oIw1Z99E0YUhFimM3xe9yvyuD9ji0DyNQA_dRheMyvP2QqAQmI_OXjguaalac1pXb_IRFNetpreia0WpeBFzlU/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Seguimos ampliando nuestro futuro entrenador y llega la hora de introducir un teclado matricial, en este caso realizado con pulsadores ya que el coste es mucho mas ajustado que si utilizáramos un teclado matricial ya construido.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg25CIrhFhLh3m5hdpdhW4kFp2IBSLcY82r7u4D0RsETmd5iSSiiBQrGzfqbNmE4cbj3ln-IKI4gC9FLEga6k-if9XrBawsDn6cZgWU8aUZ0wchzypjIS_sHVigOwd_w0tq8Efhilzr4Ow/s1600/Sin+t%C3%ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="154" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg25CIrhFhLh3m5hdpdhW4kFp2IBSLcY82r7u4D0RsETmd5iSSiiBQrGzfqbNmE4cbj3ln-IKI4gC9FLEga6k-if9XrBawsDn6cZgWU8aUZ0wchzypjIS_sHVigOwd_w0tq8Efhilzr4Ow/s320/Sin+t%C3%ADtulo.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUTKXUlG7y-ExonAbUD8a_GRPJyfU4r6jYcs88M5wGnYd1CxBcHEM0g-9jowW1xtOqdnHOse2wb3q3NpdXhukvWukXNP20C3dv929JsWjzRlEPhegYIVv_o8VpCK2nHdKYz4SQBOTRuWU/s1600/Sin+t%C3%ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Ahora vamos a diseñar puerto serie SPI. </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Aquí disponemos de varios bloques realizados con distintos integrados de los que habrá que detenerse en estudiar sus datasheet para comprender su funcionamiento y características: </span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Un conversor digital - analógico (DAC) realizado con un <a href="http://ww1.microchip.com/downloads/en/DeviceDoc/22249A.pdf">MCP4822</a>. </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Un serial EEPROM realizado con un <a href="http://ww1.microchip.com/downloads/en/DeviceDoc/21833D.pdf">25LC020</a>.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Un sensor de temperatura construido con un <a href="http://ww1.microchip.com/downloads/en/DeviceDoc/20092a.pdf">TC77</a>.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Un conversor ADC construido con un <a href="http://ww1.microchip.com/downloads/en/devicedoc/21298c.pdf">MCP3204</a>.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Un Amplificador de ganancia programable (PGA) con un <a href="http://ww1.microchip.com/downloads/en/DeviceDoc/21908a.pdf">MCP6S92</a> y finalmente </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Un potenciómetro de 8 bit realzado con un <a href="http://ww1.microchip.com/downloads/en/devicedoc/11195c.pdf">MCP41010</a>.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUTKXUlG7y-ExonAbUD8a_GRPJyfU4r6jYcs88M5wGnYd1CxBcHEM0g-9jowW1xtOqdnHOse2wb3q3NpdXhukvWukXNP20C3dv929JsWjzRlEPhegYIVv_o8VpCK2nHdKYz4SQBOTRuWU/s1600/Sin+t%C3%ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilm06dc0q9MM_A5o9_6NN8Sz-lT1-PrSJgjmlnQU4UP81mqzhQ3qp6OIcz427GNOHFcqQFKFb5kQzxT-oYUSFtefb_gNlrpNNroW1GDuiKaZ0mXYLaLVDiZT1XRAuA_rVWBtXijpZbc1Y/s1600/Sin+t%C3%ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="223" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilm06dc0q9MM_A5o9_6NN8Sz-lT1-PrSJgjmlnQU4UP81mqzhQ3qp6OIcz427GNOHFcqQFKFb5kQzxT-oYUSFtefb_gNlrpNNroW1GDuiKaZ0mXYLaLVDiZT1XRAuA_rVWBtXijpZbc1Y/s320/Sin+t%C3%ADtulo.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfdWqWQnEKnKKafm26G0Hm-xFJM6ErLaxLMnV8iaRNzRR6Ha7PGNh8xEjrVPgor1J9TsGq6VJ8MpkJg1BATwRwc3j6QiFWqQwJpbtNTuIhleqKX4m0I9c5nrWWec1y1ivNoJbyAotOc4A/s1600/Sin+t%C3%ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div><br />
<span style="font-family: Arial,Helvetica,sans-serif;">También vamos a introducir un potenciómetro como el de la imagen</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLyjS5UikLHTotqdIVQTzZYijNh8HA2jzRIxF_MjE0W_y74cSJhyHbMqyceH0FMwfVFDrTSFPPzQS4cm7reWcSUDery6TA1QlRFTj7uStP4PDAAfibdlgdatg7a7k9wzkx-EVw6fLsq8Q/s1600/Sin+t%C3%ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="247" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLyjS5UikLHTotqdIVQTzZYijNh8HA2jzRIxF_MjE0W_y74cSJhyHbMqyceH0FMwfVFDrTSFPPzQS4cm7reWcSUDery6TA1QlRFTj7uStP4PDAAfibdlgdatg7a7k9wzkx-EVw6fLsq8Q/s320/Sin+t%C3%ADtulo.png" width="320" /></a></div><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Y también una fuente analógica ATX (como las que usan los ordenadores) con tensiones de +12V, -12V, +5V, -5V y +3V</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfKDTxfUrl8MXZYSqhesGokJG-Hxq02KriF2P3zLUTmgzY0QIA-Ut1J9w4PGXkVQhv0bS7llKvBgP8rcg1ARJfyftk84ESU6rUK0dOMFQO4UCov5rz2VtDwqxFzmVq1xQ4Xbe2S_dOfcg/s1600/Sin+t%C3%ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="264" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfKDTxfUrl8MXZYSqhesGokJG-Hxq02KriF2P3zLUTmgzY0QIA-Ut1J9w4PGXkVQhv0bS7llKvBgP8rcg1ARJfyftk84ESU6rUK0dOMFQO4UCov5rz2VtDwqxFzmVq1xQ4Xbe2S_dOfcg/s320/Sin+t%C3%ADtulo.png" width="320" /></a></div><br />
<br />
<div style="text-align: justify;"><span style="font-family: Arial,Helvetica,sans-serif;">Una vez finalizados todos los bloques hay que unirlos y conexionarlos entre sí, ya que hasta ahora cada bloque que hemos hecho lo hemos realizado por separado. </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEaJzyI_fJor1kHTNKEWf8Q6-c4Gk9siuxBSvcS3mmkmhVp0HQDNdi7icJ190bQvlpDrDc4OqZWFRhoWpyfXx-wfbDFJ6Tb9Y9TadxGV9_bI6Qi-wh2L5rrlp8fYmQtNLHvENg_kwU41w/s1600/Sin+t%C3%ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="210" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEaJzyI_fJor1kHTNKEWf8Q6-c4Gk9siuxBSvcS3mmkmhVp0HQDNdi7icJ190bQvlpDrDc4OqZWFRhoWpyfXx-wfbDFJ6Tb9Y9TadxGV9_bI6Qi-wh2L5rrlp8fYmQtNLHvENg_kwU41w/s320/Sin+t%C3%ADtulo.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSd5G5amfCRsHrcD6qALfk6bbxZs-fwIYZl7VYSFlXbsAMJzAN2datzLyIdHminBHS9t8L7obT1KAmg_cvk4UGL_mJGwET9MonxHB9-abfalbsZOP41Vn7HI8RODKXVfsONFu4zuC0dB4/s1600/Sin+t%C3%ADtulo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div><span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;"></span></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">Cuando hayamos realizado todas las conexiones entre los bloques que contendrá la placa nos queda por comprobar los posibles errores que existan. Para ello nos vamos a DRC para que nos muestre el log con todos los errores y warnings existentes</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP4fa7PV456GkpYj-RMIDnXrsPsi8Tn_MeiA5OE-n5aEXgYKJqft2xb_DgWDbXdu8PLXcMMQBkZ3NUpBiDWFGMhahlSrG4IhP79_yo8PxvKB9LQ8agLqrKMF66pmVs34_AEdU41LyrzSQ/s1600/drc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="260" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP4fa7PV456GkpYj-RMIDnXrsPsi8Tn_MeiA5OE-n5aEXgYKJqft2xb_DgWDbXdu8PLXcMMQBkZ3NUpBiDWFGMhahlSrG4IhP79_yo8PxvKB9LQ8agLqrKMF66pmVs34_AEdU41LyrzSQ/s320/drc.png" width="320" /></a></div><br />
<div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;"></span></div><br />
<br />
<div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;">Como veis en la imagen tengo bastantes warning pero no hace falta eliminarlos todos, solo los que nos impidan poder llevar la placa a la realidad.</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span></div><br />
<span style="font-family: arial;"><span style="font-family: Arial,Helvetica,sans-serif;">Aquí terminaría nuestro proyecto en Orcad Capture.</span></span><br />
<br />
<span style="font-family: Arial;">Para seguir el proceso en Layout: <a href="http://electronicalavin.blogspot.com/2010/10/tarjeta-de-circuito-impreso-con.html">AQUÍ</a></span>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com0tag:blogger.com,1999:blog-2137256650867000926.post-53870283301872001132010-09-26T17:17:00.005+02:002011-03-31T09:20:27.958+02:00Networks<span style="font-family: Arial,Helvetica,sans-serif;">In the following diagrams I show the configuration of the following networks</span><span class="" id="result_box" lang="en"><span class="hps" title="Haz clic para obtener traducciones alternativas"></span></span><span style="font-family: Arial,Helvetica,sans-serif;">: SDIG and SMEL.</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF8Yqhkc7d8e_JSvnFs5I-LSk27tms3N0NmHcClMJ6dO1DFEwFTaMYFb9SmqkHue4RrMAC7SAat7k98Mrma_Rj6BqTJ8j8DcUmfq6HBYp6nahmT5bDPIokfyH9giQKfuAgwM_Q7H__U-o/s1600/sdig.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="227" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF8Yqhkc7d8e_JSvnFs5I-LSk27tms3N0NmHcClMJ6dO1DFEwFTaMYFb9SmqkHue4RrMAC7SAat7k98Mrma_Rj6BqTJ8j8DcUmfq6HBYp6nahmT5bDPIokfyH9giQKfuAgwM_Q7H__U-o/s320/sdig.png" width="320" /> </a></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPnhbh0HRgO2iBNtJTEjqQ2pysYwBMoAQZOysNuQ5MBcgK9YwSQ5pUJ7hz3uicSv_3u4JN589hi7hEBpq3MDQzLsxxkRR5a1DRtlQgAfKPFVr1lKpXFTza5IvXrYinFInxGAsvHQcqOKA/s1600/smel.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPnhbh0HRgO2iBNtJTEjqQ2pysYwBMoAQZOysNuQ5MBcgK9YwSQ5pUJ7hz3uicSv_3u4JN589hi7hEBpq3MDQzLsxxkRR5a1DRtlQgAfKPFVr1lKpXFTza5IvXrYinFInxGAsvHQcqOKA/s320/smel.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="http://www.adrive.com/public/f130ee5cd719b543ed22830a9f3f026eb326392ed2b0ee6f6ee65ef921589880.html"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKKROWK_nDTBF8tMTcrGPxzQInwJf5pKRyIMzMciKOEREjJj752ZHouq8XhTyy_Qtj5yWnZ0k43VIGZ01llnmO2qqVkU2S9TqXb21OnwRryCI_WFUSrbPlHy22oagCHdOr0-qjfKwh4hM/s1600/download_icon.jpg" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3w2SL9w-solKwL3UxEBE2L8dQ0cXrIiyA939MbtXDY_yJhw7GPH4Z0mhqHfdtL54s5mZJrAM-5o8vlyXNoMlDDWYpudgPfWMvv9ciLNwvFdi7d9KwLPAYqvTHoU-WdP-6m9-SB9vYEuo/s1600/download-button.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div><a href="http://www.adrive.com/public/3e8449a496f84907f2038dc9b481eb9299ae5212fa5e3b766a5ad7922044ca6e.html"><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span></a>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com0tag:blogger.com,1999:blog-2137256650867000926.post-10035301092970004082010-09-21T19:01:00.006+02:002010-09-26T11:19:03.003+02:00Trucos para Windows 7<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMRknSrEoDDwDeXnasWrvMqdrAIBpZw_5VErozBhmeiM3ego9xDY5N_okGhxa3xmIri4xfTXQsYxrCt9_Sivp3kswciutuugxWyS3w-yiN3rP7JZmb9kh0fd-nzony8pBmfJh7ilhlCPU/s1600/limitar-el-ancho-de-banda2.gif"><img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 265px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMRknSrEoDDwDeXnasWrvMqdrAIBpZw_5VErozBhmeiM3ego9xDY5N_okGhxa3xmIri4xfTXQsYxrCt9_Sivp3kswciutuugxWyS3w-yiN3rP7JZmb9kh0fd-nzony8pBmfJh7ilhlCPU/s320/limitar-el-ancho-de-banda2.gif" alt="" id="BLOGGER_PHOTO_ID_5519426675408060738" border="0" /></a><br /><span style="font-family:arial;"><span style="font-weight: bold;">1. Desactivar el ancho de banda que reserva Windows</span><br /><br />Para ello vamos a inicio y escribimos gpedit.msc<br />se nos abrirá una ventana donde haremos click en Configuración del equipo. Repetimos los siguientes pasos: Plantillas administrativas, Red, Programador de paquetes QoS.<br />Vamos a propiedades de Limitar ancho de banda reservado, ahora veremos que aparece como deshabilitado. Sin embargo, de forma predeterminada el Programador de Paquetes limita el sistema al 20% del ancho de banda de una conexión.<br />Según esto, lo que hacemos es habilitarlo y establecer un % bajo (1% o 5%).</span><br /><br /><br /><span style="font-weight: bold;font-family:arial;" >2. Descargar de la memoria principal las DLL´S no utilizada</span><span style="font-family:arial;"><span style="font-weight: bold;">s</span><br /><br />Todas las dll´s que se quedan en memoria cuando se cierra un programa son dll´s que ya han cumplido su función y ya no sirven. Ocupan memoria y reducen la velocidad. Siguiendo estos pasos conseguiremos que Windows las borre automáticamente.<br />Cadena:<br /><br /> HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer<br /><br />En el panel de la derecha, hacemos click con el botón derecho. Seleccionamos Nuevo, Valor alfanumérico. Asignamos el siguiente nombre: AlwasysUnloadDL y pulsamos enter. Hacemos doble click sobre él y en la ventana que aparece tecleamos 1, aceptamos y reiniciamos.</span><strong></strong><br /><br /><br /><span style="font-weight: bold;font-family:arial;" >3. Elimina las fuentes que no utilizas</span><span style="font-weight: bold;"></span><span style="font-family:arial;"><span style="font-weight: bold;">.</span><br /><br />Las fuentes (tipos de letra) utilizan algo de recursos del sistema. Por eso mismo si queremos que Windows tabaje más rápido podemos eliminar las fuentes que no necesitemos:<br /></span><ul><li><span style="font-family:arial;">Vamos a Panel de Control y buscamos la carpeta Fonts</span></li><li><span style="font-family:arial;">Movemos las fuentes que no utilizamos a alguna carpeta de respaldo</span></li><li><span style="font-family:arial;">Únicamente dejamos las fuentes necesarias y listo.</span><br /></li></ul><br /><span style="font-weight: bold;">4</span><span style="font-family:arial;"><span style="font-weight: bold;">.Deshabilita Aero en Windows</span><br /><br /></span><span style="font-family:arial;">Windows utiliza una función gráfica llamada Aero, una serie de características que consumen muchos recursos.<br /><br /></span><ul><li><span style="font-family:arial;">Hacemos click derecho en cualquier parte del escritorio y seleccionamos Personalizar</span></li><li><span style="font-family:arial;">En la pestaña color de ventana desactivamos la opción habilitar transparencias.<br /></span></li></ul><span style="font-family:arial;"></span>Diego Lavínhttp://www.blogger.com/profile/15702227015701329168noreply@blogger.com0