TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: aitopes en 21 de Diciembre de 2006, 12:34:49

Título: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: aitopes en 21 de Diciembre de 2006, 12:34:49
Bueno, antes de lo que pensaba esta lista la segunda entrega del tutor de PIC SUMULATOR IDE. En estos dos capitulos veremos la presentacion de todas las herramientas que incorpora, y luego, a partir del capitulo cinco comenzaremos con el editor BASIC y los primeros programas, que ademas nos serviran para usar las herramientas vistas en estos dos capitulos.
Como siempre, espero las criticas.

Saludos!
------------------------
Capitulo 03 - Herramientas (primera parte):
PIC SIMULATOR IDE posee una nutrida caja de herramientas. Estas se encuentran agrupadas en la opción Tools del menú principal, y a continuación veremos en que consiste cada una de ellas.
La primera es el visor de la memoria de programa (Program Memory Viewer), modulo que podemos invocar presionando CTRL-M en cualquier momento. Se lista la memoria completa, cuya extensión dependerá del microcontrolador que tengamos seleccionado, y se pueden ver tres columnas: dirección (Address), valor en hexadecimal de esa dirección (Hex. Value) y el valor en binario (Binary Value). Al igual que las demás herramientas, existe un check box que permite poner la ventana correspondiente siempre al frente (Always On Top).

