primeros pasos en niple

20
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 código .hex resultante de la compilación 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 confección del hardware en el Proteus, como el software en Niple y la prueba de los mismos. Comenzaremos con la realización 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 ningún tipo de condicionamiento, o sea, en cuanto el circuito se alimente, comenzará a funcionar hasta que se desconecte su alimentación. Armado del hardware En la librería 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. Curso Niple/Proteus José A.Biafore

Upload: jose-biafore

Post on 29-Oct-2015

136 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Primeros Pasos en Niple

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 código .hex resultante de la compilación 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 confección del hardware en el Proteus, como el software en Niple y la prueba de los mismos.Comenzaremos con la realización 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 ningún tipo de condicionamiento, o sea, en cuanto el circuito se alimente, comenzará a funcionar hasta que se desconecte su alimentación.

Armado del hardware

En la librería 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 continuación 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

Page 2: Primeros Pasos en Niple

El circuito ya cableado, quedaría 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 alimentación de 5V, difícilmente 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 edición 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

Page 3: Primeros Pasos en Niple

El motivo es que para la virtualización, el valor del oscilador se fija desde la ventana de edición del componente (Processor Clock Frequency).

Entonces, ¿Para que están los pines del mismo en el micro?

La respuesta es, para que el Ares (un sub módulo 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.Lógicamente, el Ares lo hará si y solo si, estos se conectaron en los pines del microcontrolador, aún 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 continuación 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 línea 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 aún realizar una impresión del circuito ayudará a evitar errores en los resultados que no sabremos hasta luego de realizar un análisis del mismo si se deben a nuestro circuito o a nuestro programa.Continuemos con la tarea.

Curso Niple/Proteus José A.Biafore

Page 4: Primeros Pasos en Niple

Tenemos en nuestro escritorio un ovalo de “comienzo de programa” que lo seleccionamos picando dentro de él con el ratón.A continuación tenemos que definir los puertos a utilizar tal cual lo haríamos 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

Page 5: Primeros Pasos en Niple

Por defecto Niple tiene al ejecutarse todos sus pines definidos como salida que particularmente en este caso es lo que necesitamos.Si desearámos que algún 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 sección correspondiente a la definición de funciones de los pines del puerto. Notemos que también se fijaron las funciones del Port A para que el mismo no permanezca desconfigurado y susceptible a captar ruidos eléctricos que podrían dañarlo o afectar el funcionamiento del programa.Siempre que tengamos de antemano seleccionado el símbolo anterior, la unión entre ellos la hará Niple en forma automática, en caso de no ser así, se pica con el ratón en el punto interior central del símbolo origen (seleccionado) y se tira hasta el centro del símbolo destino.

Notemos que dentro de los símbolos 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 continuación y para asegurarnos que el Led inicie su estado en apagado, enviamos al bit o pin que lo maneja un cero lógico.Existen varias manera de realizar esta función, 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 cúal tenga ese bit a cero.Por simplicidad yo usaré la primer opción, 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

Page 6: Primeros Pasos en Niple

Para realizar esta tarea, como sub herramienta dentro de la opción 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 símbolo que se ve en la figura anterior.

Curso Niple/Proteus José A.Biafore

Page 7: Primeros Pasos en Niple

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 características del Niple.Seleccionamos el bloque a copiar y hacemos clic derecho con el ratón, desplegandose el menú contextual que se ve en la siguiente figura.

Seleccionamos Duplicar y se genera un símbolo igual al anterior.

Curso Niple/Proteus José A.Biafore

Page 8: Primeros Pasos en Niple

Lo ubicamos debajo del anterior y con el método 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 automáticamente.

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

Page 9: Primeros Pasos en Niple

Desplegandose la siguiente pantalla.

En donde seleccionamos Tiempo Fijo, en segundos con valor de 1, o sea una temporización 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

Page 10: Primeros Pasos en Niple

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

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

Ahora modificamos este último temporizador con alguna de las técnicas 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

Page 11: Primeros Pasos en Niple

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 línea hasta la instrucción de encender el Led en donde soltamos el clic del ratón.

Curso Niple/Proteus José A.Biafore

Page 12: Primeros Pasos en Niple

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 continuación:

Con lo que se abre la siguiente pantalla de configuración.

Curso Niple/Proteus José A.Biafore

Page 13: Primeros Pasos en Niple

En ella, destildamos la opción 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 estadística 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

Page 14: Primeros Pasos en Niple

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 continuación sin modificar ningún parámetro mas pulsamos Assemble con lo que comienza el proceso de ensamblado del archivo .asm, previamente creado por Niple, generándose 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 sucesión de números hexadecimales que a su vez es la codificación 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

Page 15: Primeros Pasos en Niple

Como se ve en la figura anterior, el compilador nos informa de la cantidad de líneas 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 simulación 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 edición del mismo, en donde vemos un lugar donde dice Program File:

Explorando con seleccionamos el archivo .hex producto de la compilación 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 número 1.Al pie del escritorio de Proteus se encuentra la barra de simulación.

Donde la primera tecla corresponde a la orden de comenzar simulación, sería como alimentar nuestro hardware, y la última detiene la misma.Las teclas intermedias, son para la simulación por pasos de los programas y detención de los mismos para la ubicación de fallas en programas complejos, que están lejos de ser vistos en estas primeras etapas de estudio.A continuación 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 simulación 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 límite solo está en la imaginación”

Curso Niple/Proteus José A.Biafore

Page 16: Primeros Pasos en Niple

Curso Niple/Proteus José A.Biafore