Historia y centro turisticos: San Cristobal Alta Verapaz.

San Cristobal Verapaz es un municipio de Alta Verapaz, localizado en la República de Guatemala. Se encuentra aproximadamente a 29 km de la Ciudad de Cobán y a unos 210 km de la Ciudad de Guatemala. Tiene más ó menos el mismo tiempo de fundación de su vecino municipio Santa Cruz Verapaz.

Entre las más destacables atracciones que encierra este municipio es su laguna de Chichoj que esta a la orilla del pueblo y el parque Petencito. El municipio tiene un área aproximada de 190 km2. Colinda al norte con Cobán (A.V.); al este con Cobán y Santa Cruz (A.V.); al sur y oeste con Uspantán, (Quiche)

La cabecera está dentro de un valle de la Sierra Pampacché y su urbanización, desordenada, gradualmente ha ocupado las riberas de la laguna Chichoj. El área urbana del municipio tiene cinco barrios: Santa Ana, San Felipe, San Sebastián, San Cristóbal y Esquipulas. La cuenca de la laguna tiene 29.09 km2 y representa el 15.31 % del área total del municipio.

La fabrica de Calzado Coban, fundada en 1914, es la fuente principal de trabajo; sus botas Rhino, son producidas por más de 900 empleados, quienes las elaboran a mano. El resultado es el reconocimiento por su alta calidad y durabilidad.

otra hermosa vista del municipio:

Publicado en Historia de San Cristobal Verapaz | 9 comentarios

MICRONTROLADORES

Ahora un poco de electrónica:

Como estos dispositivos son de tecnología CMOS, todos los pines deben estar conectados a alguna parte, nunca dejarlos al aire porque se puede dañar el integrado. Los pines que no se estén usando se deben conectar a la fuente de alimentación de +5V, como se muestra en la siguiente figura:

Capacidad de corriente en los puertos

La máxima capacidad de corriente de cada uno de los pines de los puertos en modo sumidero (sink) es de 25 mA y en modo fuente (source) es de 20 mA. La máxima capacidad de corriente total de los puertos es:

PUERTO A

PUERTO B

Modo Sumidero

80 mA

150 mA

Modo Fuente

50 mA

100 mA

Así se vería la conexión para ambos modos de funcionamiento.

El oscilador externo

Es un circuito externo que le indica al micro la velocidad a la que debe trabajar. Este circuito, que se conoce como oscilador o reloj, es muy simple pero de vital importancia para el buen funcionamiento del sistema. El P1C16C84/F84 puede utilizar cuatro tipos de reloj diferentes. Estos tipos son:

RC. Oscilador con resistencia y condensador.

XT. Cristal.

HS. Cristal de alta velocidad.

LP. Cristal para baja frecuencia y bajo consumo de potencia.

En el momento de programar o «quemar”,  el microcontrolador se debe especificar que tipo de oscilador se usa. Esto se hace a través de unos fusibles llamados «fusibles de configuración» o FUSES.

Aquí utilizaremos el cristal de 4 MHz, porque garantiza mayor precisión y un buen arranque del microcontrolador. Internamente esta frecuencia es dividida por cuatro, lo que hace que la frecuencia efectiva de trabajo sea de 1 MHz, por lo que cada instrucción se ejecuta en un microsegundo. El cristal debe ir acompañado de dos condensadores y el modo de conexión es el siguiente.

Si no requieres mucha precisión en el oscilador, puedes utilizar una resistencia y un condensador, como se muestra en la figura. Donde OSC2 queda libre entregando una señal cuya frecuencia es la del OSC/4.

Según las recomendaciones de Microchip R puede tomar valores entre 5k y 100k, y C superior a 20pf.

Reset

El PIC 16C84/F84 posee internamente un circuito temporizador conectado al pin de reset que funciona cuando se da alimentación al micro, se puede entonces conectar el pin de MCLR a la fuente de alimentación. Esto hace que al encender el sistema el microcontrolador quede en estado de reset por un tiempo mientras se estabilizan todas las señales del circuito.

Este último circuito, es por si deseas tener control sobre el reset del sistema, sólo le conectas un botón y listo.

EN INTERIOR DEL PIC.

Estructura interna del Microcontrolador:

Arquitectura interna del PIC:

Hay dos arquitecturas conocidas; la clásica de von Neumann, y la arquitectura Harvard, veamos como son.

Arquitectura Von Neumann: Dispone de una sola memoria principal donde se almacenan datos e instrucciones de forma indistinta. A dicha memoria se accede a través de un sistema de buses único (direcciones, datos y control).

Arquitectura Harvard: Dispone de dos memorias independientes, una que contiene sólo instrucciones, y otra que contiene sólo datos. Ambas disponen de sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso (lectura o escritura) simultáneamente en ambas memorias, ésta es la estructura para los PIC’s.

 

El procesador o UCP:

Es el elemento más importante del microcontrolador. Se encarga de direccionar la memoria de instrucciones, recibir el código OP de la instrucción en curso, decodificarlo y ejecutarlo, también realiza la búsqueda de los operandos y almacena el resultado.

Memoria de programa:

Esta vendría a ser la memoria de instrucciones, aquí es donde almacenaremos nuestro programa o código que el micro debe ejecutar. No hay posibilidad de utilizar memorias externas de ampliación. Son 5 los tipos de memoria. Pero sólo describiré dos:

Memorias EEPROM. (Electrical Erasable Programmable Read Only Memory – Memoria de sólo lectura Programable y borrable eléctricamente)

Común en el PIC 16C84. Ésta tarea se hace a través de un circuito grabador y bajo el control de un PC. El número de veces que puede grabarse y borrarse una memoria EEPROM es finito aproximadamente 1000 veces. Este tipo de memoria es relativamente lenta.

Memorias FLASH.

Disponible en el PIC16F84. Posee las mismas características que la EEPROM, pero ésta tiene menor consumo de energía y mayor capacidad de almacenamiento, por ello está sustituyendo a la memoria EEPROM.

La memoria de programa se divide en páginas de 2,048 posiciones. El PIC16F84A sólo tiene implementadas 1K posiciones es decir de 0000h a 03FFh y el resto no está implementado. (es aquello que se ve en gris)

Cuando ocurre un Reset, el contador de programa (PC) apunta a la dirección 0000h, y el micro se inicia nuevamente. Por esta razón , en la primera dirección del programa se debe escribir todo lo relacionado con la iniciación del mismo (por ejemplo, la configuración de los puertos).