(http://www.ucontrol.com.ar/Articulos/picsimuide/Image13.jpg)

La segunde herramienta disponible recibe el nombre de EEPROM Memory Editor, y como su nombre indica, nos permite modificar los valores almacenados en la memoria EEPROM del microcontrolador. El contenido de la EEPROM se lista en 16 columnas numeradas del 0 al 15, y por supuesto, su extensión depende del micro seleccionado. Haciendo click sobre cualquiera de los valores se puede cambiar su contenido, que se encuentra en formato hexadecimal.

(http://www.ucontrol.com.ar/Articulos/picsimuide/Image14.jpg)

Hardware Stack Viewer nos permite conocer el valor de cada uno de los niveles del stack (generalmente llamado pila en español). Esto puede resultar útil para depurar los programas que tienen muchas subrutinas anidadas o cuando sospechamos que hay desbordamientos del stack. Además de ver el nivel de stack (Stack Level), el contenido en hexadecimal (Hex Value) y en binario (Binary Value), en la parte inferior de la ventana una etiqueta nos informa de cual es el nivel apuntado en cada paso de la simulación.
(http://www.ucontrol.com.ar/Articulos/picsimuide/Image15.jpg)

La herramienta Microcontroller View es una de las mas útiles, ya que en una ventana separada (y que como las demás se puede poner en frente de todas) nos muestra un esquema del micro elegido, con el rotulo correspondiente a cada pin, y lo mas importante, el estado en cada momento de la simulación de cada uno. En caso de ser un pin E/S nos muestra el estado (ON/OFF) que presenta, y si se trata de una referencia de voltaje muestra el valor asignado. Además, en cada pin hay un botón que permite cambiar el estado presente en el (T, supongo que por "toggle", que significa "cambiar"), y los resultados se toman como entradas para la simulación.

(http://www.ucontrol.com.ar/Articulos/picsimuide/Image16.jpg)

Existe también una vista alternativa del estado de los registros especiales, que pude resultar mas cómoda en algunos casos. Es la correspondiente a la opción Alternative SFR Viewer, y muestra en columnas la dirección en hexa del registro, el nombre "de pila" del mismo (TMR0, PCL, STATUS, etc), y el valor del mismo, en hexadecimal y en binario.
(http://www.ucontrol.com.ar/Articulos/picsimuide/Image17.jpg)

PIC Disassembler es ni mas ni menos que un desensamblador, que nos brinda un texto con el contenido en assembler del programa cargado en la memoria del PIC SIMULATOR IDE. Este listado se genera independientemente del origen del programa, es decir, podemos obtener el código a partir de un archivo ya compilado con cualquier compilador (con extensión .HEX) o a partir de un .HEX generado con el compilador BASIC incluido en el paquete. Se muestra, por cada instrucción,  la dirección (Address), el opcode y la instrucción (instruction). Ideal para aprender assembler a partir de instrucciones BASIC, por ejemplo.

(http://www.ucontrol.com.ar/Articulos/picsimuide/Image18.jpg)

El manejador de "puntos de inspección" o Breakpoint Manager es una herramienta que permite definir hasta 10 puntos en los que la simulación se interrumpirá (luego podremos reanudar la ejecución desde ese punto) para analizar con tranquilidad el estado de los registros, los puertos, etc. Hay un par de opciones adicionales, como el botón que permite eliminar todos los breakpoints definidos (Clear All Breakpoints) o mantener siempre en foco el contador de programa (PC o Program Counter). El contenido de la ventana es el código assembler en el mismo formato que comentamos en la herramienta anterior.

(http://www.ucontrol.com.ar/Articulos/picsimuide/Image19.jpg)

Además de los diez puntos de parada anteriores, se pueden definir cinco puntos especiales, mediante la herramienta Special Breakpoints. La diferencia entre esta y la anterior herramienta (y lo que la hace tan especial) es que en este caso los puntos de inspección se fijan mediante una condición (Break Condition) o por el estado de algún registro (Register Address). Los botones SET y DEL permiten habilitar y deshabilitar individualmente cada una de las condiciones.

(http://www.ucontrol.com.ar/Articulos/picsimuide/Image20.jpg)

La herramienta assembler tendrá su capitulo propio, por que es aquí donde se escribe el código en dicho lenguaje para luego compilarlo.

(http://www.ucontrol.com.ar/Articulos/picsimuide/Image21.jpg)

Al igual que el editor de assembler, el BASIC tendrá varios capítulos dedicados a el, ya que estudiaremos cada una de las instrucciones disponibles. Podemos adelantar que se trata de un editor bastante decente, con verificación de sintaxis y coloreado de palabras reservadas y comentarios, y que la sintaxis del BASIC es compatible en un 90% con otros BASICs mas populares, como PBP o PROTON. Desde aquí podemos compilar y cargar en la memoria del simulador el archivo HEX resultante en un solo paso.

(http://www.ucontrol.com.ar/Articulos/picsimuide/Image22.jpg)


Capitulo 04 - Herramientas (Segunda parte):
Las herramientas siguientes son las que podemos usar como "periféricos" del microcontrolador, para simular las E/S, o analizar su estado. La primera de este grupo es la llamada 8xLED Board que es ni mas ni menos que un grupo de 8 LEDs virtuales, a los que podemos asignar un puerto y un bit dentro de el, de manera que se enciendan o apaguen en tiempo real de acuerdo al estado de dichos pines al ejecutar la simulación.

(http://www.ucontrol.com.ar/Articulos/picsimuide/Image24.jpg)

El Keypad Matrix es ni mas ni menos que un teclado matricial de 4 filas y cuatro columnas que podemos configurar con total flexibilidad para utilizarlo en nuestros proyectos simulados. Se puede elegir el pin de cada fila y columna, y dinámicamente, durante la simulación, el estado de cada tecla. En los ejemplos de los capítulos dedicados a la programación usaremos esta herramienta a menudo.

(http://www.ucontrol.com.ar/Articulos/picsimuide/Image25.jpg)

El LCD Module es la versión virtual del típico display LCD con controlador Hitachi que usamos en todos nuestros proyectos. Es posible configurar completamente su funcionamiento, mediante el botón Setup. Al presionarlo, la ventana aumenta su tamaño y aparecen una serie de cuadros de selección desde donde podremos elegir el numero de filas y columnas del display, el color del mismo, a que puerto están conectadas las líneas de datos y si son 4 u 8, y donde están conectadas (puerto y pin) las líneas RS, R/W y E. También se pueden configurar los tiempos de delay del display, para que su simulación sea lo mas fiel posible a la realidad.

(http://www.ucontrol.com.ar/Articulos/picsimuide/Image26.jpg)

Graphical 128x64 LCD Module es el equivalente de la herramienta anterior, pero para simular LCDs gráficos de 128x64 pixeles. Las opciones de configuración también se esconden detrás del botón Setup, y son muy similares a las ya vistas, incorporándose la posibilidad de configurar el puerto y pin de las líneas CS1 y CS2.

(http://www.ucontrol.com.ar/Articulos/picsimuide/Image27.jpg)

Mediante las herramientas Hardware UART Simulation Interface, Software UART Simulation Interface y PC's Serial Port Terminal podremos simular una comunicación vía RS-232. Se trata de herramientas muy completas que tendrán su propio capitulo, por lo que momentáneamente nos limitamos a mencionarlas.

(http://www.ucontrol.com.ar/Articulos/picsimuide/Image28.jpg)
(http://www.ucontrol.com.ar/Articulos/picsimuide/Image29.jpg)
(http://www.ucontrol.com.ar/Articulos/picsimuide/Image30.jpg)


Otras dos herramientas sumamente útiles para comprender que esta haciendo en cada momento el microcontrolador son el osciloscopio (Oscilloscope) de cuatro canales, con posibilidad total de configuración de cada uno de ellos, y el Signal Generator (generador de señales) también de cuatro canales y con posibilidad de generar pulsos de periodo y relación cíclica ajustable. Por supuesto, habrá capítulos en que haremos uso de ellas.

(http://www.ucontrol.com.ar/Articulos/picsimuide/Image31.jpg)
(http://www.ucontrol.com.ar/Articulos/picsimuide/Image32.jpg)

       
No podía faltar el modulo con los displays LED de 7 segmentos, presentes en una gran cantidad de proyectos. En este caso, la herramienta 7-Segment LED Display Panel nos proporciona 4 dígitos completamente configurables (nuevamente mediante el botón Setup presente en cada uno de ellos), y podemos elegir el pin al que esta conectada cada uno de los segmentos, si son de ánodo o cátodo común, etc.

(http://www.ucontrol.com.ar/Articulos/picsimuide/Image33.jpg)


La ultima herramienta es una útil lista con el valor de cada una de las variables presentes en nuestro programa. Recibe el nombre de Watch Variables (ver variables) y es una lista de texto donde en una columna aparece el nombre de la variable en cuestión y en otra su valor. Esta lista se actualiza constantemente durante la simulación.

(http://www.ucontrol.com.ar/Articulos/picsimuide/Image34.jpg)
Título: Re: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: PalitroqueZ en 21 de Diciembre de 2006, 16:21:56
Hola aitopes, muy bueno estos ultimos capitulos que sacaste sobre el pic simulador IDE, ¿esa ventana es nueva, la del lcd de 128x64? y la verdad es que me enredé tratando de hacer un breakpoint.

Salu2
Pedro
Título: Re: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: aitopes en 21 de Diciembre de 2006, 17:16:19
Hola amigo!
Es probable que sea de las versiones 5.xx en adelante, a lo mejor Dogflu66 te puede aclarar el tema (o tambien la pagina del fabricante). El tema es que yo lo descubri hace poco, justamente cuando compre uno de esos displays para jugar. Ya le vamos a dedicar un capitulo a ese tema ... ;)
Supongo que por unos 5 o 6 dias no voy a poder avanzar en estas guias, pero lo que si se es que comenzamos con la programacion, y a medida que vaya haciendo falta vamos explicando las herramientas.
Saludos!
Título: Re: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: dogflu66 en 21 de Diciembre de 2006, 19:23:16
No recuerdo de que version es el display glcd, pero puede que lleve como un año +- incluido en el entorno.
he probado la simulacion y funciono correctamente, pero en la realidad todavia no he podido conseguir uno.
Título: Re: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: aitopes en 21 de Diciembre de 2006, 20:00:01
Hola Dogflu!
En la realidad funcionan perfectamente. Cuando compre el display, lo probe primero con Mikrobasic, que justo lo habia descubierto y tiene incluso una libreria para eso....pero no lo pude hacer andar. Con PIC SIMULATOR IDE salio andando de una.
Tengo en un cuaderno el esquema de como lo conecte, asi que en algun capitulo de mas adelante vamos a ver como se hace. ;)
Saludos.
Título: Re: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: dogflu66 en 22 de Diciembre de 2006, 08:42:09
jeje, En estos dos ultimos años nunca se me quedo colgado y todas las simulaciones funcionaron correctamente, asi que apostar en contra seria perder, dejemos lo al 99% confiable...  :mrgreen:
Título: Re: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: PalitroqueZ en 09 de Enero de 2007, 16:20:02
Hola a todos. Sigo haciendo pruebas con el PIC SIMULATOR, y tengo una duda, ¿como hago para cambiar la frecuencia de la simulación a 48MHZ?, tengo unos codigos para el 18F4550 y cuando intento cambiar el en simulador no me deja, se queda en 4MHZ a pesar que los fuses estan bien programados.


Salu2
Pedro
Título: Re: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: aitopes en 09 de Enero de 2007, 16:58:22
En el PIC SIMULATOR IDE para pics 16Fxxx lo cambio desde la opcion que esta en la imagen. Nunca use el 18F.... :(
Título: Re: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: PalitroqueZ en 09 de Enero de 2007, 17:07:35
Exacto aitopes, desde allí es que lo he tratado de cambiar, sin éxito. no se si el simulador ya asume los 48Mhz desde los configuration bits, yo compilo usando el lenguaje c, y luego cargo el .hex, pero es que los tiempos son muy grandes (varios uS). Voy a probar compilando un código en asm y ver cual es el tiempo del ciclo de instrucción.

Salu2
Pedro
Título: Re: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: dogflu66 en 09 de Enero de 2007, 20:25:29
Si me pasas el codigo lo pruebo en mi version de simulador.
Título: Re: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: PalitroqueZ en 10 de Enero de 2007, 12:17:56
Hola Amigos. Cargué un .hex compilado en ensamblador y me dá el mismo resultado :(, cada ciclo consume 1uS, quiere decir que está asumiendo un clock de 4Mhz (4/4Mhz), volví a revisar los configuration bits y estan correctos (para una frec de CPU de 48Mhz).

en el adjunto está el código que usé está hecho en ensamblador (para ser exacto en los tiempos) y su correspondiente .hex



Salu2
Pedro
Título: Re: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: dogflu66 en 10 de Enero de 2007, 19:03:03
La frecuencia mas alta con ese micro es de 40Mhz, no me permite seleccionar una mas elevada.
Título: Re: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: MGLSOFT en 10 de Enero de 2007, 20:00:39
Hola Amigos. Cargué un .hex compilado en ensamblador y me dá el mismo resultado :(, cada ciclo consume 1uS, quiere decir que está asumiendo un clock de 4Mhz (4/4Mhz), volví a revisar los configuration bits y estan correctos (para una frec de CPU de 48Mhz).

en el adjunto está el código que usé está hecho en ensamblador (para ser exacto en los tiempos) y su correspondiente .hex



Salu2
Pedro

Perdona mi ignorancia y mi falta de compromiso (deberia haber leido la hoja de datos del PIC) pero donde dices:

Código: [Seleccionar]
CONFIG FOSC = XTPLL_XT, PLLDIV = 1,
Estas seguro que no configuras el oscilador interno como XT (menor o igual a 4 Mhz) y el divisor estaria en 1, por lo tanto serian solo 4 Mhz???

Marcos
Título: Re: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: Carli en 10 de Enero de 2007, 23:50:52
Ariel, en mis vacaciones hice un codigo con el Pic Simulator el cual simulo con el proteus y me funciona bien. El problema es cuando quiero simularlo con el pic simulator no anda y tampoco funciona en el microcontrolador, cargue el cristal, en tipo de micro y no me doy cuenta que me falta. :x

¿Que te falto explicarme?

Cabeza :D :D :D :D
 

Título: Re: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: aitopes en 11 de Enero de 2007, 08:29:38
"No anda" que significa?
Ni siquiera comienza y ada algun error?
O miras el LCD y "no pasa nada"? Si es este caso, recorda poner las demoras en 1 us o asi, por que si no las simulaciones se hace eternas....

Contames mas! Un abrazo, Ariel.
Título: Re: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: dogflu66 en 11 de Enero de 2007, 11:01:45
Define LCD_COMMANDUS = 2000   'Tiempo de espera despues de ejecutar un comando del lcd en uSeg.
Define LCD_DATAUS = 50   'Tiempo de espera despues de enviar un dato al LCD en uSeg.
Define LCD_INITMS = 1  '50  'Tiempo de espera despues de inicializar el Display, solo se ejecuta una vez en mSeg.
'****************************************************************************************************
Para que el LCD funcione mas rapido tanto en real como simulacion, las dos primeras lineas.
Para las simulaciones si utilizas LCD corriges la tercera linea a 1ms, luego para grabar el micro la colocas de nuevo a 50ms
si no puede que el display no funcione correctamente. De todas fomas el display del simulador se quejara, pero ignora el error.


Define SIMULATION_WAITMS_VALUE = 1  'Ignora los valores de Waitms
******************************************************************************************************
y para la simulacion si utilizas Waitms tienes que añadir esta ultima linea, que hace que el compilador ignore los Waitms, y
a la hora de programar el micro hay que eliminarla o los Waitms pasaran muy rapido en el hard.

Título: Re: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: dogflu66 en 11 de Enero de 2007, 11:04:44
y por ultimo recordar que el LCD incluso con esos valores mejorados tarda unos 14mSeg. en inicializarse.
Título: Re: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: PalitroqueZ en 11 de Enero de 2007, 11:30:16
La frecuencia mas alta con ese micro es de 40Mhz, no me permite seleccionar una mas elevada.


no he probado con esa frecuencia, eso me hace dudar si el PIC SIMULATOR puede simular tiempos de ciclos de instrucción de acuerdo a la frec. del CPU, aunque con los 16F no había tenido problema, voy a seguir intentando.  :?

Hola Amigos. Cargué un .hex compilado en ensamblador y me dá el mismo resultado :(, cada ciclo consume 1uS, quiere decir que está asumiendo un clock de 4Mhz (4/4Mhz), volví a revisar los configuration bits y estan correctos (para una frec de CPU de 48Mhz).

en el adjunto está el código que usé está hecho en ensamblador (para ser exacto en los tiempos) y su correspondiente .hex



Salu2
Pedro

Perdona mi ignorancia y mi falta de compromiso (deberia haber leido la hoja de datos del PIC) pero donde dices:

Código: [Seleccionar]
CONFIG FOSC = XTPLL_XT, PLLDIV = 1,
Estas seguro que no configuras el oscilador interno como XT (menor o igual a 4 Mhz) y el divisor estaria en 1, por lo tanto serian solo 4 Mhz???

Marcos

si así es Marcos, esos 4Mhz son para la entrada del PLL. de allí viene XTPLL, después el PLL saca 96Mhz que se dividiran entre 2 de acuerdo al PLLDIV=1 y se tendran 48Mhz a la entrada del CPU. Todo esto lo saqué de acuerdo al esquema del bloque del oscilador:

(http://img397.imageshack.us/img397/1930/oscilatorconfiguratorkk4.th.jpg) (http://img397.imageshack.us/my.php?image=oscilatorconfiguratorkk4.jpg)

Salu2
Pedro

PD: pido disculpas a aitopes por salirme del tema original
Título: Re: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: MGLSOFT en 11 de Enero de 2007, 12:20:49
Entonces lo mas probable es que no pueda simular el PLL interno... :shock: :shock:

A proposito, muy ilustrativa la explicacion, hasta yo lo entendi, que nunca use el PLL por ignorancia, ahora me voy a animar...

Gracias!! :mrgreen:
Título: Re: GUIA: PIC SIMULATOR IDE Cap 3 y 4
Publicado por: Carli en 11 de Enero de 2007, 12:39:07
Ariel, el codigo es una secuencia de leds cuando lo simulo con el Proteus funciona bien, cuando lo quiero simular con el Pic simulador, prende el primer led y no sigue la secuencia, seguramente me falta configurar algo en el momento de la grabacion o cuando configuro el pic.

Te mando un gran abrazo y los espero.

Carlitos