martes, 12 de agosto de 2008

PICKit2 en Kubuntu Hardy

Requeriremos los siguientes programas:
1.- pk2cmd (http://home.pacbell.net/theposts/picmicro/pk2cmd-0.9.tar.gz)
2.- Kpk2cmd – GUI para pk2cmd (http://www.cannasoftware.com/downloads/kpk2cmd-Ubuntu-1.0.2.tar.gz)

Abrimos una terminal, en la cual navegaremos al directorio donde descargamos los programas y descomprimimos el archivo pk2cmd-0.9.tar.gz

~$ cd Desktop/PicKit2/
~/Desktop/PicKit2$ tar -xvzf pk2cmd-0.9.tar.gz

Se creará una carpeta llamada pk2cmd-0.9 a la cual entraremos y ejecutaremos make linux. Si no hubo errores entonces procederemos a ejecutar sudo make install



Figura 1. Terminal en el directorio ~/Desktop/PicKit2/pk2cmd-0.9


Figura 2. Ejecutando sudo make install

Enseguida regresamos al directorio anterior y descomprimimos kpk2cmd-Ubuntu-1.0.2.tar.gz

~/Desktop/PicKit2$ tar -xvzf kpk2cmd-Ubuntu-1.0.2.tar.gz

Para compilar este programa necesitaremos instalar los siguientes paquetes:

sudo apt-get install qt3-dev-tools
sudo apt-get install libqt3-headers libqt3-mt-dev qt3-qtconfig libqt3-compat-headers
sudo apt-get install kdebase-dev kde-devel

Terminada la instalación nos movemos al directorio kpk2cmd-1.0.2/ y ejecutamos

~/Desktop/PicKit2/kpk2cmd-1.0.2 $ make

Al finalizar de compilar se habrá creado dentro de la carpeta bin el ejecutable kpk2cmd el cual copiaremos al directorio /usr/bin

~/Desktop/PicKit2/kpk2cmd-1.0.2 $ sudo cp bin/kpk2cmd /usr/bin

Enseguida conectaremos el PICKit2 al PC. Si ejecutamos lsusb veremos a su salida algo parecido a lo que muestra la figura 3.


Figura 3. lusb nos muestra los dispositivos usb conectados actualmente.

En la misma termina escribimos el comando kpk2cmd y enseguida de presionar la tecla ENTER nos aparecera un GUI como el que se ve en la figura 4. No tiene auto detección por lo que tenemos que seleccionar el microcontrolador en (1).


Figura 4. kpk2cmd

Al presionar “Program Chip” (2) nos aparecerá un dialogo donde elegiremos nuestro .HEX (figura 5). En el caso que queramos leer el contenido del PIC (3), nos preguntará donde queremos guardarlo para su posterior lectura(figura 6)


Figura 5. Dialogo para elegir el programa para grabar en el PIC.


Figura 6. Dialogo para elegir la localización para guardar el HEX.



Figura 7. Contenido del archivo lectura.hex.



Figura 8. Por si no nos la creemos que es el contenido del PIC12F683.

viernes, 8 de agosto de 2008

Reparando una Tarjeta de Red PCMCIA

Los materiales necesarios para realizar esta operación son:
- Soldadura
- Cautín
- Pasta para soldar
- Multímetro
- Juego de desarmadores para relojero
- Tarjeta PCMCIA
- Y no tener pasta para comprar una nueva (sobre todo esta última)

Primero procederemos a abrir nuestra tarjeta, usando los desarmadores, de tal forma que dejemos la placa al descubierto, tal y como se muestra en la siguiente figura.

Tarjeta Desarmada
Aprovechando y cambiandole los leds

Ya que la tenemos despedazada procederemos a verificar cual puede ser el posible problema. El problema detectado en esta tarjeta es que todos los pines de RJ45 estaba desoldados de la placa.

Aquí se muestra cuales son los pines desoldados

Ya identificado el problema procedemos con cautela y sin miedo a meter el cautín. Como los pines de esta tarjeta están soldados de manera superficial, es bueno suponer que queda algo de soldadura reusable en las pistas, que por supuesto no alcanzamos a ver porque están un poco metidas.

Con un desarmador cogemos un poco de pasta para soldar y embarramos todos los pines.

Ya embarrados y con nuestro cautín bien caliente lo pasamos por todos y cada uno de los pines para calentarlos y provocar que la soldadura de la pista agarre de nuevo la patita.

Ya que le dimos la pasada, agarramos el multímetro para verificar la continuidad, en caso de que no hayan quedado soldados el multímetro mostrara circuito abierto.


Multímetro: Seleccionamos la opción para comprobar diodos y continuidad. Si al colocar las puntas de prueba entre dos puntos escuchamos un pitido entonces quiere decir que hay continuidad. Útil para verificar que los pines estén soldados.

En el caso que hallan quedado pines sin soldar, colocaremos un poco de soldadura (con un poco me refiero nada más a la puntita) en el cautín y se lo pasamos por los pines que no quedaron soldados. Verificamos de nuevo con el multímetro.


En el caso que queden sin soldar repetimos el paso anterior, de lo contrario ensamblamos de nuevo la tarjeta, y procedemos a probar.

Colocamos la tarjeta en posición y le enchufamos el cable, encendemos la laptop y procedemos a rezar.

Máquina de pruebas (mejor dicho víctima)


Si nuestros rezos fueron escuchados veremos que nuestra laptop de nuevo está en línea y dispuesta a descargarnos cuanta cosa se nos ocurra (Ver figura siguiente).


Hago un ping para corroborar que no estoy soñando

viernes, 2 de mayo de 2008

Termómetro

Ahora en aarmagnac.no-ip.org:1540 tengo un termometro realizado con un PIC 12f683 y un LM35 conectado al PC por medio del puerto serie. Cada 5 minutos se actualiza.

El programa del PIC lo hice para probar la programación en C de estos microcontroladores ya que siempre los había programado en ensamblador.

El programa de la PC está realizado en C++ el cual es ejecutado por medio del cron cada 5 minutos, generandome la página web que se puede ver en la página.

viernes, 1 de febrero de 2008

GHDL con las librerías UNISIM de Xilinx

¿Porqué usar ghdl?. En primer lugar surgió de la necesidad de poder realizar simulaciones de mi código de VHDL en linux debido a que el simulador del ISEWebPACK 9.1 y 9.2 de Xilinx no se digna en trabajar, siempre me manda el error 607 el cual si no es mi culpa, como lo puedo demostrar, pues fácilmente, abrí el ISE e inicié un nuevo proyecto pero en esta ocasión que fueran esquemáticos y no vhdl, hice una "and" y lo traté de simular y me arrojó el mismo error. Conclusión no es error mío es de la herramienta, ellos mismos está diciendo que no saben como construir una "and", jejejeje.

En segundo lugar, tenía que utilizar las librerías unisim:

Library UNISIM;
use UNISIM.vcomponents.all;

Voy a suponer que tenemos instalado en nuestro sistema alguna de las dos versiones anteriores del ISEWebPACK.

Desde la consola primero nos creamos una carpeta para ubicar nuestro código vhdl y dentro de ella crearemos una carpeta llamada unisim.

$ mkdir vhdl
$ mkdir vhdl/unisim

Ahora copiamos el contenido de la carpeta vhdl/src/unisims en el directorio del ISEWebPack, que en mi caso se encuentra en /opt/Xilinx92i/vhdl/src/unisims/, al directorio unisim que acabamos de crear.

$ cp /opt/Xilinx92i/vhdl/src/unisims/* vhdl/unisim/

Ahora nos movemos a la carpeta vhdl/unisim/

$ cd vhdl/unism

y compilamos estas librerías con

~/vhdl/unisim$ ghdl -a --work=unisim --ieee=synopsys -fexplicit unisim_VCOMP.vhd
~/vhdl/unisim$ ghdl -a --work=unisim --ieee=synopsys -fexplicit unisim_SMODEL.vhd
~/vhdl/unisim$ ghdl -a --work=unisim --ieee=synopsys -fexplicit unisim_VPKG.vhd

~/vhdl/unisim$ ghdl -a --work=unisim --ieee=synopsys -fexplicit --warn-no-vital-generic unisim_VITAL.vhd
unisim_VITAL.vhd:150533:18:warning: universal integer bound must be numeric literal or attribute
unisim_VITAL.vhd:176564:57: variable "write_a_write_b" is not visible here
unisim_VITAL.vhd:176565:57: variable "read_a_write_b" is not visible here
unisim_VITAL.vhd:176566:57: variable "write_a_read_b" is not visible here
unisim_VITAL.vhd:176567:57: variable "write_b_write_a" is not visible here
unisim_VITAL.vhd:176568:57: variable "read_b_write_a" is not visible here
unisim_VITAL.vhd:176569:57: variable "write_b_read_a" is not visible here
/usr/lib/ghdl/bin/ghdl: compilation error
Observamos que nos manda un error, pero no es de preocuparse es solo cuestion de abrir el archivo unisim_VITAL.vhd y comentar las líneas que nos indica (176564,176565,176566,176567,176568,176569).
Las líneas en cuestion son:
variable Write_A_Write_B : memory_collision_type := Write_A_Write_B;
variable Read_A_Write_B : memory_collision_type := Read_A_Write_B;
variable Write_A_Read_B : memory_collision_type := Write_A_Read_B;
variable Write_B_Write_A : memory_collision_type := Write_B_Write_A;
variable Read_B_Write_A : memory_collision_type := Read_B_Write_A;
variable Write_B_Read_A : memory_collision_type := Write_B_Read_A;

En este punto si volvieramos a tratar de compilar nos arrojaría el mismo error sólo que en líneas distintas.

unisim_VITAL.vhd:188630:57: variable "write_a_write_b" is not visible here
unisim_VITAL.vhd:188631:57: variable "read_a_write_b" is not visible here
unisim_VITAL.vhd:188632:57: variable "write_a_read_b" is not visible here
unisim_VITAL.vhd:188633:57: variable "write_b_write_a" is not visible here
unisim_VITAL.vhd:188634:57: variable "read_b_write_a" is not visible here
unisim_VITAL.vhd:188635:57: variable "write_b_read_a" is not visible here

Por lo tanto sería buena idea comentarlas también, ya sea que busquemos en el archivo por "variable Write_A_Write_B : memory_collision_type := Write_A_Write_B;" , comentar esta línea y las subsecuentes o movernos hasta la línea indicada que sería la 188630 y comentarlas.

Hecho lo anterior volvemos a compilar con:
ghdl -a --work=unisim --ieee=synopsys -fexplicit --warn-no-vital-generic unisim_VITAL.vhd

Ya compilado nos retachamos a la carpeta vhdl ($ cd ..) para empezar a realizar nuestras pruebas, en donde compilaremos nuestros proyectos con:

ghdl -a --ieee=synopsys -Punisim -fexplicit

miércoles, 30 de enero de 2008

La Cigüeña: Detrás del Mito.

(Estado al escribir: bloqueo mental crónico)

De casualidad no se han puesto a pensar el ¿porqué surgió la teoría de la cigüeña? y que consecuencias trajo a nuestra sociedad.

Según dicha teoría los bebes son traídos por una cigüeña. ¿Que verdad se oculta? ¿Porqué no elegir otro animal como el perro salchicha o un camello?

Para responder la segunda pregunta he consultado a un grupo de expertos, que me mostraron con datos experimentales y estadístios, que, aunque esten presentes diversas semejanzas morfológicas ,el perro salchica no es una de las especies ideales para hacer la analogía (conste que no lo puse por separado) y que el uso del nombre "perro salchicha" no por ser obvio y sugestivo representa la total realidad.

Entonces, ¿porqué no elegir un camello?. Pues todos sabemos que tiene dos jorobas, cuello largo y escupe. La razón es muy obvia: Sería imposible explicarle a un niño que fue escupido por un camello, ¿o no?, además de ser algo asqueroso y grotesco, nos bajaría la autoestima.

Por lo tanto el grupo de expertos y yo creemos que la especie elegida (La Cigüeña) fue la mejor opción por:

1.- Tiene un pico largo que termina en punta.

2.- El color.

3.- Puede cargar el peso de un bebé, lo que representa el peso de la responsabilidad.

4.- Y que por lógica siempre hay un pajaro metido en eso y revoloteando.

Pero con esta teoría surgio un problema. Se preguntarán cuál es el problema: Muchas madres solteras!

Si, si, si, como lo escucharon muchas madres solteras.

Demostración:

Tomando como cierto que Los pajaros vuelan y que existen una falta de responsabilidad generalizada (pues ni modo somos hombres que le vamos a hacer no nos gustan mucho las responsabilidades), y que hombre lo podemos substituir por el punto 1 y 4.
Sabemos que:

hombre+mujer=bebé

y

hombre+mujer=1+4+mujer=bebé

Pero bebé=responsabilidad

entonces

1+4+mujer=responsabilidad

responsabilidad=1/irresponsabilidad

responsabilidad*irresponsabilidad=1

responsabilidad*irresponsabilidad+4+mujer=responsabilidad
4+mujer=responsabilidad(1-irresponsabilidad)

Pero sabemos que si al punto 1 le quitamos la irresponsabilidad, el que posea 1 ,va a ser una persona responsable con su manejo y uso, por lo tanto:

4+mujer=responsabilidad^2;

mujer=responsabilidad^2-4,

donde responsabilidad sólo puede tomar valores positivos

El significado de la última ecucación es que la mujer es responsable al cuadrado, pero que existe la tentación negativa 4 (Pájaro metido y revoloteando), pero cuyo efecto se va minimizando cuando

resposabilidad>2

Pero que en caso de que

responsabilidad<2 la responsabilidad se ve eclipsada por la lujuria.

En el remoto caso en el que el valor de la responsabilidad tienda a 2 llegamos a un punto donde mujer va a tender a cero, siendo el punto crítico cuando responsabilidad=2.

Interpretandolo para los no iniciados, representa que de mujer no tiene nada, osea cero, pero aun así, este problema tiene una solución real, y una gran cantidad en el campo de los imaginarios, las cuales son relativas al punto de vista del observador.

Estas soluciones imaginarias esta representadas por

i*x,

donde el valor de x va a ser relativo al observador (I, You, He, She, We, You, They). Siendo

x>0 -> care
x<0> don't, doesn't care
x=0 -> Tiene dos interpretaciones: Punto de indesición o Punto de conocimiento previo, pero puede recibir distintos nombres dependiendo del observador.

Por si no se han dado cuenta: ¿Dónde quedó el hombre en la ecuación?

La respuesta es muy simple: Tomando en cuenta que los pajaros vuelan pues el hombre hizo lo suyo y voló.

Conclusión:
- El aumento en los casos de madres solteras es debido en su mayor parte a que, subliminalmente, con la teoría de la cigüeña, nuestra forma de pensar e irresponsabilidad salieron a flote. En la realización de esta teoría nunca, pero nunca, tomaron en cuenta de que las cigüeñas vuelan.
- Hubiera sido mejor la teoría del camello y de esa forma nos habrían bajado la autoestima en vez de hacernos más irresponsables.

Instalación de un winmodem pctel en ubuntu gusty

Pues a altas horas de la noche se me ocurrió probar que tal era la configuración de mi winmodem en Linux, ya que de hace tiempo me acordaba de que era un poco tortuoso, aunque al final gane experiencia y para poder instalarlo sin problemas. La primera vez que lo instalé fue en un Mandrake 8.0, y así me fuí de versión en versión hasta la 10.0 ya que después no tuve la necesidad de volverlo a instalar porque ahora contabamos con internet de banda ancha (yupi!!!!!).

Pero como a eso de la 1:30 am me pregunté si sería igual la forma de instalación o no. Me di a la tarea de buscarlo de nuevo en internet tal y como lo hacia antes (”san google”). Di rápidamente com http://linmodems.technion.ac.il/pctel-linux/welcome.html y que me bajo la última versión que tienen del driver para el kernel 2.6.22.

Descargado me di a la tarea de hacer un lspci para ver como me identificaba mi modem.

00:0d.1 Communication controller: C-Media Electronics Inc CM8738 (rev 10)

Enseguida descomprimí el driver:

$tar -xvzf pctel-0.9.7-9-rht-8.tar.gz
$cd  cd pctel-0.9.7-9-rht-8/

le doy un ls para ver que hay el el directorio:

$ ls
ChangeLog driver FAQ README setup src

Y me veo en la imperiosa necesidad de teclear

$sudo ./setup

a lo cual alegremente me responde:

checking for running kernel version...2.6.22
checking for ptserial...ptserial-2.6.c
checking for gcc...4.1.3
checking for kernel gcc version...4.1.3
searching for kernel includes...found at /lib/modules/2.6.22-14-server/build/include
checking for autoconf.h.../lib/modules/2.6.22-14-server/build/include/linux/autoconf.h
checking for asm/mach-default...yes
checking for kernel version in utsrelease.h...UTS_RELEASE is 2.6.22-14-server
checking type of tty_struct.count...int
checking for presence of udev...present (kernel version 2.6.13 or later)
detecting your modem...found. Your modem is a cm8738 type modem.

compilation done

installation done

modem activated

Demasiado bueno para ser verdad esas palabras de modem activado fueron como música para mis oidos. Me dije a mi mismo:

Yo: Mi mismo ¿lo probamos?.

Mimismo: Si pero ¿con que? ¿de casualidad te acuerdas cual era el programa que usabas para conectarte a internet por modem con el Mandrake?

Yo: Como que era el kppp.

Después procedí a instalarlo, como siempre de desperado.

$sudo apt-get install kppp

Terminando la instalación lo ejecuté.

$kppp

Y me salió una hermosa pantalla en donde se encontraba en la parte inferior un botoncito que me insistía configurar mi conexión (no se cual). Que le pico al botón y que me aparece otra con 3 pestañas, la que me interesaba era la que rezaba Modems en su etiqueta.

Entré y luego luego ubiqué el botón de Query al Modem ni tardo ni perezoso que le doy y no me arrojó ningún error. Viendo que todo iba bien me fuí al siguiente botón “Terminal” y al abrirla vi el glorioso comando ATZ y de respuesta OK.

Ahora que es lo que sigue. Pues no se tal vez, no se. No se me ocurré. Probablemente lo use para enviar fax, de contestador, o lo que sea pero menos conectarme a internet, jejejeje.

martes, 29 de enero de 2008

Pruebas con Linux

En estos días he andado probando lo que se refiere a la instalación de un servidor de páginas web en Linux y el uso de DDNS como no-ip.com o dyndns


Por lo pronto he instalado dos servidores uno en una Desktop que tiene un Intel Celeron 366 Mhz con 256 Mb en RAM y con Ubuntu 7.10 versión servidor en el cual he instalado con fines educativos y de prueba:




Foro con phpBB3 : http://aarmagnac.no-ip.org:1540/~aarmalo/foros/


Foro con phpBB2 especificamente el IntegraMOD 1.41 : http://aarmagnac.no-ip.org:1540/~aarmalo/phpBB2/


Blog con Wordpress : http://aarmagnac.no-ip.org:1540/~aarmalo/blog/



El otro servidor se encuentra instalado en una Laptop Compaq Presario 1261 con un AMD K6 233Mhz con 96 Mb en RAM en el que todavía no he puesto nada.

http://aarmagnac.homelinux.org:8080/