Ahora, si ocurre una interrupción el contador de programa (PC) apunta a la dirección 0004h, entonces ahí escribiremos la programación necesaria para atender dicha interrupción.

Algo que se debe tener en cuenta es la pila o Stack, que consta de 8 posiciones (o niveles), esto es como una pila de 8 platos el último en poner es el primero en sacar, si seguimos con este ejemplo, cada plato contiene la dirección y los datos de la instrucción que se está ejecutando, así cuando se efectúa una llamada (CALL) o una interrupción, el PC sabe donde debe regresar (mediante la instrucción RETURN, RETLW o RETFIE, según el caso) para continuar con la ejecución del programa.

Recuerda, sólo 8 llamadas «CALL», ten en cuenta las «INTERRUPCIONES».

Memoria de datos:

Tiene dos zonas diferentes:

1. RAM estática ó SRAM:

donde residen los Registros Específicos (SFR) con 24 posiciones de tamaño byte, aunque dos de ellas no son operativas y los Registros de Propósito General (GPR) con 68 posiciones. La RAM del PIC16F84A se halla dividida en dos bancos (banco 0 y banco 1) de 128 bytes cada uno (7Fh)

http://r-luis.xbot.es/pic1/imagen/memdatos.gif

2. EEPROM: de 64 bytes donde, opcionalmente, se pueden almacenar datos que no se pierden al desconectar la alimentación.

EL COMIENZO.

Configuración de los puertos del PIC:

Llegó el momento de ver como configurar los puertos del PIC. Para poder hacerlo es necesario conocer la tabla de registros de la memoria de datos, la cual como dijimos, está dividida en el BANCO 0 y BANCO 1.

Los registros importantes en la configuración de los puertos son:

STATUS   dirección 0x3
PORTA    dirección 0x5
PORTB    dirección 0x6
TRISA      dirección 0x5
TRISB      dirección 0x6

Por defecto el PIC tendrá todos los I/O port’s (es decir los puertos RA y RB), colocados como entrada de datos, y si queremos cambiarlos habrá que configurarlos.

Al configurar los puertos deberás tener en cuenta que:

Si asignas un CERO (0) a un pin, éste quedará como salida y…
Si le asignas un UNO (1), quedará como entrada

Esta asignación se hace en:

TRISA para los pines del PUERTO A (5 bits)
TRISB para los pines del PUERTO B (8 bits)

Por Ejemplo:

Si TRISA es igual a 11110 todos sus pines serán entradas salvo RA0 que esta como salida

Si TRISB es igual a 00000001 todos sus pines serán salidas salvo RB0 que esta como entrada

Cuando el PIC arranca se encuentra en el BANCO 0, como TRISA y TRISB están en el BANCO 1 no queda otra, deberemos cambiar de banco. Esto se logra a través del Registro STATUS

STATUS es un Registro de 8 bits u 8 casillas, en el cual la Nº 5 (RP0) define la posición del banco en donde nos encontramos

Si pones un CERO (0) a RP0 estaremos en el BANCO 0
Si le pones un UNO (1) ya ves, estaremos en el BANCO 1

REGISTRO STATUS

7

6

5

4

3

2

1

0

IRP

RP1

RP0

TO

PD

Z

DC

C

Listo, ahora ya sabemos como configurar los puertos, pero lo aclararemos con un ejemplo completo.

Vamos a escribir un código que configure todos los pines del puerto A como entrada y todos los del puerto B como salida.

;—————Encabezado————-

                list          p=16f84                    ; usaremos el PIC 16f84

                radix      hex             ; y la numeración hexadecimal

;————mapa de memoria———

estado  equ        0x03           ; Aquí le asignamos nombres a los

trisa       equ        0x05           ; registros indicando la posición

trisb       equ        0x06           ; en la que se encuentran

;——-Configuración de puertos——-

reset     org         0x00           ; origen del programa, aquí comenzaré

                                                    ; siempre que ocurra un reset

                goto      inicio          ; salto a «inicio»

                org         0x05           ; origen del código de programa

inicio     bsf         estado,5                   ; pongo rp0 a 1 y paso al banco1

                movlw  b’11111′                    ; cargo W con 11111

                movwftrisa            ; y paso el valor a trisa

                movlw  b’00000000′    ; cargo W con 00000000

                movwftrisb            ; y paso el valor a trisb

                bcf         estado,5                   ; pongo rp0 a 0 y regreso al banco0

;——————————————

                end                            ; se acabó

;——————————————

Descripción del código:

Todo lo que escribas luego de un «;» (punto y coma) será ignorado por el ensamblador, estos son los famosos comentarios, y sirve para saber que hace cada línea de código.

Dicho esto no queda más que describir el código, así que vamos por partes.

;—————Encabezado————-

                list          p=16f84                    ; usaremos el PIC 16f84

                radix      hex             ; y la numeración hexadecimal

Aquí le indicas al ensamblador para que micro controlador estas codificando (PIC16F84). y cual será el sistema de numeración que utilizarás (hexadecimal).

Nota que hay tres columnas, en este caso la primera está vacía. Respeta las tabulaciones para no confundir al ensamblador.

;————mapa de memoria———

estado  equ        0x03           ; Aquí le asignamos nombres a los

trisa       equ        0x05           ; registros indicando la posición

trisb       equ        0x06           ; en la que se encuentran

Recuerdas lo de la memoria de datos? Bien, al registro STATUS, que está en la posición 0x03 de la memoria de datos le puse la etiqueta «estado».  equ es algo así como igual . (Es decir, estamos  asignando el nombre estado al registro que está en la posición 0x03 de la memoria de datos).

Luego hacemos lo mismo con trisa y trisb. Ahora sigamos…

;——-Configuración de puertos——-

reset     org         0x00           ; origen del programa, aquí comenzaré

                                                    ; siempre que ocurra un reset

                goto      inicio          ; salto a «inicio»

                org         0x05           ; origen del código de programa

inicio     bsf         estado,5                   ; pongo rp0 a 1 y paso al banco1

                movlw  b’11111′                    ; cargo W con 11111

                movwftrisa            ; y paso el valor a trisa

                movlw  b’00000000′    ; cargo W con 00000000

                movwftrisb            ; y paso el valor a trisb

                bcf         estado,5                   ; pongo rp0 a 0 y regreso al banco0

La directiva org indica el sitio de la memoria en donde se escribe una parte del programa. En este caso el contador de programa apuntará a la dirección 0x00 (reset) entonces ejecutará la instrucción que sigue a continuación, (saltar a la etiqueta inicio) y nuestro código de programa comienza en la dirección de memoria 0x05 (aquí salto por encima de la interrupción 0x04)

