jueves, 10 de diciembre de 2009

Un anuncio muuuy geek!


Un anuncio muuuy geek!, originalmente cargada por Mr. Silent.

Wake up!!! Les dejo algo geek para alegrar el día!

martes, 24 de noviembre de 2009

Sugizo's phrases

No importa quien de los dos gane, por que te humillare al final del día.

lunes, 23 de noviembre de 2009

De pasadita!


Sé que he dejado de escribir en mis blogs, que los he dejado solitos en truider (Twitter) y que en el msn ya ni me recuerdan. Pero tengo muy buenos motivos para todo esto, son muy absorbentes y eso me tiene feliz. Entre lo que les puedo contar es que ayer migre de Fedora 10 a Ubuntu 9.4 para poder usar los binarios de mono, poder montar mi impresora (Ya hace falta, instalar silvermoon y AIR de Adobe (Si es que se deja).

Lo poco que vi anoche y hoy en la mañana antes de venir a la oficina es que; me ha dejado muy buen sabor de boca ya que es muuuuy amigable y no necesita tanto show (Que la verdad si extraño y deseo). Ya desbloqueare la cuenta de root (No soy muuuy fan de sudo) para administrar todo lo que será mi sistema.

Por otra parte tengo en mente hacer alguna salvajada (Raro en mi...) en cuanto a Java. Y si, necesito un cliente truider que me haga mucho más feliz y que pueda usar en la oficina sin necesidad de instalarlo. (Eso es portabilidad, señores!!!). Chrome es bueno, pero necesito usarlo para otras cosas que no sea truider. Por otro lado, creo que será muy buen reto para la comunidad y nos mantendrá ocupados entre semana.

Y bueno, también necesito monitorear a mi niño que anda de lata cada que no estoy. Eso le dale guerra a sus abuelitos para que entre a comer no es cool, así que para eso echare mano del viejo y confiable pic de la serie 16fxxx que tenemos en casa. Así que necesitaremos poner a Linux guapo, guapo? digo, guapisimo!!! para que me ponga a trabajar. Así que bajaremos GPSim y GPUtils.


Sé que también he dejado un poco descuidado flickr, pero eso si tiene un por que muy bueno. Y es que me he pasado experimentando con mi pobre cámara de 2Mp que ya grita por su jubilación. He sacado algunas fotos muy aceptables para lo que serán los ojos de Ross y Aldar. Y no solo eso, los planeo consentir para este fin de año. Esperen esa locura en flickr.

lunes, 19 de octubre de 2009

Notas sobre Java (Más teoría)


Java es un lenguaje Orientado a Objetos (POO), es decir que define a los programas en términos de 'clases de objetos' que son entidades que cambian de estado o es mejor decir, de datos. La programación orientada a objetos establece que un programa como un conjunto de estos objetos que se comunican entre ellos por medio de métodos. Esto métodos están pensados para hacer los módulos más fáciles de escribir, mantener y reutilizar.

La programación orientada a objetos establece ciertas características:

  • Abstracción.
  • Encapsulación.
  • Polimorfismo.
  • Herencia.
así que entremos al tema con mucha materia y poca saliva.

Abstracción: Cada objeto en el sistema sirve como un agente que puede realizar un trabajo, informar y cambiar su estado, y así mismo comunicarse con otros objetos sin revelar como se implementa.

Encapsulación: A esto también se le conoce como "ocultamiento de información", esto asegura que los objetos no pueden cambiar el estado interno de otros objetos.

Polimorfismo: La capacidad de una clase de comportarse como otra, asi de fácil, así de simple.

Herencia: Esta es la parte linda, es la que organiza y facilita el polimorfismo y la encapsulación, así permite la creación de objetos especializados que pueden compartir su comportamiento sin necesidad de reimplementarlo.
Estructura de una clase en Java

  1. package: Declaración del paquete.
  2. import: Uso de clases de un paquete externo.
  3. class: Definición de la clase.
Sintaxis:

package < 'ruta del paquete' >
< 'Modificador de acceso' > class < 'nombre' > {
< 'Delcaración de atributos' >
< 'Declaración de Construcctor' >
< 'Declaración de métodos' >
}
Modificador de acceso

  • Friendly: Es el acceso por default. No tiene una palabra clave asociada, por lo que se le denomina como acceso amistoso y pueden ser accesadas por clases del mismo paquete.
  • Public: Puede ser accesada por cualquier miembro del paquete o de otros paquetes.
  • Private: No puede ser accesada por otra clase, únicamente por medio de métodos publicos.
Declaración de atributos y datos primitivos



< 'Modificado de acceso' >< 'tipo' >< 'nombre' >[=< 'valor' >]

Tipo de datos primitivos

Typo Valor
  • bolean = false
  • byte = 0
  • char = '\u0000'
  • short = 0
  • int = 0
  • long = 0L
  • float = 0.0f
  • double = 0.0d
Este tipo de datos tiene una contraparte o una clase especializada llamada Wrapper.

Pero ya hablaremos de eso en otra ocasión, por ahora es momento de decir adios y nos veremos la próxima.

martes, 13 de octubre de 2009

Notas sobre Java (Teoría)

Java es uno de los lenguajes más populares para aplicaciones basadas en web y dispositivos que se comunican por red.

Historia.

En 1991 se creo un proyecto interno en Sun Microsystem denominado Green. El plan era desarrollar un lenguaje basado en C++ que en un inicio se llamo Oak, culpa de un roble que se podía ver desde la oficina de James Gosling, su creador. Pero ya existia un lenguaje con ese nombre, por lo que mas adelante se le llamo Java, cuando un grupo de generentes visitaron una cafetería local.

Java fue creado para el mercado de dispositivos electrónicos inteligentes. Por desgracia, la proyección de Sun fue errónea y este tipo de dispositivos no se desarrollaban tan rápido. Así que el proyecto corrió con la suerte de ser cancelado. En 1993 exploto la popularidad de Internet y los chicos de Sun se dieron cuenta de que Java podía agregarle Dinamismo a las estaticas paginas creadas en html vil y villano.

En 1995, Sun Microsystem dio a conocer Java dentro de una conferencia y su fuerte fue los actuales y extintos Apples dentro de las paginas de Internet y se gano el corazón del mundo de los negocios, así como aplicaciones para dispositivos móviles como los celulares y radiolocalizadores.

Java se divide en tres ediciones que son:

  • Java Standar Edition (Java SE).
  • Java Enterprise Edition (Java EE) Orientada a las aplicaciones de redes a gran escala y aplicaciones basadas en web.
  • Java Micro Edition (Java ME) Orientada al desarrollo de aplicaciones para dispositivos moviles con memoria limitada.
Entorno de desarrollo en Java

La programación en Java pasa por 5 etapas:

  • Edición
  • Compilación
  • Carga
  • Verificación
  • Ejecución
Etapa 1

En esta primer etapa, es la parte donde escribiremos el programa ayudados por un editor. Posterior mente guardaremos el archivo bajo la extención '.java'.


Por ejemplo, suelo usar los editores vi o emacs para entornos Linux, pero para el campo de guerra necesitamos poder. Para ello existen los Entornos de desarrollo integrado (IDE's).


Entre los mas populares tenemos:
Etapa 2

Para compilar un archivo .java, es necesario hacerlo con el archivo javac, que es el compilador.

Por ejemplo, supongamos que trabajamos con vi para hacer un pequeño programa y es hora de saber si podemos seguir o nos detenemos a ver errores. Desde una shell podemos hacer lo siguiente:

[Sugizo@old ~]$javac HolaMundo.java

si no detecta ningun error, nos generara un archivo '.class' a la cual llamamos 'Byte Code' que será lo que la Maquina Virtual de Java (JVM) usara para hacer las tareas que hemos escrito.

Para ejecutar este programa es tan fácil como escribirn en nuestra terminal lo siguiente:

[Sugizo@old ~]$java HolaMundo

Y veremos en terminal o por Interface grafica de usuario (GUI) el resultado.

Etapa 3

Para poder ejecutar el programa, este debe cargarse primero a memoria, de lo que se encarga el cargador de clases. el cargador también carga cualquiera de los .class de las librerías que el programa use.

Etapa 4

A medida en que se cargan las clases, existe un componente interno conocido como el verificador de Byte Code que examina las clases para asegurar que sean correctos y no violen las restricciones de seguridad.

Etapa 5

En este punto, la JVM ejecuta los Byte Code. Antes esta parte era la mas pesada ya que la Maquina virtual interpretaba bytecode por bytecode, ahora es mas eficiente gracias a algo llamado Just in time (JIT), esto hace que se interpreten a medida de que busca puntos activos del programa. Es decir, partes del codigo que se ejecutan con frecuencia.

Ahora bien, instalar Java en Windows es tan fácil como dar doble click. Pero para hacerlo desde linux, basta seguir estas instrucciones.

Besitos.

sábado, 26 de septiembre de 2009

Adios pasado. hola futuro!

Por mucho tiempo me ha perseguido la sombra del pasado y eso no me ha dejado tomar buenas decisiones, por lo que ahora borramos el pasado de tajo y comenzamos de nuevo.

¿Qué les quito a mis trolls? Les quito twitter, que pese a que era privado, ahora lo elimino para depurar mi pasado y dejar esas niñerías que tanto daño han hecho por meses, aquellos de cuando era publico..

Que les dejo a mis trolls? el gusto de no verme más y de anunciarles que: Seguire con mi vida en el punto que deje recientemente. O sea, luchando en el mundo real.

martes, 1 de septiembre de 2009

Welcome to the geek world



El uso de la tecnología nos hace la vida mas fácil y divertida.

domingo, 30 de agosto de 2009

Alexander (en memoria)

Este mes que llega esta lleno de festividades, cumpleaños y diversión para muchos, vacaciones para algunos y descanso para otros.

Para mi es el inicio del conteo anual de algo que me invade en el alma. Si bien es el primer aniversario, es algo que no me gustaría que hubiera pasado.

jueves, 20 de agosto de 2009

Programando pic's desde linux. (config.inc)

Creo que la chamba mas fácil siempre es la de configurar el pic, ponerle las entradas, salidas y activar una que otra bandera de interrupción.

Básicamente diremos lo siguiente.

  • Puerto A fue usado para el convertidor analógico digital RA0, RA1, RA2 (Valores de referencia), RA3 (Valores de referencia), RA4 y RA5.
  • Puerto B para uso de teclado por su patita RB0/INT Que genera interrupción, y por que se puede programar las patitas RB4-RB7 como interrupción por cambio de estado.
  • Puerto C, uso de Led's o cualquier otra cosa que le quieran colgar.
  • Puerto D, bus de datos para la pantalla LCD.
  • Puerto E, lineas de control para LCD.

;************************************************
;Libreria de configuración general del pic.

;***************************************************
;Configura la direccionalidad de los puertos del PIC

Init_Config
bcf STATUS,RP0
bcf STATUS,RP0
clrf PORTA

movlw b'11110000' ;Configiración del puerto B para el teclado
movwf PORTB
call Init_interrup

bsf STATUS,RP0
bcf STATUS,RP1
clrf TRISC

clrf TRISD
clrf TRISE
call Init_ADC
bcf STATUS,RP0

return

;******************************************
;Habilitando interrupciones
Init_interrup
movlw b'11111000'
movwf INTCON

return

;******************************************
;Rutina de configuración del ADC
Init_ADC
;bsf STATUS,RP0
;bcf STATUS,RP1
movlw b'10001100' ;configuramos las entradas del ADC para abrir 3 canales

movwf ADCON1 ;y tener dos valores de referencia.
bcf STATUS,RP0
movlw b'01000000'

movwf ADCON0
return

;******************************************
;Rutina de configuración del Timer1
TMR1_Config
clrf T1CON

bsf STATUS,RP0
bcf STATUS,RP1
bcf PIE1,TMR1IE ;Inhabilitando el desbodamiento del TMR1

bcf STATUS,RP0
clrf TMR1L
clrf TMR1H
bsf PIE1,TMR1IE

movlw 0x36
movwf T1CON
return

Lo basico e indispensable.

sábado, 8 de agosto de 2009

Esto es sinceridad

viernes, 7 de agosto de 2009

Me das la hora?



La verdad es que eso lo hice de rápido y pero la idea es mostrar un while en ensamblador de una forma básica. Espero les pueda servir y bueno, ya luego les pongo el método principal.


__CONFIG _LVP_OFF & _CP_OFF & _PWRTE_ON & _XT_OSC & _BODEN_OFF & _WDT_OFF

list p=pic16f877
include <p16f877.inc>

;Variables
Cont equ 0x20

Hrs equ 0x21
Min equ 0x22
Seg equ 0x23
ContadorC equ 0x24

Temp0 equ 0x25
Temp1 equ 0x26
ContadorB equ 0x27
ContadorA equ 0x28

org 0
goto Principal
org 4
retfie

org 5

Un_Min
movlw d'60'
movwf Temp0

decfsz Temp0,1 ;Este es mi while. Temp0 == 0?
goto retraso_1_seg ;No...
return ;Si!

retraso_1_seg
movlw D'6'
movwf ContadorC

retraso_1_seg_bucle
call sub_delay_1_seg

decfsz ContadorC,1 ; Aquí otro; ContadorC == 0?
goto retraso_1_seg_bucle ;No...
return ;Si!!1

sub_delay_1_seg
movlw D'217'
movwf ContadorB
movlw D'111'

movwf ContadorA

sub_delay_1_seg_bucle
decfsz ContadorA,1
goto sub_delay_1_seg_bucle

decfsz ContadorB,1
goto sub_delay_1_seg_bucle
return


Pa'que valoren.

lunes, 3 de agosto de 2009

Entrada


Entrada, originalmente cargada por Mr. Silent.

No todas las puertas están siempre cerradas, algunas siempre nos dan una luz de esperanza.

miércoles, 29 de julio de 2009

Programando pic's desde linux. (ADC)

Ayer se descubrió mientras la lluvia caía, que el error el cual trate de encontrar desde el lunes, fue simplemente el un cambio de memoria... Suele pasar y eso que ni qué... El mundo del debuggeo es muy entretenido y te deja cosas muy buenas.

Así que hoy para variar, me he puesto a darle duro a esto para poder partir en mas fragmentos y mejor documentados, por lo que la configuración quedo dividida en los una rutina mas para la configuración del ADC y una para la configuración general del PIC.


org 0
call Init
call ADC_Config
goto Principal
org 4
retfie

Y con esto tenemos un mejor panorama de la configuración del modulo de ADC del PIC. Basta señalar que Init solo configura los puertos de entrada y salida. Pero ADC_Config se limita a configurar el modulo como esta a continuación.


ADC_Config
;Cambiando al banco 1 para configuracion del ADC
bsf STATUS,RP0
bcf STATUS,RP1

;Desactivando las interrupciones
clrf INTCON
clrf PIE1
;Configurando las patitas del puerto A
movlw 0x8F

movwf ADCON1
;Cambiando de banco. Y con esta linea arreglamos el problema que teniamos con el mal funcionamiento del pic.
bcf STATUS,RP0
;Seleccionando la frecuencia de reloj para la conversión. Fosc/8

;ADCS1=0
;ADCS0=1
;ADON=1
movlw 0x41
movwf ADCON0

;Configurando el bit de estado de la conversión.
;GO=1. Iniciandoce la conversión.
bsf ADCON0,GO
return

Y con esto resolvemos el problema de sobre escritura de ADCON1. y podremos seguir. Ya les ire poniendo mas cosas para que podamos seguir experimentando.

martes, 28 de julio de 2009

Programando pic's desde linux. (código)

El viernes paso algo muy curioso, el programa no jalo ni hizo lo que tenia. Es mas, ni siquiera hizo algo. Pero como a la par también revisaba el código para el LCD, no me quedo tiempo para debuggear en MPLAB. Y siendo sinceros, no tenia ni idea de algunas partes del código.

Así que valientemente iremos a cazar leones con una varita.

Así que antes de que podamos hacer algo en cuanto al código, hay que saber que hace y por que lo hace.

Primero vamos a configurar el pic.

Código:

Init
bcf STATUS,RP0
bcf STATUS,RP1
clrf PORTA

clrf PORTB
clrf PORTC
clrf PORTE
clrf PORTD

bsf STATUS,RP0
;Desactivando las interrupciones
clrf INTCON
clrf PIE1

;Configurando las patitas del puerto A
movlw 0x8F
movwf ADCON1
;---------------------------
clrf TRISB

clrf TRISE
bsf STATUS,RP0
;Seleccionando la frecuencia de reloj para la conversión. Fosc/8
;ADCS1=0

;ADCS0=1
;ADON=1
movlw 0x41
movwf ADCON0
;Configurando el bit de estado de la conversión.

;GO=1. Iniciandoce la conversión.
bsf ADCON0,GO
bcf STATUS,RP0
return

Ahora veremos que hace la función de leer.

Leer_ADC
;Se concatena IRP con FSR para seleccionar el banco de RAM
;0=Banco 0 y 1 (00h-FFh)
bcf STATUS,IRP
movwf FSR

movf INDF,w
movwf LSB
movlw 0x1E
movwf FSR

movf INDF,w
movwf MSB
bsf ADCON0,GO
return

Noches de trabajo


Noches de trabajo, originalmente cargada por Mr. Silent.

Ese es el escritorio que uso cada noche y donde planeo las entradas que aquí publico.

Nada como el café, la música y el whisky para una noche fría.

miércoles, 22 de julio de 2009

Creando un sistema de verciones con CVS. (introducción)

El programar es algo que me entretiene mucho y que trato de compartir con ustedes desde este blog. Pero la verdad es que me pongo a hacerle cada cosa que luego de tener una versión estable y funcional, termino teniendo una cosa que no tiene ni pies ni cabeza, por lo que los errores son cosa de todos los días y que podíamos estar guardando bajo un nombre diferente cada versión estable para poder regresar a ella en caso de una catástrofe.

Pero eso es verdaderamente tedioso, normalmente no lo hacemos y cuando nos acordamos, es demasiado tarde para que podamos dar vuelta atrás.

CVS (Concurrent Versións System) es una aplicación que permite la implementación de un sistema de verciones, manteniendo el registro de todo el trabajo y los cambios a un archivo. Permitiendo a demás, que distintos desarrolladores puedan tener acceso y trabajen de forma ordenada y sincronizada.

Creando el repositorio.

En modo de super usuario (De preferente estar en la cuenta y no por medio de sudo o el comando su) desde la linea de comandos teclea:

[root@Developer]#cvs -d /home/Sugizo/Public/cvsroot init

El directorio '/home/Sugizo/Public/cvsroot' es donde nuestro repositorio de fuentes se encontrará. Yo recomiendo que crees un grupo para acceder a este repositorio, algo así como cvs, develop, o cualquier cosa que se te ocurra. Y para crear un grupo desde la línea de comandos:

groupadd [-g group_id [-o]] [-r] [-f] nombre_del_grupo

Donde -g especifica el Id del grupo que debe ser un valor único y es mayor a 500. Si decides usar -o, el valor se acignara automaticamente y no será necesario poner -g.

-r, especifica al sistema que el id debe estar por debajo de 499. Cosa que yo no recomiendo, ya que todo por debajo de 499 sin id para el sistema.

-f le indica que cree el grupo a la fuerza y que oblige al sistema a no dar error en dado caso que pueda generar uno y no crearlo.

[root@Developer]#groupadd -g 503 developers_cvs

Cambiamos el repositorio de grupo root a developers_cvs con chown

[root@Developer]#chown -r root:developers_cvs /home/Sugizo/Public/cvsroot

Y agregamos el usuario al grupo con el comando usermod, donde el parametro -G, agrega grupos al usuario (usermod [-G grupo, grupo2, ...] usr)

[root@Developer]#usermod -G developers_cvs Sugizo

O puedes editar directamente '/etc/group' donde cada linea se compone de:
'nombre del grupo':'passwd del grupo':'id del grupo':'miembros del grupo'
El password no es obligatorio, por lo que puedes dejarlo en blanco.

Por último, cambia los permisos de '/home/Sugizo/Public/cvsroot' con el comando chmod

[root@Developer]#chmod -R 750 /home/Sugizo/Public/cvsroot

Con ello, todos los que esten el el grupo podrán escribir en el repositorio y leer de el.

Mas adelante hablaremos de como manejar cvs desde la linea de comandos, eclipse y Cervisia.

Programando pic's desde linux. (código)

En este punto, aún puedo escuchar un viejo reclamo de una amiga muy querida que solía decirnos a su novio y a mi: 'Estas como medio obsesionado con la programación. Me das miedo...'

Y siguiendo esa línea y en el mismo mood, se me ha dado la idea de hacer y poner todo un programa comentado para compartirlo con la comunidad estudiantil que lo necesite.

Espero que les pueda servir de algo.
; Programa de muestra hecho para el estudio de mi enanisima!!!

;Bits de configuración.
;LVD_OFF=Programa de voltaje bajo apagado.

;CP_OFF=Protección de código
;PWRTE_ON=habilita el reset mediante power up timer
;XT_OSC=Se utiliza un cristal de cuarzo
;BODEN_OFF=desabilita el reset por caida de tención.
;WDT_OFF= DESABILITA EL PERRO GUARDIAN.

__CONFIG _LVP_OFF & _CP_OFF & _PWRTE_ON & _XT_OSC & _BODEN_OFF & _WDT_OFF

;Generador de archivos list y llamada a librerias.

list p=pic16f877
;RADIX HEX
include<p16f877.inc>

;Declaración de variables
;b'00000111' Este valor pasa al registro OPTION_REG para configurar el divisor de frecuencia.
Prescaler equ d'256'
TMR_50ms equ d'56'

Cont equ 0x20
Cont1 equ 0x21
Temp equ 0x22


;indicadores del pic16f877

org 0x00
;Llamando a la rutina de configuración del pic.
call Init

;Llamando a la rutina principal del programa.
goto Principal
org 4
retfie
org 5

;rutinas

Init
;Cambiando al banco0.
bcf STATUS,RP0
bcf STATUS,RP1

;limpiando los puertos
clrf PORTA
clrf PORTB
clrf PORTC

clrf PORTE
;Cambiando al banco1
bsf STATUS,RP0
;Cambiando puertos de entrada a salida

;clrf TRISA
clrf TRISB
clrf TRISC
clrf TRISD

clrf TRISE
;Cambiando al banco0
bcf STATUS,RP0
return

confPrescaler
bcf STATUS,RP1
bcf STATUS,RP0
movlw b'00000001'

movwf OPTION_REG

;Algoritmo proporcionado por Labra Porthela Victor Manuel
;Lazo anidado.
delay10mS
movlw d'21'

call dmS
return

dmS
movwf Cont

ciclo
decfsz Cont,F
goto dmS1
return

dmS1

call d500uS
nop
goto ciclo

d500uS
movlw d'163'

call duS
return

duS
movwf Cont1


ciclo1
decfsz Cont1,F
goto ciclo1
return

;Programa principal.

Principal
;Usaremos el puerto A como entrada y el puesto B como salida.
movlw PORTA
movf PORTB
call delay10mS
goto Principal
end

viernes, 26 de junio de 2009

Programando pic's desde linux. (IDE)

Entrando a tema...

El corazón de Pikdev y otros como Piklab, con las herramientas que proporciona GPutils que vimos el post pasado. Por ello veremos como ensamblar desde la línea de comandos.

Abrimos nuestra terminal y nos vamos hasta donde tengamos nuestro archivo '.asm' y tecleamos:

[Sugizo@old practicas]$ gpasm -L -o "/media/disk/escuela/Microcomputadoras/practicas/test01b.hex" -w 2 -I "/usr/share/gputils/header" -p p16f877 -a inhx8m -r hex "/media/disk/escuela/Microcomputadoras/practicas/test01b.asm"

Con ello generaremos el archivo .hex, .cod y .lts que usaremos para GPSim.


Pero si lo que queremos es evitar la terminal, siempre existe el entorno gráfico y sencillo de una IDE como Pikdev.

abrimos nuestro .asm seleccionamos el tipo de pic que deseamos usar y le damos F5 y nos hace lo anterior en un solo click.


y así tenemos los mismos archivos con menos esfuerzo. Hay que aclarar que una de las cosas que debemos cuidar es la sintaxis, ya que gpasm es muy estricto en cuanto a declaraciones. Un error es include, MPLab la reconoce tanto en mayusculas como en minusculas, mientras que gpasm sólo en minusculas.

Ejemplo:

__CONFIG _LVP_OFF & _CP_OFF & _PWRTE_ON & _XT_OSC & _BODEN_OFF & _WDT_OFF
list p=pic16f877
include <p16f877.inc>

Uno siempre se siente realizado cuando se ensambla sin ploblemas... Pero eso no indica que haga lo que debiera y seguramente nos dara dolores de cabeza al ver que pasa nada y lo mismo cuando lo grabamos en el chip. Pero para ello esta GPSim...

Para el programador, solo nos interesa el .hex. Por lo que tomamos como basura todo lo demás. Pero ¿Cómo depuramos?

Desde la terminal tecleamos

[Sugizo@old practicas]$ gpsim -s archivo.cod

Esto nos abre un entorno gráfico simple, aburrido y que parece poco eficiente. Pero su elegancia radica en su simpleza.


En el cual podemos tener todo lo necesario en ventanas independientes y que podemos acomodar en todo el escritorio para poder seguir cada paso de nuestro programa y ver en donde nuestra lógica falla.

Desde esta ventana podemos colocar nuestros breakpoints y seguir línea a línea lo que pasa en nuestro código y lo que tenemos en nuestras librerias auxiliares.


Y en esta esquina tenemos a la maravillosa ventana medidora!! El StopWatch que generosamente nos medirá la cantidad de ciclos y tiempo que tarda una instrucción en ejecutarse.

Y aquí lo tenemos en funcionamiento

Entre sus herramientas tenemos los registros de la RAM como de la memoria EEPROM.


El programa de memoria.

Y una placa gráfica de nuestro integrado donde vienen los puertos y los bits de configuración.


Como dicen: He aquí, todo para el programador. Nos veremos en el siguiente post para seguir descubriendo los horrores de dedo y más código para poder hacer de un pic, una útil herramienta.

Programando pic's desde linux. (Intro)



Ya les había presentado código ensamblador para el 8051 de intel en el cual probaba con un emulador escrito en java y que ensamblaba con nams desde la línea de comandos. Pero ahora es diferente y aquel emulador y mi ensamblador no son suficientes para poder seguir en la recta final.

Ahora estamos probando a la familia de los Pic, el cual ya tenia el gusto de conocer al 16F84. Y para seguir en esa misma línea de trabajo nos topamos ahora con un integrante de la familia mas actual. (Nos referimos al pic16F877)

La compañía que se encarga de fabricar estas bellezas, también se encarga de proporcionar una IDE de forma gratuita para su programación, depuración y grabación en el pic por medio de diferentes programadores, tanto propios como de otras empresas. Pero el problema llega cuando no usas Windows... Ups, te dices y te pones a rezar para que emule vía Wine sin problemas.

Así que me dispuse de tiempo para buscar algún programa para hacer esta tarea de forma nativa en linux, busque y busque y los portales derribe. Encontré un proyecto frances llamado Pikdev que ofrece una IDE sencilla para esta titanica tarea. Pero faltaban las librerías de Microchip para poder hacer mas simple la tarea. Así que pude encontrarlas en el proyecto GPutils, el cual dispone de las herramientas necesarias para poder programar pic y que Pikdev usa.

Pero pronto descubrí un problema mayor y que es el dolor de cabeza de cualquier programador en entorno de producción... bugs... Desgraciadamente, Pikdev no cuenta con un debugger para esto... Cansado de buscar una IDE que me lo dirá, me resigne a emular MPLab de Microchip para poder disponer de la herramienta MPSim para el debuggeo del programa que estaba tronando en el circuito... Pero mis esperanzas murieron cuando active el debugger. Corrió, pero jamás depuro...

Buscando un simulador, di con la pagina de GNUpic que es mantenida por Scott Dattalo. En ella encontré a GPSim, un simulador de pic's y con ello complete el labor de programar y debuggear en un entorno Linux sin necesidad de emular.

lunes, 1 de junio de 2009

Todo para el artista: ArtistX


Una de mis pasiones en esta vida es el audio, todo el mundo de las frecuencias y armónicos. Es algo que me entretiene por horas y horas y que por lo general, salen cosas muy buenas de ellas.

Pero ahora que mi enanicima anda jugando con los gráficos en 3D, pensé en hacerle un regalo bastante lindo lleno de software para dicho trabajo y me puse a trabajar secretamente en ello. Buscando programas para 3D y demás, recordé que existe una distribución que se había creado para ello y me puse a buscarla. Para mi sorpresa, acaba de sacar su nueva versión 0.7.

Pasemos al tema

ArtistX es una distribución basada en Ubuntu 8.10 (intrepid) con el Kernel 2.6.27, Compiz Fusion, Genome 2.24, KDE 4.2 y una gran cantidad de aplicaciones para el mundo de los gráficos y multimedia, el cual es una gran alternativa para todo esos fanáticos como mi hermosa niña que se quieren pasar un buen rato creando cosas gráficamente hermosas.

Esta distribución en formato live-cd (Bueno, es un DVD... que genio!!!) puedes descargarla vía torrent y si te preguntas que puede traer ArtistX, aquí les dejamos una probadita de su contenido:

  • Software para gráficos en 2D: Gimp, Inkscape, Nip2, Krita, Cinepaint, Synfig, Rawstudio, Skencil, Hugin.
  • Softwares para gráficos en 3D: Blender, Wings3D, Kpovmodeler + Povray 3.6, K3D.
  • Softwares para video: Cinelerra, Kino, Openmovieeditor, Kdenlive, Pitivi, Avidemux, Devede, y muchos más.
  • Reproductores de mísica y video: Mplayer, Helix Player, Videolan, Xine, Kaffeine, Kmplayer, LastFM y muchos más.
  • Sofware para edición de audio: PD and externals, Rosegarden, Ardour, TerminatorX, Cecilia/Csound, Gnusound, Mixxx y muchos más.
Ahora si: Felices trasos!

jueves, 14 de mayo de 2009

Extra!!! El causante de la pandemia

Después de varias semanas de investigación, se ha dado con el verdadero culpable de la pandemia del nuevo VIH (Virus de la influenza humana)


Ni que hacer.

miércoles, 13 de mayo de 2009

De la música y sus recuerdos.

Ya varios lectores me han pedido que regrese la entrada de recuerdos y música. Hoy les he hecho caso ya que no veo el por que no deba subir mis memorias que son libres.

De la entrada original le he cambiado algunas cosas dejando la idea integra.

A lo largo de mi vida he tenido la fortuna de conocer a varias personas con las cuales he podido hablar de música y de otros temas más que son muy interesantes. Entre muchas platicas con estas personas, uno de estos artistas he llegado a ser Bjork, una cantante y compositora islandesa que desde hace ya varios años he seguido.

Cuando entre a trabajar a la Ford, que se encuentra en Santa Fe, frente a la universidad Ibero Americana.

Cada día me hacia un tour para poder entrar a las 8 de la mañana. Entre microbuseros y metro, lograba llegar al trafico de Vasco de Quiroga hasta el entronque de la autopista México-Toluca. Del cual hemos de decir que es de medio salvaje a muy intenso en las mañanas y tardes. No olvidemos los días de lluvia, por que nadie sale de Santa Fe con eso. Durante ese viaje de cada mañana siempre iba escuchando el iPod (o iPot o aipol) y me hice muy amigo de muchas melodías, algunas que me ponían nostálgico, otras que me llenaban de vigor y otras que solo me hacían pasar un buen rato.


Una vista al presente
Pero entre todas esas canciones, rescatemos una de ellas. “Pagan poetry” de Bjork, cuyos armónicos son tan agradables que es como tener un purgatorio portátil, algo imposible escucharla sin recordar algún dolor en el corazón. Pero a la par te relaja por esos graves que maneja tan acordes que de un zarpazo de suben el ritmo cardíaco y los agudos te hacen caer en un mood muy relax por el simple hecho del sonido de la arpa.


La letra es tan incomprensible como cualquier acto amoroso que uno pueda generar de buenas a primeras. Justificas cualquier cosa durante casi toca la canción, cualquier idea y tratas de purificar y purificarte con ideas, sueños, recuerdos para eliminar cualquier mal sabor de boca. Y todo esto para terminar de golpe aceptando lo que ya sabes y lo que es la realidad. Amas y estas herido, te hieres por amor y solo quieres esperar algo que ni tu mismo sabes.


corazón de ...

Y esto te hace terminar escuchando un track de 3 horas mientras dices: ¿Por qué te haces eso a ti mismo?

Seguiremos en la próxima recordando mas canciones y experiencias de vida.

viernes, 8 de mayo de 2009

Arreglando la vida. (Carpe diem)

Cuando un griego se pone a planear su vida, se sienta a hacer nada, sin hablar con nadie. Cuando le preguntas que hace, te responde "Arreglando mi vida" y sigue en su mismo mood. Después de una semana, se levanta a hacer su vida normal, pero en claro con lo que quiere de ella ya que no hay una chimenea como tu propia chimenea: La casa está donde el corazón.

Desde ayer, quizá desde un día antes algo del viejo pasado regresa para recordarme que el hombre teme el paso del tiempo y no han aprendido que es mejor encender una luz que maldecir la oscuridad que prevalece en sus vidas. Hoy me pongo a planear mi vida, a ver que quiero de ella y que no. A decirle adiós a los trolls amargados de las navidades pasadas y enfocarme a las personas que durante dos años han dado mas que tiempo a mi vida y me ha logrado sacar del hoyo donde me meti por 3 años.

"Lo pasado ha huido, lo que esperas está ausente, pero el presente es tuyo."

La historia se ha terminado.

JE!JE!JE!

viernes, 24 de abril de 2009

entre

Comienzo por mi para terminar tarde entre mis sabanas 
 retando al futuro que siempre me cambia
 y que no quiero entender
 
 Despierto desde temprano 
 simplemente para crear mi ejercicio favorito 
 Entre los tumultos del futuro
 y término entendiendo que tengo miedo de entrar a la ducha
 
 desde el comienzo hasta el inevitable final 
 Siempre mantengo mis manos lejos de mi
 No es que me deje solo
 simplemente nunca estuve ahí
 De cualquier forma
 
 Leo mi futuro
 Ahora lo puedo hacer

domingo, 19 de abril de 2009

Cuentos cortos para sueños largos.

Sigo mi pecado, sigo sin nombre
visto de velo, mascaras y sonrisas
cubro mi rostro con bellos tatuajes
hermosas telas cubren mi cuerpo
fina piel adornan mis pies.

Por mí? Por decir?
Donde estoy?

De noche desgarro mi piel
De día busco la redención en tus brazos
Te llamo... Pero sin aparente resultado
mi voz resumbá en el cielo con fuerza.

Miento, chantajeo, encubro las cosas
camino sin rumbo fijo entre los muertos
y en los campos dejo de entender al mundo
Todo ello para poder contar la verdad

Y las cosas que siento
tu jamás las sabrás.

jueves, 16 de abril de 2009

Dave Matthews Band de regreso


Después que estos señores no sacaran nada desde ya hace un rato, regresaron al estudio para traernos un nuevo disco llamado BIG WHISKEY AND THE GROOGRUX KING.

Pese a que el disco sale en 2 de junio de este año, ya esta en preorden y podrás tener un set de 3 dsicos gratis que son el live trax Vol 15, Alpine Valley Music Theatre y el One of the most fan requested show for live.

Ya era hora de tener mas de ese rock-jazz que Dave y compañia nos pueden brindar.

Números primos vía ensamblador

Después de pelearme un poco con este programa debido a los errores de dedo que tengo, ya quedo mi programa de numeros primos escrito en ensamblador para el procesador 8051. Así que sin mas demoras, les presentamos al código!!!

clr A;
clr C;

mov DPTR, #TablaPrimos ;

mov r3, #00h ;
mov r4, #02h ;
mov r5, #0FEh ;
mov r6, #02h ;
mov 20h, #0Fh ;
mov 30h, #05h ;
mov 31h, #09h ;
mov 32h, #03h ;

;; primos
mov DPTR, #TablaPrimos;
mov 20h, #00h ;
acall paresinc ;
mov 20h, #41h
acall paresdec ;

;; Rutina de retardo

tiempito:
mov 90h, A;
mov r0, #02;
in1: mov r1, #040h;
in2: mov r2, #090h;

wait: djnz r2, wait;
djnz r1, in2;
djnz r0, in1;
ret;

;; Rutinas para pares

paresinc:
inc 20h ;
mov A, 20h ;
mov B, r6 ;
;; Divición entre 2
div AB ;
mov A, B ;
cjne A, #00h, paresinc ;
mov A, 20h ;
mov B, 20h ;
;; Divición entre si mismo
div AB ;
mov A, B ;
cjne A, #00h, paresinc ;
mov A, 20h ;
movc A, @A+DPTR ;
mov P1, A ;
acall tiempito ;
mov A, 20h ;
cjne A, #41h, paresinc ;
ret

paresdec:
dec 20h ;
mov A, 20h ;
mov B, r6 ;
;; Divición entre 2
div AB ;
mov A, B ;
cjne A, #00h, paresdec ;
mov A, 20h ;
mov B, 20h ;
;; Divición entre si mismo
div AB ;
mov A, B ;
cjne A, #00h, paresdec ;
movc A, @A+DPTR ;
mov P1, A ;
acall tiempito ;
mov A, 20h ;
cjne A, #00h, paresdec ;
ret


TablaPrimos:

DB 11111111B;
DB 11111110B;
DB 11111101B;
DB 11111100B;
DB 11111011B;
DB 11111010B;
DB 11111001B;6
DB 11111000B;7
DB 11110111B;8
DB 11110110B;9
DB 11110101B;10
DB 11110100B;11
DB 11110011B;12
DB 11110010B;13
DB 11110001B;14
DB 11110000B;15
DB 11101111B;16
DB 11101110B;17
DB 11101101B;18
DB 11101100B;19
DB 11101011B;20
DB 11101010B;
DB 11101001B;
DB 11101000B;
DB 11100111B;
DB 11100110B;
DB 11100101B;
DB 11100100B;
DB 11100011B;
DB 11100010B;
DB 11100001B;30
DB 11100000B;31
DB 11011111B;32
DB 11011110B;33
DB 11011101B;34
DB 11011100B;35
DB 11011011B;36
DB 11011010B;
DB 11011001B;38
DB 11011000B;39
DB 11010111B;40
DB 11010110B;41
DB 11010101B;42
DB 11010100B;43
DB 11010011B;44
DB 11010010B;45
DB 11010001B;
DB 11010000B;
DB 11001111B;
DB 11001110B;
DB 11001101B;50
DB 11001100B;
DB 11001011B;
DB 11001010B;
DB 11001001B;
DB 11001000B;55
DB 11000111B;
DB 11000110B;
DB 11000101B;
DB 11000100B;
DB 11000011B;60
DB 11000010B;
DB 11000001B;
DB 11000000B;
DB 10111111B;
DB 10111110B;65

end

martes, 14 de abril de 2009

De los deseos

Hey... mantente fuera de esto
Sigue ese camino lleno de mentiras
Oh, si. Eso es lo que deseo de ti
excita mi deseo, desborda mi pasión

Puedes venir cuando quieras
lo siento, me encanta jugar este juego
Por que te ves como una cereza
Y deseo explorarte

lunes, 13 de abril de 2009

Redes sociales.

miércoles, 8 de abril de 2009

En esta epoca de cuaresma...

Nada como pagar por nuestras acciones.

sábado, 4 de abril de 2009

Confeción

Mis manos escriben como esclavos hambrientos
 Ordenados por las voces rabiosas en mi cabeza
 doblegadas por el ser de mi mirada.

Sin ganas de gritar.

 
Todo llega completamente quieto
 no podemos estar tan distantes
 mientras la soledad es nombrada
 Dulcemente vienes y dulcemente te vas
 apareces y desapareces sin voluntad
 Perdiendonos entre versos amorosos
 
 Te pareces tanto a mi y eres diferente
 que te revuelcas en mi felicidad
 blasfemando de Dios
 Pero te sigo adorando
 No estaremos apatados jamás
 
 Murmurar ahora no sirve de nada
 Es el lugar donde los lamentos no tienen nombre
 El remordimiento y la redención desaparecen.
 
 Duele estar vivo lejos de lo que se ama
 es la mentira que escogimos para los dos
 nuestros dulces labios resecos
 nuestros cuerpos apartados entre las sabanas
 
 Murmura en mi oído que me amas
 vuelveté loco al saber de mi
 desborda tu amor sobre el único recuerdo
 por que yo no estoy ahí.
 
 
 
 
 
 blasfemas

Jugando con ensamblador. Que mello!!

Cada que me siento tras una IDE o un editor de textos como emacs o vi, en mi cabeza se invoca la voz de mi amiga Argelia que le reclama a su novio y a mi: Estas como medio obcesionado con la programación. Y como decirles que es mentira. 

Normalmente me dedico a programar en java, c, cuando se requiere en sql estandar y de vez en cuando en algo mas como visual o C#, pero no son lenguajes que me llamen la atención. Pero ahora me ha tocado programar en un viejo amigo complemento de C, si, ensamblador, o como le llamamos: Empalador (Pa' los cuates).

Así que me puse a recordar el set de instrucciones para la serie 8086 (i386) de intel. Pero oh sorpresa que me di, pues el micro que usamos es uno viejito, pero lindo. Me refiero al 8051, y por suerte su set de instrucciones es mas simple, pero mas rarito que el complejo set del i386. Pero ya te tome modo y este es el RC1 para uno de mis proyectos. 

Con ustedes, el código fuente!!! Aplausos, señores!

Este es un programa que manda por el puerto 1 numeros del 1 al F hexadesimal y hace dos sumas. Usa una tabla en apuntadores. 

clr A;
clr C;

mov DPTR, #Tabla ;
mov r3, #0 ;
mov r4, #02 ;
mov 20h, #0Fh ;
mov 30h, #05h ;
mov 31h, #09h ;
mov 32h, #03h ;
 
 ;; led's test
acall test ;
NOP ;
acall separador ;

 ;; Suma

mov A, 30h ;
movc A, @A+DPTR ;
mov P1, A ;
acall tiempito ;
mov A, 32h ;
movc A, @A+DPTR ;
mov P1, A ;
acall tiempito ;
 
 ;; separador de suma
 
acall separador ;

mov A, 30h ;
add A, 32h ;
movc A, @A+DPTR ;
mov P1, A ;
acall Tiempito ;

acall separador ;

 ;; Suma

mov A, 31h ;
movc A, @A+DPTR ;
mov P1, A ;
acall tiempito ;
mov A, 30h ;
movc A, @A+DPTR ;
acall tiempito ;

 ;; Sepaarador de suma
acall separador ;

mov A, 31h ;
add A, 30h ;
movc A, @A+DPTR ;
mov P1, A ;
acall tiempito ;


 ;; tabla
Tabla:
DB 11000000B; 0
DB 11111001B; 1
DB 10100100B; 2
DB 10110000B; 3
DB 10011001B; 4
DB 10010010B; 5
DB 10000010B; 6
DB 11111000B; 7
DB 10000000B; 8
DB 10010000B; 9
DB 10001000B; a
DB 10000011B; b
DB 11000110B; c
DB 10100001B; d
DB 10000110B; e
DB 10001110B; f

 ;; Rutina de retardo

tiempito:
 mov 90h, A;
 mov r0, #02;
 in1: mov r1, #040h;
 in2: mov r2, #090h;

 wait: djnz r2, wait;
  djnz r1, in2;
  djnz r0, in1;
  ret;
 
 ;; Rutina del test

test: mov A, 20h ;
 movc A, @A+DPTR ;
 mov P1, A ;
 acall tiempito;
 mov A, 20h ;
decr: subb A, #01h ;
 mov 21h, A ;
 movc A, @A+DPTR ;
 mov P1, A ;
 acall tiempito ;
 mov A, 21h ;
 jnz decr ;
 ret ;

 ;;Rutina de separador.

separador:
 mov A, #0B6h ;
 mov P1, A ;
 acall tiempito ;
 ret