You are on page 1of 16

Primeros pasos en Niple Proteus

Como ya sabemos, el Proteus es un potente laboratorio virtual con capacidad de simular una gran cantidad de microcontroladores de diversas firmas, tales como Motorola, Atmel y por supuesto Microchips. La gran ventaja de este laboratorio virtual es que una vez obtenido el cdigo .hex resultante de la compilacin de nuestro programa, el mismo se usa para programar virtualmente nuestro PIC en el Proteus y poder simular, depurar y ajustar el programa a nuestras exigencias. En este primer paso, lo que haremos es tanto la confeccin del hardware en el Proteus, como el software en Niple y la prueba de los mismos. Comenzaremos con la realizacin de un circuito que haga oscilar un Led, de manera tal que el mismo est encendido 1 Seg y apagado 500 mlSeg. Como vemos no tiene ningn tipo de condicionamiento, o sea, en cuanto el circuito se alimente, comenzar a funcionar hasta que se desconecte su alimentacin. Armado del hardware En la librera del Proteus elegiremos los siguientes componentes. PIC 16F84A RES LED GREEN

Y los colocaremos en la mesa de trabajo, ordenados como se ve en la figura siguiente.

A continuacin vamos al icono de terminales y colocamos una tierra (GROUND) para darle referencia de Vss al Led con respecto al PIC. Aclaramos que el microcontrolador ya est alimentado con Vcc para V+ y Vss para V- internamente por Proteus. Este seteo puede ser cambiado a gusto o necesidad del usuario. Curso Niple/Proteus Jos A.Biafore

El circuito ya cableado, quedara como se ve en la figura.

Se observan dos cosas destacables, la primera de ellas es el valor de la resistencia R1 de 10K que como sabemos con una alimentacin de 5V, difcilmente logremos excitar al Led, por lo que tenemos que modificar su valor, para ello con doble clic izquierdo sobre ella se abre la ventana de edicin del componente.

Y en el cuadro Resistance, cambiamos su valor de 10K a 220. El no colocarle unidad es indicativo de valores en ohms. Aceptamos con OK y se modifica el valor en nuestro circuito. Lo segundo que advertimos, es que el microcontrolador no tiene conectado el cristal ni los capacitaros de desacople en los pines 15 y 16 (OSC1/CLKIN y OSC2/CLKOUT). Curso Niple/Proteus Jos A.Biafore

El motivo es que para la virtualizacin, el valor del oscilador se fija desde la ventana de edicin del componente (Processor Clock Frequency).

Entonces, Para que estn los pines del mismo en el micro? La respuesta es, para que el Ares (un sub mdulo del Isis), sepa que debe realizar las pistas para el mismo en el circuito impreso, ya que, en ese mundo, el real, el microcontrolador, SI necesita de su cristal y sus capacitores. Lgicamente, el Ares lo har si y solo si, estos se conectaron en los pines del microcontrolador, an si sus valores son errados. Salvamos este circuito como Ejercicio 1 y pasamos a confeccionar el programa para cargar al microcontrolador. Abrimos el Niple y seleccionamos Nuevo Proyecto, a continuacin elegimos el microcontrolador 16F84A y la carpeta donde guardaremos este proyecto con su nombre. Luego se nos abre la siguiente pantalla de trabajo en donde comenzaremos a desarrollar el programa que controlar el Led. Recordemos que nuestro software est ntimamente ligado a nuestro hardware por lo que debemos recordar lo que se conect en cada lnea I/O del PIC para saber como realizar nuestro programa. En este caso no es problema por la simpleza del proyecto, pero imaginemos el control de un LCD Grafico con 13 pines interconectados con el microcontrolador. Anotar los mismos o mejor an realizar una impresin del circuito ayudar a evitar errores en los resultados que no sabremos hasta luego de realizar un anlisis del mismo si se deben a nuestro circuito o a nuestro programa. Continuemos con la tarea.

Curso Niple/Proteus

Jos A.Biafore

Tenemos en nuestro escritorio un ovalo de comienzo de programa que lo seleccionamos picando dentro de l con el ratn. A continuacin tenemos que definir los puertos a utilizar tal cual lo haramos en asembler, pero con Niple es mucho menos tedioso, ya que tenemos la herramienta de manejo de puertos en la barra de herramientas a la derecha del escritorio.

Con ella seleccionamos el puerto que deseamos configurar, en nuestro caso el Puerto B.

Curso Niple/Proteus

Jos A.Biafore