BSF (SET FILE REGISTER), es la instrucción que pone un uno en el bit del registro especificado, en este caso pone a uno el bit 5 del registro STATUS (el rp0), para pasar al banco 1.

movlw es algo así como… mueve el siguiente literal al Registro W.

W es el Registro de Trabajo, y lo usamos para almacenar momentáneamente los datos que queremos mover. una vez hecho esto pasamos el dato a trisa, o a trisb, según el caso.

movwf es algo así como… mueve el contenido del registro W al registro f, en este caso f sería trisa o trisb.

BCF (BIT CLEAR FILE REGISTER), ésta instrucción limpia el bit del registro especificado, o lo pone a cero, en este caso pone a cero el bit 5 del registro STATUS para regresar al banco 0.

;——————————————

                end                            ; se acabó

;——————————————

EL INICIO.

Programando en serio:

El programa anterior, lo utilizaremos de tiempo completo, y lo único que cambiaremos serán los pines de entrada y salida.

Te recuerdo que lo que hicimos hasta ahora, solo fue configurar los puertos, pero no genera ninguna señal ni nada por el estilo.

Ahora si programaremos en serio. Encenderemos un LED, lo mantendremos encendido por un tiempo, luego lo apagaremos y haremos que se repita todo de nuevo. Recuerda ponerle un nombre, aquí lo llamaré LED1.asm (no olvides el .asm)

Comencemos

;—————Encabezado————-

                LIST        p=16f84

                radix      hex

;————mapa de memoria———

estado  equ        0x03           ; Haciendo asignaciones

TRISB    equ        0x06

ptob      equ        0x06

reg1       equ        0x0C           ; Estos 3 registros los utilizaré

reg2       equ        0x0D           ; para hacer el retardo

reg3       equ        0x0E

;——-Configuración de puertos——-

reset     org         0x00           ; origen del programa, aquí comenzará

                                                    ; siempre que ocurra un reset

                goto      inicio          ; salta a «inicio»

inicio     bsf         estado,5                   ; pone rp0 a 1 y pasa al banco1

                movlw  b’00000000′    ; carga W con 00000000

                movwfTRISB         ; y pasa el valor a trisb

                bcf         estado,5                   ; pone rp0 a 0 y regresa al banco0

;—-Aquí enciende y apaga el LED—–

 

ahora    bsf         ptob,0       ; pone un 1 en RB0 (enciende el LED)

                call         retardo                     ; llama al retardo

 

                bcf         ptob,0       ; pone a 0 RB0 (apaga el LED)

                call         retardo                     ; llama al retardo

                goto      ahora         ; repite todo de nuevo

 

;———–Rutina de Retardo———–

 

retardo                movlw  10                ; Aquí se cargan los registros

                movwfreg1            ; reg1, reg2 y reg3

                                                    ; con los valores 10, 20 y 30

tres        movlw  20                ; respectivamente

                movwfreg2

 

dos        movlw  30

                movwfreg3

 

uno        decfsz   reg3,1        ; Aquí se comienza a decrementar

                goto      uno             ; Cuando reg3 llegue a 0

                decfsz   reg2,1        ; le quitare 1 a reg2

                goto      dos             ; cuando reg2 llegue a 0         

                decfsz   reg1,1        ; le quitare 1 a reg1

                goto      tres             ; cuando reg1 llegue a 0

                retlw     00                ; regresare al lugar

                                                    ; de donde se hizo la llamada

;——————————————

                end                            ; se acabó

;——————————————

Descripción del código:

No te asustes por el tamaño del código, que aunque parezca difícil todo está igual que el código anterior, por lo que sólo describiré los cambios… (lo que está en rojo)

Se agregaron 3 registros mas (reg1, reg2 y reg3), éstos vendrían a ser como variables ubicadas en sus respectivas posiciones (0x0C, 0x0D, 0x0E,) y son registros de propósito general (recuerda que para el PIC16F84 son 68, puedes elegir cualquiera).

A demás se agregó ptob, etiqueta que corresponde a la dirección del puerto B

Analicemos lo que sigue…, que éste es el programa en sí:

;—-Aquí enciende y apaga el LED—–

ahora    bsf         ptob,0       ; pone un 1 en RB0 (enciende el LED)

                call         retardo                     ; llama al retardo

                bcf         ptob,0       ; pone a 0 RB0 (apaga el LED)

                call         retardo                     ; llama al retardo

                goto      ahora         ; repite todo de nuevo

La etiqueta «ahora» es el nombre de todo este procedimiento o rutina, de tal modo que cuando quiera repetir el procedimiento solo saltare a «ahora».

bsf es poner a uno un bit, en este caso al primer bit (el bit 0) del puerto B (ptob).

call es una llamada, en este caso llama a la rutina de retardo, cuando regrese, continuará con el código.

bcf es poner a cero un bit, en este caso al primer bit (bit 0) del puerto B (ptob). y luego llama al retardo, cuando regrese se encontrará con la instrucción goto obligándolo a saltar a la etiqueta ahora para que se repita todo de nuevo. Eso es todo…!!!.

.: Rutina de retardo

Esta es la parte más difícil, pero trataré de hacerlo sencillo así puedes continuar con lo que sigue y no te trabas en esta parte. Primero veremos como se cargan los registros para el retardo. Veamos el código…

;———–Rutina de Retardo———–

retardo                movlw  10                ; Aquí se cargan los registros

                movwfreg1            ; reg1, reg2 y reg3

                                                    ; con los valores 10, 20 y 30

tres        movlw  20                ; respectivamente

                movwfreg2

dos        movlw  30

                movwfreg3

Recordemos que en el mapa de memoria los registros 0x0C, 0x0D y 0x0E fueron nombrados como reg1, reg2 y reg3 respectivamente. Ahora simularemos los tres registros para ver como se cargan mediante el registro de trabajo W, (utilizamos W por que los valores 10, 20 y 30 son valores constantes). Repito, esto es una simulación bien a lo bruto, así que vamos a suponer que en vez de 10 cargo 1, en lugar de 20 cargo 2 y en lugar de 30 cargo 3, hago esto, solo con fines didácticos así podrás comprenderlo mejor.

http://r-luis.xbot.es/pic1/imagen/regcarg.gif

Lo que acabas de ver, fue la carga de los registros reg1, reg2 y reg3. Ahora verás como se comienza a decrementar cada uno de esos registros, primero reg3, luego reg2 y finalmente reg1.

tres        movlw  20                ; respectivamente

                movwfreg2

dos        movlw  30

                movwfreg3

uno        decfsz   reg3,1        ; Aquí se comienza a decrementar

                goto      uno             ; Cuando reg3 llegue a 0

                decfsz   reg2,1        ; le quitare 1 a reg2

                goto      dos             ; cuando reg2 llegue a 0

                decfsz   reg1,1        ; le quitare 1 a reg1

                goto      tres             ; cuando reg1 llegue a 0

                retlw     00                ; regresare al lugar

                                                    ; de donde se hizo la llamada

Veamos, decfsz reg3,1 esto es, decrementa reg3, si al decrementar te da cero saltéate una línea. El 1 que sigue a reg3, indica que guarde el valor de reg3 decrementado en el mismo reg3, es comoooo…. contador=contador-1

goto, es saltar y goto uno es saltar a la etiqueta uno. En esta pequeña vuelta estoy decrementando reg3 hasta que se haga cero.

Cuando reg3 llegue a 0 decrementaré reg2 en una unidad, volveré a cargar reg3 y lo decrementaré nuevamente para recién restarle otra unidad a reg2, y así… hasta que reg2 se haga cero. Cuando eso ocurra decrementaré reg1 en una unidad, cargaré nuevamente reg2 y reg3, para luego decrementarlos de nuevo, todo esto ocurrirá hasta que reg1 se haga igual a cero.

http://r-luis.xbot.es/pic1/imagen/regdec.gif

Esta rutina de retardo, aunque parezca absurda y larga nos permite ver como se enciende y se apaga el LED, de lo contrario no podríamos notar la diferencia, o lo veríamos apagado o encendido, ya que la velocidad es demasiado alta si estamos trabajando con un XT de 4 MHz. Finalmente nos queda la última instrucción:

;——————————————

                end                            ; se acabó

;——————————————

Una vez cargado el programa en el PIC, necesitarás ver el programa funcionando, por lo que deberás armar este circuito.

El pin 4 (MCLR) está conectado por lo del Reset, para que se estabilicen los niveles de tensión.

LAS HERRAMIENTAS:

PROGRAMADOR DE PIC:

Buen usaremos el programador de Pablin I &  Pablin II, yo en mi caso use en programador Pablin I, para hacer estos ejercicios.

Programador PIC Pablin

Si bien son muchos los circuitos disponibles en la Web que permiten programar microcontroladores PIC decidimos tomar lo mejor de cada uno de ellos y elaborar uno propio con las características que lo hacen propio para nuestro país (componentes económicos y fáciles de conseguir, software fácil de usar y en español).

El programador PIC Pablin permite leer y grabar PICmicros de 8 y 18 pines así como memorias EEPROM seriales.

Dispone de un zócalo de 18 pines el cual permite conectar, tal como se ve en la plantilla, tanto PIC’s como memorias EEPROM seriales. Los PIC’s de 18 pines se colocan ocupando la totalidad del zócalo mientras que los PIC’s de 8 pines se colocan ocupando la parte superior del zócalo. En tanto las memorias seriales se colocan una hilera anterior al fin del zócalo (el pin 1 de la memoria debe coincidir con el 5 del zócalo).

El LED marcado como «Enc.» permite observar que el sistema se encuentra alimentado mientras que el LED marcado como «PIC» se enciende indicando que es seguro insertar o quitar un chip (PIC o memoria) y se apaga por instantes breves cuando una lectura o programación de un PIC está en curso. Mientras este último LED este apagado no se debe quitar o insertar ningún integrado del zócalo.

El funcionamiento del circuito es muy simple: los pines del puerto paralelo 2, 3, 5 y 10 permiten interconectar el circuito con la PC. El pin 2 es el encargado de traer los datos (desde la PC hacia el integrado). El pin 3 es el envío de los pulsos de reloj (desde la PC hacia el integrado). En tanto el pin 10 permite a la PC leer los datos desde el programador. El pin 5, por último, es el encargado de controlar la tensión de programación (Vpp) necesaria para cuando queremos leer o escribir en un PIC.

Los microcontroladores PIC se programan utilizando el mismo protocolo que las memorias EEPROM seriales, por consiguiente el programador sirva tanto para PIC’s como para memorias. La tensión de programación VPP es necesaria para indicarle al PIC que deseamos leerlo o programarlo. Si en este pin (que es compartido con la entrada de RESET del micro) ponemos masa el PIC sufre un reset, si ponemos el pin en alto (5v) el PIC trabaja normalmente mientras que si ponemos el pin a 12v el PIC se inicializa en modo programación, quedando dos de los pines de E/S destinados a datos (SDA) y reloj (SCL).

El integrado 74LS04 está formado internamente por seis buffers inversores. Estos nos permiten por un lado obtener niveles TTL a su salida y por el otro no cargar de forma excesiva al puerto. Algunos programadores, como el NOPPP utilizan diodos y resistencias para conectar el PIC directamente el puerto paralelo. Esto funciona en muchas computadoras de escritorio con fuentes poderosas pero en la mayoría de las portátiles que no disponen de tanta corriente el funcionamiento es errático o directamente no funciona. Gracias a la utilización de este buffer podremos utilizar el circuito en cualquier puerto paralelo ya sea de una computadora de escritorio o en un portátil. Se colocan las compuertas en serie para obtener a la salida el mismo nivel de entrada, sin invertir. Las resistencias de 1K dan seguridad al sistema para evitar que circule corriente excesiva.

El control de la tensión de programación lo efectúa el transistor NPN. Estando el pin 5 del puerto paralelo a masa (en 0) tendremos al transistor abierto por lo que la corriente proveniente de +V (12v) pasará por el diodo LED el cual no encenderá y se portará como un diodo común polarizado en directa, pasará por la resistencia limitadora de corriente del LED la cual no ofrecerá mucha resistencia y será inyectada al PIC en su terminal MCLR/VPP. Poniendo en 1 el bit que controla el pin 5 del puerto paralelo, en cambio, el transistor se cierra y hace circular masa hacia el PIC haciendo, además, encender el LED al quedar a masa el otro extremo de la resistencia limitadora de corriente.

El circuito requiere como única alimentación 12V de continua con una corriente de 200mA. Puede usarse cualquier fuente universal siempre que se respete la polaridad. De tener una fuente de mas tensión (13.5v como mucho) no hay problema, se la puede utilizar sin inconvenientes. No es necesario que la fuente sea regulada. Si se tiene una fuente de 12V con mas corriente 1A o incluso mayor se la puede utilizar también sin inconvenientes.