Por defecto Niple tiene al ejecutarse todos sus pines definidos como salida que particularmente en este caso es lo que necesitamos. Si desearmos que algn pin en particular fuera de entrada, solo tenemos que picar el casillero a su lado y seleccionar Entrada. Pulsando OK se pasa a nuestro escritorio de trabajo la seccin correspondiente a la definicin de funciones de los pines del puerto. Notemos que tambin se fijaron las funciones del Port A para que el mismo no permanezca desconfigurado y susceptible a captar ruidos elctricos que podran daarlo o afectar el funcionamiento del programa. Siempre que tengamos de antemano seleccionado el smbolo anterior, la unin entre ellos la har Niple en forma automtica, en caso de no ser as, se pica con el ratn en el punto interior central del smbolo origen (seleccionado) y se tira hasta el centro del smbolo destino.

Notemos que dentro de los smbolos se encuentra lo siguiente: A=XXXSSSSS y B=SSSSSSSS

Esta es la nomenclatura que utiliza Niple para indicar que el puerto B est configurado con sus 8 bits (pines) como Salida, mientras que el puerto A tiene sus 5 bits menos significativos (RA0 RA4) configurados como Salida y los otros 3 indefinidos X. Esto es as dado que el PIC 16F84 y 16F84A carece de estos bits en su puerto A. A continuacin y para asegurarnos que el Led inicie su estado en apagado, enviamos al bit o pin que lo maneja un cero lgico. Existen varias manera de realizar esta funcin, puede hacerse enviando un dato al puerto B en el cual dicho bit sea cero, hacer cero solo ese bit en particular o enviar al puerto B el contenido de un registro que a su vez est cargado con un byte el cal tenga ese bit a cero. Por simplicidad yo usar la primer opcin, o sea, enviar al puerto B el dato 00 en Hexadecimal, que tiene todos sus bits a cero. Port B = 00000000 hex Curso Niple/Proteus Jos A.Biafore

Para realizar esta tarea, como sub herramienta dentro de la opcin Puertos esta Escribir en Puerto.

Primero nos solicita seleccionar el puerto a enviar el dato, en nuestro caso el B, luego como ingresaremos el dato si en decimal, en binario o en hexadecimal. Dependiendo de la tarea a realizar es til cada tipo de dato. Y por ltimo el valor a enviar al puerto.

Al pulsar OK, se incorpora al programa el smbolo que se ve en la figura anterior.

Curso Niple/Proteus

Jos A.Biafore

Siguiendo con el enunciado de nuestro ejercicio, ahora tenemos que encender el Led por 1 segundo. Para encender el Led seguimos el mismo procedimiento anterior, pero ahora colocando el bit a 1. Podemos recurrir nuevamente a la herramienta Escribir en Puerto o copiar el bloque anterior, editarlo, modificarlo y colocarlo en el programa. Veamos esta manera mas elegante de usar las caractersticas del Niple. Seleccionamos el bloque a copiar y hacemos clic derecho con el ratn, desplegandose el men contextual que se ve en la siguiente figura.

Seleccionamos Duplicar y se genera un smbolo igual al anterior.

Curso Niple/Proteus

Jos A.Biafore

Lo ubicamos debajo del anterior y con el mtodo ya explicado, los interconectamos.

Nuevamente seleccionamos este ltimo bloque y le damos sobre l un clic derecho y elegimos Editar o doble clic izquierdo y se edita automticamente.

Modificamos el valor 00 por 01 (bit RB0 = 1) y damos OK. Ahora vamos a incorporar la rutina de espera de 1 segundo para mantener el bit RB0 en estado alto por ese tiempo. Utilizaremos en este caso la herramienta Temporizadores y dentro de ella la sub herramienta Tiempos por Ciclos.

Curso Niple/Proteus

Jos A.Biafore

Desplegandose la siguiente pantalla.

En donde seleccionamos Tiempo Fijo, en segundos con valor de 1, o sea una temporizacin de 1 segundo fijo. Se pueden seleccionar temporizadores de segundos, milisegundos y microsegundos. Al pulsar OK incorporamos el mismo al programa.

Curso Niple/Proteus

Jos A.Biafore

Seguidamente tenemos que apagar el Led, como ya intuimos, copiamos el bloque donde ya hacamos esta tarea y lo conectamos luego del temporizador de 1 segundo.

Igual tarea realizamos con el temporizador de Led apagado, aunque el mismo segn lo pedido debe ser de 500 mlseg, cosa que por el momento no nos preocupamos.