Para conectarlo a la PC se puede utilizar un conector hembra centronics para circuito impreso (igual al que tienen las impresoras) o un cable directo hacia el macho DB25.

HAGO RECORDAR QUE YO USE LA DB25 MACHO NO LA QUE DICE AQUÍ ES LO MISMO Y FUNCIONA IGUAL. Y MAS ECONÓMICO A LA LARGA. COMO TODO CIRCUITO PRUEBA EN LA TABLAS DE PRUEBA O PROTOBOARD.

Vemos la foto del prototipo terminado, en nuestro caso optamos por poner un segundo zócalo para las memorias seriales y dejar el zócalo grande para los PIC’s. La resistencia de 1K demás junto al integrado quedó de la etapa de práctica pero no tiene conexión a ninguna parte.

El programa

El programa que recomendamos para este programador es el IC-Prog dado que reúne varias características mas que interesantes:

·         Es muy fácil de usar

·         Interface con botones de acceso rápido a las principales funciones

·         Permite ver el ASM del programa que se esta por cargar en el PIC (si ! lo obtiene desde el HEX)

·         Tiene varios idiomas, entre ellos español

·         Dispone de cinco espacios de memoria (Buffers) para poder tener hasta cinco programas simultáneos.

·         Dentro de una única ventana reúne memoria de programa, memoria EEPROM y bits de configuración.

·         Hay actualizaciones periódicas con funciones nuevas y problemas resueltos.

·         Funciona tanto bajo Windows95 como Windows XP así como en versiones intermedias.

Vemos a continuación una captura de pantalla del programa, haciendo click sobre ella se lo puede descargar.

Para configurarlo sólo es necesario:

1.    Descargar el icprog.

2.    En esa misma pagina descargue IC-Prog NT/2000 driver (mas conocido como el driver)

3.    Ahora descomprime el icprog en (c:icprog) a mismo descomprime el driver.

4.    Ahora procesamos a abrirlo, te saldrá un ventana solo dale aceptar.

5.     Ahora te saldrá la configuración del programador-pablin.

6.    Donde dice PROGRAMMER seleccionamos Propic2Programmer.

7.      Ahora donde dice INTERFACE ponemos WINDOWS API(ESTO ES PARA XP) y si tuviéramos win 95-98-me lo dejamos tal como estaba.

8.      Ahora donde dice COMMUNICATION damos clic en INVERT MCLR. (invertir master clear)

9.      Ahora donde dice I/O delay, se puede ir reduciendo pero recomiendo no bajarse hasta la numero 5. Debes bajarlo si te tira error en la verificación del programa.

10.  Ahora le damos aceptar.

11.  Nos tirara varios mensajes de erro aceptemos(en todo el proceso de configuración)

12.  Ahora en el menú nos vamos donde dice SETTINGS ahora  donde dice OPTIONS.

13.  Ahora miremos en las pestañas donde dice MISC hacemos clic

14.  Ahora miremos donde dice ENABLE NT/2000/XP DRIVER, hacemos clic y nos saldrá otro mensaje y le damos donde dice YES. Y ahora nos saldrá otro mensaje y nos pregunta si queremos instalar el driver, le damos en YES.

15.  Ahora si ya nos saldrá los erros, ahora si ya tenemos el  ICPROG, configurado.

16.  Ahora si queremos que el ICPROG este en español nos vamos SETTINGS, buscamos al pestaña donde dice LANGUAGE y seleccionaos el español y listo.

17.  Ahora si cerremos el programa, conectemos nuestro programador y abrimos el programa.

Pagina:  www.ic-prog.com

Aclaración:


Nosotros utilizamos un regulador de tensión 7805 de 1A dado que es lo que teníamos a mano, pero puede utilizarse un regulador 78L05 (los de 300mA que tienen forma de transistor) sin problemas y con la ventaja de ocupar mucho menos espacio
(bueno yo probé con el transistor y no me función no muy bien., recomiendo conservar lo que 7005, recuerden que hay caídas de tensión.)

NOTA:

¿COMO VERIFICAR SI MI PROGRAMADOR ES BUENO?

–          Nos vamos en AJUSTES luego PRUEBA HARDWARE.

–          Ahora donde dice HABILITAR MCLR, damos clic y debe apagarse un led, y funciona  bien nuestro programador esta bien, y ya podemos poner nuestro PIC. Y a programar.

PRECUACION:

–          DEBEN ESTAR ENCENDIDO LOS DOS LED (DEBE TENER EL PROGRAMA ABIERTO)

–          SI ALGÚN LED ESTA APAGADO NO PONGA EL PIC YA QUE SE QUEMARA IRREMEDIABLEMTE, Y SI TIENE EL PIC Y SI NO ESTA ENCENTIDO LOS DOS LED NO SAQUE EL PIC. HASTA QUE PRENDA LOS DOS LED.

–          Si te tira error en la verificación del hex cargado en el pic,  verifica si tu fuente tiene 12 voltios. Recuerda que yo preferí usar 12 voltios y poco mas por que siempre hay caída de tensión.


 

¿COMO SE USA EL PROGRAMA ICPROG?

Bueno la respuesta es muy simple baje la ayuda en la pagina la ayuda esta en español o sea no hay escusa para leerlo.

Pagina:  www.ic-prog.com

¿QUE PROGRAMA USO PARA HACER PARA HACER EN ASM?

Primera opción (la que yo uso):

Eso me pregunte yo también, entonces  recurrí a san google, y me encostre varios programas, pero no me gusto ya que era software comprado, entonces recordé que tenia un programa llamado de software libre llamado NOTEPAD++.

Link:  http://sourceforge.net/project/showfiles.php?group_id=95717&package_id=102072

http://notepad-plus.sourceforge.net/

Pasos para usar el programa:

Bueno es muy sencillo, creo que la mayoría ha usado el blok de notas de Windows, es parecido solo que esta lleva una pequeña diferencia.

Que esta se ejecuta DOSWINDOWS  Y ANSI.  Que es lo que queremos. Y además es compatible con unos 30 lenguajes de programación y dentro de ellos esta lo que queremos el ASSEMBLY para crear nuestro asm.

Ahora como usarlo es muy fácil.

–          Primero nos vamos donde dice lenguaje y hacemos clic y buscamos seleccionamos,  ASSEMBLY.

–          Ahora deberías poner las instrucciones del primer ejerció adjunto a este tutorial, el encendió y apagado de un led. Y debería cambiar de color cada uno de las instrucciones.

–          Para guardar el asm simplemente  nos vamos en archivo, luego en guarda como y buscamos donde dice TIPO = Luego buscamos donde dice ASSEMBLY (*.ASM), damos clic y ponemos el nombre del archivo y ya tendríamos nuestro asm.

–          Eso es todo

Algunas capturas.

 Segunda opción:

Pero si prefieres puedes usar el edit de Windows.

–          Hacemos clic en inicio luego en ejecutar

–          Luego en ejecutar ponemos EDIt y presionamos enter.

–          Y se abrirá una ventana, para los que ya ha  usado Windows 95 – 98 – 2000 , le parecerá familiar ya que es simplemente todo lo mismo explicado anteriormente solo que esto a veces consume todo el recurso de la PC, mas creo yo que tiene un BUG.

–          La misma forma de guarda,  e hace como la anterior solo que esto no me gusta su interfaz.

Capturas:

Una vez ahí puedes escribir tu código…, por último lo guardamos seleccionando el menú Archivo –> Guardar como –> led1.asm No olvides el .asm


Publicado en INTRODUCCION A LOS MICROCONTROLADORES | Comentarios desactivados en MICRONTROLADORES

pic 16f84

Introducción

Ya hemos mencionado que el microcontrolador no es como cualquier otro circuito integrado. Cuando salgan de la producción de la mayoría de los circuitos integrados están listos para ser incorporado en los dispositivos que no es el caso con microcontroladores. Con el fin de «hacer» microcontrolador para realizar una tarea, tenemos que decirle exactamente lo que debe hacer, o en otras palabras, tenemos que escribir el programa microcontrolador ejecutará. Vamos a describir en este tutorial las instrucciones que componen el ensamblador, o de nivel inferior programa de  para microcontroladores PIC.

Conjunto de instrucciones en PIC16xxx microcontrolador familia

Juego completo que incluye 35 instrucciones que se recogen en el siguiente cuadro. Una de las razones de tal número reducido de instrucciones radica fundamentalmente en el hecho de que estamos hablando de un microcontrolador RISC cuyas instrucciones están bien optimizado teniendo en cuenta la velocidad de trabajo, la sencillez y la arquitectura de código compacto.

La transferencia de datos

Transferencia de datos a un microcontrolador se realiza entre el trabajo (W) y un registro «f'» registro que representa a cualquier lugar en la RAM interna (independientemente de si esas son especiales o registros de propósito general). En primer lugar tres instrucciones (ver en el cuadro siguiente) para proporcionar una constante está escrito en registro W (MOVLW es corta para mover a Literal W), y para los datos a ser copiados de registro W en RAM y los datos de RAM para ser copiada en W registro (o en la misma ubicación de memoria RAM, al punto que sólo el estado de cambios de Z). La instrucción CLRF escribe constante 0 en f’ registro, y escribe CLRW constante 0 en registro W. instrucción SWAPF intercambios lugares de los 4 bits nibbles campo dentro de un registro.

Aritmética y la lógica

De todas las operaciones aritméticas, como la mayoría de PIC microcontroladores apoya y sólo resta otra parte. Banderas C, DC y Z se establecen en función de un resultado de adición o substracción, pero con una excepción: desde la substracción se realiza como adición de un valor negativo, C bandera es inversa a raíz de una sustracción. En otras palabras, se trata de establecer si la operación es posible, y si reinicio mayor número se restará de una más pequeña.

Logica unidad de PIC tiene capacidad de realizar operaciones AND, OR, XOR, complementando (COMF) y la rotación (RLF y RRF). Las instrucciones que gire el registro contenido mover bits dentro de un registro a través del  C de un espacio hacia la izquierda (hacia el bit 7), o hacia la derecha (hacia el bit 0). Bit que «sale» de un registro que está escrito en el  C, y el valor de C bandera está escrito en un poco sobre el «lado opuesto» del registro.

Bit operaciones

Instrucciones BCF BSF y hacer la limpieza o el establecimiento de un bit en cualquier lugar de la memoria. Aunque esto parece una operación sencilla, se ejecuta en la CPU de modo que primero lee el byte en su conjunto, los cambios un poco en él y, a continuación, escribe en todo el byte en el mismo lugar.

Dirección de un programa (saltos & retardos)

 Instrucciones GOTO, CALL y RETURN se ejecutan de la misma manera que en todos los demás microcontroladores, sólo pila es independiente de RAM interna y se limita a ocho niveles.
‘RETLW k’ instrucción es idéntica a la instrucción RETURN, salvo que antes de regresar de un subprograma de una constante definida por la instrucción de operandos está escrito en W registro. Esta instrucción nos permite diseñar fácilmente el aspecto de las tablas (list). Mayormente utilizamos los datos de la determinación de nuestra posición en la tabla añadiendo a la dirección en la que comienza la tabla y, a continuación, leemos que los datos de ubicación (que se encuentra normalmente en la memoria del programa).

El cuadro puede ser formado como un subprograma que consiste en una serie de ‘RETLW k’ instrucciones, donde «k» constantes.

 

ain

 

Lookup

 

 

 

 

 

 

Molov 2

Call lookup

Addwf PCL,f

Retlw k

Retlw k1

Retlw k1

        

         

         

Retlw kn

Escribimos la posición de un miembro de nuestra mesa en el registro W, y el uso de la instrucción CALL que llamar a un subprograma que crea la tabla. Primera línea subprograma ADDWF PCL, f añade la posición de un registro W miembro de la dirección a partir de nuestra instrucion, que se encuentra en PCL registro, por lo que obtener la dirección real de datos en la memoria del programa. Cuando regresan después de un subprograma que tendremos en el registro W al contenido de una tabla dirigida miembro. En un ejemplo anterior, constante ‘k2’ será en W registro después de un retorno de un subprograma.

RETFIE (Retorno de la Interrupción – Activar la Interrupción) es una vuelta de interrumpir la rutina y se diferencia de sólo una vuelta en el sentido de que se ajusta automáticamente a GIE (Global Interrupción Habilitar) bits. Tras una interrupción, este bit es automáticamente limpiado. Como interrumpir comienza, sólo el valor del contador de programa se pone en la parte superior de una chimenea. No almacenamiento automático de registro de valores y la situación se presta. Saltos condicionales se sintetizan en dos instrucciones: BTFSC y BTFSS. Dependiendo un poco en ‘f’ registro que se está poniendo a prueba, las instrucciones saltar o no saltar en los próximos programa de instrucción.