Ahora modificamos este ltimo temporizador con alguna de las tcnicas explicada y lo prefijamos en 500 milisegundos. Al editarlo, primero modificamos su base de tiempo de Segundos a Milisegundos y luego el valor de 1 a 500.

Curso Niple/Proteus

Jos A.Biafore

Y lo ingresamos al programa.

Solo nos resta cerrar el ciclo para que esta secuencia se repita infinitamente. Para realizar esto, seleccionamos el ltimo temporizador y desde su punto central, tiramos una lnea hasta la instruccin de encender el Led en donde soltamos el clic del ratn.

Curso Niple/Proteus

Jos A.Biafore

Podemos decir que nuestro programa est terminado, nos queda generar el asembler que es tarea de Niple y compilarlo, que le corresponde al Mpasmwin, proporcionado gratuitamente por MicroChips (www.microchips.com). Comencemos por lo primero, salvar lo que hemos hecho con Archivo-Guardar Proyecto y a continuacin:

Con lo que se abre la siguiente pantalla de configuracin.

Curso Niple/Proteus

Jos A.Biafore

En ella, destildamos la opcin Abrir el archivo ASM generado ya que no nos interesa ver el programa en assembler y verificamos que en Generar el archivo ASM est la ruta donde se encuentra nuestro proyecto. Si todo est en orden, pulsamos Codificar ASM y Niple se encargar del resto.

Primeramente nos da una estadstica informativa de la memoria libre que queda en el microcontrolador y la cantidad de instrucciones que ocup nuestro programa. Ahora con solo pulsar Terminar Niple se encarga de invocar al ensamblador Mpasmwin, siempre y cuando este se haya seleccionado como compilador por defecto, al momento de cargar el Niple en la PC.

Curso Niple/Proteus

Jos A.Biafore

Nuevamente, en Source File Name verificamos que sea el camino donde se encuentra nuestro programa, de no ser as, lo buscamos con Browse y a continuacin sin modificar ningn parmetro mas pulsamos Assemble con lo que comienza el proceso de ensamblado del archivo .asm, previamente creado por Niple, generndose de esta forma varios archivos, de los cuales solo nos interesa el .hex que es el nico que entiende el microcontrolador y consta de una sucesin de nmeros hexadecimales que a su vez es la codificacin de las instrucciones que forman nuestro programa. Pero todo esto es a titulo informativo, ya que con las herramientas que tenemos a nuestro alcance, Niple, Mpasmwin y Proteus, es totalmente transparente para nosotros y por lo tanto mas simple.

Curso Niple/Proteus

Jos A.Biafore

Como se ve en la figura anterior, el compilador nos informa de la cantidad de lneas ensambladas y el resultado de la misma fue 100% correcta. Ahora nos resta cargar el microcontrolador del circuito que hemos armado con el Proteus con el programa que hemos hecho con el Niple y compilado con el Mpasmwin y correr la simulacin para comprobar si realmente hace lo pedido. Para realizar la carga virtualizada del microcontrolador, desde el Proteus y con doble clic sobre el PIC se abre como ya sabemos el men de edicin del mismo, en donde vemos un lugar donde dice Program File:

Explorando con seleccionamos el archivo .hex producto de la compilacin efectuada en pasos anteriores. Nuevamente se puede observar, que se seleccion una frecuencia de reloj de 4MHz para este sistema. Con OK aceptamos estos cambios y ya estamos en condiciones de simular nuestro proyecto nmero 1. Al pie del escritorio de Proteus se encuentra la barra de simulacin. Donde la primera tecla corresponde a la orden de comenzar simulacin, sera como alimentar nuestro hardware, y la ltima detiene la misma. Las teclas intermedias, son para la simulacin por pasos de los programas y detencin de los mismos para la ubicacin de fallas en programas complejos, que estn lejos de ser vistos en estas primeras etapas de estudio. A continuacin se muestra una figura del programa corriendo en nuestro hardware, donde se aprecia el Led encendido, el Proteus en estado Run, el tiempo transcurrido desde el comienzo de la simulacin y los recursos de CPU consumidos. Espero que el proyecto ejecutado haya podido ser seguido y comprendido, de manera tal que tengan la suficiente confianza con Niple y Proteus y sobre todo en ustedes mismos, para modificar el mismo y aprender de ello y abordar nuevos proyectos. En este campo, cabe muy bien el dicho El lmite solo est en la imaginacin

Curso Niple/Proteus

Jos A.Biafore

Curso Niple/Proteus

Jos A.Biafore

You might also like