Periodo de ejecución de instrucciones.

Todas las instrucciones se ejecutan en un ciclo condicional salvo rama instrucciones si la condición es verdadera, o si el contenido del contador de programa se cambió por algunos instrucción. En ese caso, la ejecución requiere de dos ciclos de instrucción, y el segundo ciclo se ejecuta como un NOP (no operación). Cuatro relojes oscilador forman un ciclo de instrucción. Si está usando un oscilador con frecuencia 4MHz, el tiempo normal de la ejecución de una instrucción es de 1 ? s, y en caso de ramificación condicional, período de ejecución es de 2 ? s.

Lista de palabras

f           cualquier ubicación de memoria en un microcontrolador
W        registro de obra
b          posición poco a ‘f’ registro
d          destino poco
label    de grupo de ocho caracteres que marca el inicio de una parte del programa
TOS     parte superior de la pila
[]         Opción
       Posición dentro de poco registro

* 1 Si el puerto de E / S está operando fuente, a condición de microcontrolador pins se lee
* 2 Si esta instrucción se ejecuta en TMR registro y si d = 1, asignado a prescaler del temporizador que automáticamente se borrará
* 3 Si la PC se modificó, o resultado de la prueba = 1, la instrucción fue ejecutado en dos ciclos.

Ya estamos a la parte más interesante e importante del manejo de un microcontrolador(pero primero debemos de tener nuestro grabador): las instrucciones. Nuestro microcontrolador, como ya sabemos, pertenece a la gama media y es de tipo RISC; esto quiere decir que tiene un juego de instrucciones reducido, en concreto de 35. Estas 35 instrucciones o nemónicos (en inglés mnemonics y a su vez proveniente del juego de palabras: Nem On Icks) serán la base de funcionamiento del PIC. Al igual que los bits de los registros, será imposible aprendernos todas y a la vez su funcionamiento, pero a la hora de codificar nuestros programas deberemos tenerlas en cuenta.

Las instrucciones fundamentalmente se dividen en tres tipos. Esta división viene dada por el tipo de datos con los que trabajan:

 

         Instrucciones orientadas a los bytes (byte-oriented operations)

         Instrucciones orientadas a los bits (bit-oriented operations)

     –         Operaciones con literales y de control (literal and control operations)

Publicado en INTRODUCCION A LOS MICROCONTROLADORES | 2 comentarios

Linus explica porqué la gente no se pasa a Linux

En una larga entrevista concedida a la Linux Foundation, Linus Torvalds ha hablado del pasado, presente y futuro de Linux, y ha comentado las razones por las cuales según su opinión Linux sigue sin triunfar en el escritorio: la gente está contenta con cómo están las cosas.

En la entrevista Torvalds confirmó que su verdadero interés era el de hacer que Linux triunfase en la informática personal, la informática de escritorio que usa la amplia mayoría de la gente. Sin embargo, las cosas no están saliendo como él podría desear, y eso se debe a una realidad eterna y palpable: mejor lo malo conocido que lo bueno por conocer, afirma en su entrevista con Linux Foundation.

“Si haces cosas de forma distinta a Windows, incluso en el caso de que las hagas mejor, no importa. Lo mejor es peor si es diferente”

El razonamiento de Linus es aplastante: no importa que Linux pueda ser mejor o peor: la inercia de los usuarios de Windows, que se encuentran a gusto con un sistema que les es muy familiar les impide considerar otras opciones, aunque estas sean mejores.

“El escritorio es también el apartado en el que la gente se pone nerviosa si algo cambia, de modo que es realmente difícil entrar en este mercado por que la gente está acostumbrada a lo que sea que utilizaran antes, y en la mayoría de los casos eso es Windows”.

De hecho, este razonamiento también se puede aplicar al reducido éxito de Windows Vista, un sistema operativo que tiene sus defectos pero que cuyo mayor problema es precisamente que algunos de los cambios han echado para atrás a los usuarios, que ya se habían acostumbrado a la forma de trabajar con Windows XP.

la verda debemos de quedarnos pensando, ya que la mayoria de hoy en dia, las personas, utilizamos linux por que la verda ya hay asistentes graficos, mas bien solo lo que estamos haciendo es pasarnos a otro windows, ya se que es linux(cualquiere distro) = windows, si es parecedio, solo que si lo hacemos de forma diferente a como trabajos en windows, nos asusta mucho y nos vamos otra vez a windows, mas bien actuamos solo por que trabajamos de otra forma que windows, pero recordaremos que linux es igual a windows solo que se direrencia, es que el libre, y como el principio basico del pensamiento humano es buscar al la verdad, felicidad y sobre todo la libertad, atrevemonos a cambiar, y usas GNU/linux pasate de una vez y si encuetras dificultades recorda que hay cientos de personas dispuestos a ayudarte, sin pedir nada a cambio, soloq que apoyes mas a este movimiento, el movimiento del software libre, y si esto no te vastara recuerda que hay miles de programadores trabajando por ti para que tengas un SO calidad, respetando los standares mundiales, y si al final no te gusta pasate a windows.

A mi me gusto gnu/linux por dos razanes:

— es libre.

— y cumple el 100% de mis actividades.

y sobre todo duermo bien sabiendo que he tomado la desicion correcta.

Primera parte de la entrevista con Linux Foundation

Segunda parte de la entrevista con Linux Foundation (vía Wired)

Publicado en FILOSOFIA DEL EGO | Comentarios desactivados en Linus explica porqué la gente no se pasa a Linux

10 formas de mantener GNU/Linux seguro

Tomado de Linuxeando & Familia, que a su vez fue tomado de Nierox, que lo tomo de Tecnologías Libres, quien tal vez lo tradujo desde el artículo original, que alguna vez fue enlazado por ZDNet e incluso estuvo en la portada en Digg, que alguna vez quise traducir pero me dió pereza, y al cual solo le he corregido algunos errores de ortografía. Pues eso, aquí lo tienen:

  1. Cerrar sesión o bloquear pantalla. Cuando se termine de trabajar, cerrar sesión para evitar que otros puedan entrar al sistema y mas en entorno multiusuario. Si se necesita que otros aplicaciones sigan ejecutándose, bloquear la pantalla puede ser una buena opción.
  2. Tener los permisos correctamente. muchas veces nos vemos tentado a hacer un chmod 777 para que funciona una aplicación, lo ideal es solo darle los permisos necesarios y no permisos extras.
  3. La fortaleza de la contraseña. Una buena contraseña es recomendable en muchos aspectos especialmente en distribuciones como Ubuntu que ofrece mucho más acceso a los usuarios.
  4. Aplicaciones para compartir archivos son un riesgo. Tal vez no lo sea tanto para compartir archivos en la casa con la familia pero si lo es para el trabajo. Personas ajenas pueden tener acceso a información delicada para usted y para su empresa. Por lo tanto no se recomienda instalar aplicaciones para compartir archivos, y si se hace asegurarse de configurarlas muy bien.
  5. Actualizar con regularidad. Aprovechar la rapidez con que en Linux se corrigen fallan de seguridad e instalar las actualizaciones en el momento en que se presenten.
  6. Instalar un Antivirus. Mas que por la seguridad del propio Linux es por la seguridad de otros SO en el envío de algún archivo infectado.
  7. Hacer uso de SELinux. Es una colección de parches que modifican el núcleo del sistema operativo Linux, fortaleciendo los mecanismos de control.
  8. /home en una partición diferente. Al encontrarse el directorio /home en su ubicación estandar (en el directorio raiz del sistema), cualquiera que acceda a tu máquina sabrá de inmediato donde están tus datos. Además en una perdida de sistema o formateada no hay problema porque los datos están en una partición diferente. Si tienes /home en la misma partición de tu sistema… ponerla en otra partición es facilísimo.
  9. Dejar los servicios innecesarios. Si tu equipo no actúa como servidor entonces deshabilite ciertos servicios como httpd, ftpd y sshd.
  10. Evitar el exceso de confianza. Tal vez el más importante, como diría Fyodor: “Los ataques por e-mail y vía Web son con frecuencia multiplataforma. Los usuarios de Linux son tan vulnerables como los de Windows al phishing y otras formas avanzadas de fraude”
Publicado en GNU/LINUX UBUNTU | Comentarios desactivados en 10 formas de mantener GNU/Linux seguro

¿Es Ubuntu un Monopolio?

Esto de verdad es algo que se venía venir. Y es que no es un secreto para nadie que Ubuntu actualmente es la distribución más usada, al punto tal de casi volverse un monopolio en el ámbito de Linux, es lo que pienso (y no soy el único).

De por sí todos conocemos al “grande” del software Microsoft con su inmenso monopolio, y su afán de atacar a GNU/Linux… e inclusive Google parece que será un nuevo monopolio (no nos digamos mentiras, ya lo es).

Y como siempre, no nos damos de cuenta de ello hasta que ya pasa. Ubuntu es considerada una de las mejores distros actualmente y, aunque existen literalmente cientos de distribuciones (más de 500 según el último recuento de DistroWatch), tan sólo un puñado tienen relevancia real, y de esas 5 ó 6 grandes distribuciones destaca claramente la solución creada por Canonical, que ya ha “conquistado” el corazón de millones de usuarios.

Recordemos que uno de los pilares de y el software libre es la variedad de opciones a escoger, y si en dado caso Ubuntu se vuelve la única referencia notable o única opción en el mundo de Linux, su futuro lo veo mal… muy mal.

Ahora analicemos otro punto (y este ya es una opinión muy mia) . La cantidad de usuarios que usan Ubuntu como su primera distribución lo hacen por uno de los siguientes motivos:

  • Vieron un video en el Youtube (u otro medio) , en donde ven una vistosa e impresionante interfaz gráfica (por supuesto me refiero a Beryl, Compiz, XGL, para el ejemplo da igual).
  • Se enteraron de que sin más ni más, te mandan los CDs completamente gratis a tu casa.
  • Es una de las pocas que está pensada para novatos, y personas que no han usado ninguna distro en su vida.
  • Se hartaron de Windows y quieren usar un sistema operativo mejor, LIBRE, seguro, LIBRE… ahhh y quiere ser libre. Y además quiere APRENDER y llenar su ser de conocimiento.

Pero no nos digamos mentiras, de las cuatro opciones mencionadas anteriormente, desgraciadamente la última es la menos probable. Comenzando por que la LIBERTAD no nos importa para nada, así que no vengan a decir que usan Ubuntu porque es libre (que sí, en principio lo es), y si no me crees: clic aquí y aquí, la verdad no nos basta con el OGG, ni con formatos de video libres, o… ¿cómo vamos a dejar de ver esa hermosa colección de que me costo tanto recopilar cuando usaba Windows? Y mucho menos nos importa que los drivers para mi nVidia no sean libres, ya que para lo único que instale Ubuntu fue para instalar eso tan bonito que llaman Beryl.

Lo siento si alguno se sintió aludido, pero reitero: es mi opinión. Finalizando: Canonical ha hecho un buen trabajo de su parte, haciendo que cada vez más usuarios se pasen desde Windows a Ubuntu (al menos por probar)… desafortunadamente de TODOS esos usuarios, muy pocos entienden de verdad el sentido de .

sacado de:

http://casidiablo.net/%c2%bfes-ubuntu-un-monopolio/ 

———————————————————————————-

bueno yo comparto la opinio(mrkc): bueno con respecto al trabajo de canonical es bueno, solo que poblema de ahora se da en que la mayoria de formatos de musica, videos, & otros pertenecen al software privativo, y por esa razon se tiene que usar los famosos codecs, pero si la mayoria supiera que hay formatos libre como ogg, para audio y video, y de mejor calidad que la mp3, pero en fin debemos de probar otras distribuciones, yo siguo esta distribucion kubuntu y ahora me pase a xubuntu, pero en fin yo creo que esta siendo mas aceptado ubuntu, ya que ofrece facilidad de entorno grafico, y las pc de la mayoria de usuario es muy bajo, ya que como sabran Windows vista pide mucho, y al leer por internet la mayoria mira que ubuntu pide una pc con pocos recursos, y mira los videos por youtube, y por esa razon se pasa, pero como dice arriaba ellos no miran como es la filosfia de gnu linux, bueno yo uso software privativo(visual basic, macromedia & otros) pero ahora estoy buscando alternativas, ya me encotre uno parecido a basic solo que con licencia GPL, y espero comprenderlo para usarlo, pero en fin la  mayoria esta ahora al tanto de ubuntu, pero ojala no se vuelva un monopolio y acaba siendo mas aceptado por otras distribuciones que ofrecen calidad de aplicaciones, yo lo uso para aprender como se usa les enseño a mis amigos.

Publicado en GNU/LINUX UBUNTU | Comentarios desactivados en ¿Es Ubuntu un Monopolio?