Autor Tema: INICIACION PIC Y SIMULACIONES  (Leído 405 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado xenam

  • PIC10
  • *
  • Mensajes: 18
INICIACION PIC Y SIMULACIONES
« en: 20 de Noviembre de 2020, 06:36:21 »
Hola,

Acabo de tomar las labores de programación y diseños de PIC realizado previamente por un compañero que no sigue en la empresa.
Dicho compañero realizaba los diseños electrónicos en Proteus y la programación en Niple. El se arreglaba para sacar el tema para adelante y con éxito.
El tema es que yo he empezado a trastear tanto con proteus y con niple, pero prefiero realizar la programación en lenguaje C o en ensamblador.
Lo que pregunto o pido opinión es sobre como encaminar mis trabajos respecto a software y lenguaje para posterior poder realizar simulaciones de los programas realizados.
En este momento he empezado a mirar algon ec CCS C compiler y luego simulándolo en Proteus.
No se si hay la opción poder realizar una simulación del programa sin simularlo en Proteus, un debugger o algo por el estilo.
Estoy abierto a otras plataformas o software ya que acabo de iniciarme en este mundillo y ahora es el momento de encauzar bien la ruta de trabajo.

Muchas gracias a tod@s!!

Conectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8030
Re:INICIACION PIC Y SIMULACIONES
« Respuesta #1 en: 20 de Noviembre de 2020, 09:03:09 »
Proteus es un simulador que te va a servir para cualquier compilador que uses.
Personalmente no me gusta mucho lo de Proteus debido a que para que se vea bien (ya que la simulación es muy lenta) es necesario quitar delays y otras cosas.

Por otra parte CCS es rápido para configurar algunos módulos y crear programas. Pero tiene algunas desventajas a mi gusto, que son la de no poder escribir programas en varios archivos sin llenarlo de includes con archivos .c (Proyectos un poco grandes rápidamente se vuelve ilegible). Hace algunas cosas por detrás para facilitar la programación al usuario, por ejemplo la separación de interrupciones en distintas funciones, si usas Standard_io y usas input en una salida, te lo cambia a entrada automáticamente, etc.

Por otra parte tenes XC8, del fabricante Microchip, si estas acostumbrado al ASM, entonces esto es una mezcla, ya que vas a configurar modulo por modulo (a no ser que uses algún configurador MCC creo que se llama) vía registros, luego es todo C, cumple y se maneja como casi todo compilador C que existe a diferencia de CCS, diríamos que es un ANSI C. El cual permite separar en archivos, vincularlos con .h, etc.
Lo malo y tal vez por ahí bueno, de este compilador, es que por ejemplo tenes que bajarte una librería LCD, revisarla, probarla y luego ya tenes tu librería. Poco a poco te vas armando de  librerías. Si vas a usar USB, también es mas complicado que CCS, ya que en el otro USB te llevara a lo sumo 3 líneas de código para tener algo básico funcionando. En este compilador no PERO con conocimientos podes implementar LO QUE QUIERAS en USB. Mientras que en CCS estas atrapado en lo que ellos te dan.
Otra cosa buena que posee XC8 es que podes "simular" y ver los registros/variables paso a paso en las instrucciones C, entonces podes probar parte de tu código paso a paso para ver que este funcionando bien la lógica. Sin necesidad de un extra como Proteus.
Yo por ejemplo lo se usar para cuando hago códigos para acá en el foro. Creo un proyecto únicamente de prueba, escribo el código , lo simulo paso a paso para ver que todo este funcionando como quiero y no metí ningún valor mal, y lo paso en el foro. O para probar algo. Obviamente esto lo hago si poseo el tiempo necesario jejeje, sino bloc de notas y que se arregle el que recibe el codigo.

Después tenes que pensar en los dispositivos que permiten compilarse. Mientras XC8 permite todos, CCS y Niple no.
Creo que queda mas en cuestión de gustos de cada uno.

Existen otros como mikroC, que también son una mezcla entre XC8 y CCS, un intermedio, también pago como CCS.

Desconectado xenam

  • PIC10
  • *
  • Mensajes: 18
Re:INICIACION PIC Y SIMULACIONES
« Respuesta #2 en: 20 de Noviembre de 2020, 11:26:26 »
Proteus es un simulador que te va a servir para cualquier compilador que uses.
Personalmente no me gusta mucho lo de Proteus debido a que para que se vea bien (ya que la simulación es muy lenta) es necesario quitar delays y otras cosas.

Por otra parte CCS es rápido para configurar algunos módulos y crear programas. Pero tiene algunas desventajas a mi gusto, que son la de no poder escribir programas en varios archivos sin llenarlo de includes con archivos .c (Proyectos un poco grandes rápidamente se vuelve ilegible). Hace algunas cosas por detrás para facilitar la programación al usuario, por ejemplo la separación de interrupciones en distintas funciones, si usas Standard_io y usas input en una salida, te lo cambia a entrada automáticamente, etc.

Por otra parte tenes XC8, del fabricante Microchip, si estas acostumbrado al ASM, entonces esto es una mezcla, ya que vas a configurar modulo por modulo (a no ser que uses algún configurador MCC creo que se llama) vía registros, luego es todo C, cumple y se maneja como casi todo compilador C que existe a diferencia de CCS, diríamos que es un ANSI C. El cual permite separar en archivos, vincularlos con .h, etc.
Lo malo y tal vez por ahí bueno, de este compilador, es que por ejemplo tenes que bajarte una librería LCD, revisarla, probarla y luego ya tenes tu librería. Poco a poco te vas armando de  librerías. Si vas a usar USB, también es mas complicado que CCS, ya que en el otro USB te llevara a lo sumo 3 líneas de código para tener algo básico funcionando. En este compilador no PERO con conocimientos podes implementar LO QUE QUIERAS en USB. Mientras que en CCS estas atrapado en lo que ellos te dan.
Otra cosa buena que posee XC8 es que podes "simular" y ver los registros/variables paso a paso en las instrucciones C, entonces podes probar parte de tu código paso a paso para ver que este funcionando bien la lógica. Sin necesidad de un extra como Proteus.
Yo por ejemplo lo se usar para cuando hago códigos para acá en el foro. Creo un proyecto únicamente de prueba, escribo el código , lo simulo paso a paso para ver que todo este funcionando como quiero y no metí ningún valor mal, y lo paso en el foro. O para probar algo. Obviamente esto lo hago si poseo el tiempo necesario jejeje, sino bloc de notas y que se arregle el que recibe el codigo.

Después tenes que pensar en los dispositivos que permiten compilarse. Mientras XC8 permite todos, CCS y Niple no.
Creo que queda mas en cuestión de gustos de cada uno.

Existen otros como mikroC, que también son una mezcla entre XC8 y CCS, un intermedio, también pago como CCS.

Buenas,

Te agradezco tu restpuesta.Esta bien saber tu opinión y experiencia sobre el tema.
Me ha parecido interesante lo que comentas sobre la "limitacion" a la que te expones en caso de querer ampliar en CCs y por otra parte me gusta la posibilidad de poder simular el código en el mismo XC8.
Lo del tema de las librerias tambien parece una ventaja ya que te evitas amontonar todas las lineas de subprogramas y asi facilitar la lectura o segumiento del programa.
Al fin y al cabo, con proteus diseñaria el circuito electronico y depurando el programa en XC8 lo maximo poisble,una vez realizado el circuito fisicamente pues seria depurar o arreglar los detalles y pequeños errores de la programación.
Nuestra intencion es trabajar con Microchip, coger la base y el tiempo dirá lo restante.
Empezare a probar con XC8 y asi podre ir depurando mis pequeños primeros programas e ir aprendiendo poco a poco.

 

Desconectado xenam

  • PIC10
  • *
  • Mensajes: 18
Re:INICIACION PIC Y SIMULACIONES
« Respuesta #3 en: 20 de Noviembre de 2020, 11:39:01 »
Proteus es un simulador que te va a servir para cualquier compilador que uses.
Personalmente no me gusta mucho lo de Proteus debido a que para que se vea bien (ya que la simulación es muy lenta) es necesario quitar delays y otras cosas.

Por otra parte CCS es rápido para configurar algunos módulos y crear programas. Pero tiene algunas desventajas a mi gusto, que son la de no poder escribir programas en varios archivos sin llenarlo de includes con archivos .c (Proyectos un poco grandes rápidamente se vuelve ilegible). Hace algunas cosas por detrás para facilitar la programación al usuario, por ejemplo la separación de interrupciones en distintas funciones, si usas Standard_io y usas input en una salida, te lo cambia a entrada automáticamente, etc.

Por otra parte tenes XC8, del fabricante Microchip, si estas acostumbrado al ASM, entonces esto es una mezcla, ya que vas a configurar modulo por modulo (a no ser que uses algún configurador MCC creo que se llama) vía registros, luego es todo C, cumple y se maneja como casi todo compilador C que existe a diferencia de CCS, diríamos que es un ANSI C. El cual permite separar en archivos, vincularlos con .h, etc.
Lo malo y tal vez por ahí bueno, de este compilador, es que por ejemplo tenes que bajarte una librería LCD, revisarla, probarla y luego ya tenes tu librería. Poco a poco te vas armando de  librerías. Si vas a usar USB, también es mas complicado que CCS, ya que en el otro USB te llevara a lo sumo 3 líneas de código para tener algo básico funcionando. En este compilador no PERO con conocimientos podes implementar LO QUE QUIERAS en USB. Mientras que en CCS estas atrapado en lo que ellos te dan.
Otra cosa buena que posee XC8 es que podes "simular" y ver los registros/variables paso a paso en las instrucciones C, entonces podes probar parte de tu código paso a paso para ver que este funcionando bien la lógica. Sin necesidad de un extra como Proteus.
Yo por ejemplo lo se usar para cuando hago códigos para acá en el foro. Creo un proyecto únicamente de prueba, escribo el código , lo simulo paso a paso para ver que todo este funcionando como quiero y no metí ningún valor mal, y lo paso en el foro. O para probar algo. Obviamente esto lo hago si poseo el tiempo necesario jejeje, sino bloc de notas y que se arregle el que recibe el codigo.

Después tenes que pensar en los dispositivos que permiten compilarse. Mientras XC8 permite todos, CCS y Niple no.
Creo que queda mas en cuestión de gustos de cada uno.

Existen otros como mikroC, que también son una mezcla entre XC8 y CCS, un intermedio, también pago como CCS.

Ahora que he empezado a mirar algo, me basta con instalar XC8  o tengo que instalar tambien MPLAB X IDE?
Estoy un poco perdido...

Conectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8030
Re:INICIACION PIC Y SIMULACIONES
« Respuesta #4 en: 20 de Noviembre de 2020, 11:56:39 »
Probá ambos... luego toma una decisión. Con ambos trata:

Por ejemplo. Proba hacer una UART con el PIC en ambos.
Proba manejar una interrupción de algo
Manejar los puertos, leer un puerto o un bit, etc.
I2C también.
Timers.
Proba usar varios archivos para un proyecto.

Con respecto a los módulos 1000 veces es mejor CCS, pero si lo vas a simular en Proteus, entonces podes hacer el paso a paso ahí y por ahí perdes esa "ventaja" del XC8 sin sentido.
Como te dije, es cuestión de gustos. Personalmente me siento que tengo mas el control y por eso me voy a XC8, además de ser "parecido" al menos en C con los otros compiladores de las otras empresas como ST, TI, etc. (aunque cada uno tiene su propia API).

Pero nuevamente: Probalos.

Lo digo una y otra vez porque no estoy tratando de imponer mi idea, sino darte cuales son las ventajas de uno y otro. CCS es genial, y haces cosas super rápido, te hago otra comparación.

En XC8 para el I2C:
I2C Hardware:
Leer el datasheet para configurar el modulo, Crear el codigo registro por registro, calcular el baudrate, etc.
Crear la función para enviar el dato y/o leerlo si es que no usas interrupciones
Si usas interrupciones, es crear la maquina de estado del I2C.
Crear la función para enviar el STOP.
I2C Software:
Bajarte alguna librería, revisar la librería, acomodarla para que funcione con el micro y ponerlo a funcionar.

Por supuesto, si tenes las librerías ya realizadas, es menos trabajo, un poco menos. Y si usas el configurador también.


En CCS
Escribir una linea arriba indicando que vas a usar el I2C y en los pines que queres, si son del modulo es por hardware, si no lo son, automáticamente te crea por software el I2C.
En la misma linea escribís la velocidad, solo se calcula el valor a cargar en el registro y lo hace todo solo.
Tenes las funciones ya listas.

3 segundos te llevo en CCS hacer el I2C. Sin actividad previa.


Citar
Ahora que he empezado a mirar algo, me basta con instalar XC8  o tengo que instalar tambien MPLAB X IDE?
Estoy un poco perdido...

Tenes que instalar:
MPLAB X IDE, es el IDE como su nombre lo indica, no tiene ningun compilador.
XC8, este es el compilador C de los micros de 8 bits.
XC16, este es el compilador C de los micros de 16bits.  PIC24 y dsPIC
XC32, este es el compilador C de los micros de 32bits.   PIC32

Para los pics de 8 bits necesitas bajar: el IDE y el XC8, y si usas el configurador grafico tenes que instalar el plugin dentro del MPLAB X. Primero instalas el IDE y luego el compilador.
ab_channel=MicrochipTechnology

Desconectado SIRSAIMON

  • PIC10
  • *
  • Mensajes: 2
Re:INICIACION PIC Y SIMULACIONES
« Respuesta #5 en: 03 de Febrero de 2021, 01:19:00 »
BUENAS NOCHES, SOY LUIS DE  VENEZUELA, ESTOY NUEVO CON LO PIC Y SU PROGRAMACIÓN, ESTOY REALIZANDO UN PROYECTO PARA REPARAR MI CALENTADOR DE AGUA A GAS, EL CUAL SE LE DAÑO EL MODULO DE CONTROL Y ME HE DISPUESTO A FABRICARLE UNO, ESCOGÍ EL PIC ENANO 12F629, POR TAMAÑO Y COMODIDAD, HE ESCRITO UN PROGRAMA EN MICROCODE QUE TRABAJA PERO CON UN ERROR, YO NECESITO 3 ENTRADAS DIGITALES GPIO.0 , GPIO.1  Y  GPIO.3  (FLUJO DE AGUA, LLAMA Y TEMPERATURA MÁXIMA RESPECTIVAMENTE Y 3 SALIDAS GPIO.2, GPIO.4  Y GPIO.5 (VÁLVULA GAS , PILOTO DE ALTA TENSIÓN Y ALARMA. TODO BIEN HASTA AHI, EL PROBLEMA ES QUE EL MCLR NO LOGRO DESHABILITAR PARA PODER USA EL GPIO3 COMO ENTRADA EN SU DEFECTO DEBO COLOCAR 5V FIJO PARA QUE EL RESTO DEL PROGRAMA TRABAJE.SI UDS PUDIERAN DAR LUZ A MI PROBLEMA , NECESITARIA COMO SERIA MI ENCABEZADO PARA EL PIC12F629 REALIZADO EN MICROCODE.DE ANTEMANO MUCHAS GRACIAS

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1227
Re:INICIACION PIC Y SIMULACIONES
« Respuesta #6 en: 03 de Febrero de 2021, 12:06:13 »
Que tal SIRSAIMON,

Primero que nada bienvenido al foro. Y seguidamente te recominedo que al escribir una consulta no lo hagas todo en "MAYUSCULAS", si no lo sabías eso se considera como si estuvieras gritando y exigiendo algo.
Contestando a tu solicitud, sería bueno que colocaras tu código de otra manera no podemos ayudarte mejor, ya que podrás comprender que no somos "videntes" los cuales podemos visualizar tu código a través de una bola de cristal. Jejeje.
Por favor no me mal entiendas, es solo para mostrarte las pautas correctas al hacer una consulta y así poder ayudarte mejor.
POr lo que comentas parece que no estás configurando correctamente los fuses de tu microcontrolador, loq ue puedes hacer directamente en el código del PICBasic (Microcode es solo un IDE, no es un compilador).
Eseos fuses también los puede cambiar al momento de descargar tu archivo .hex usando tu programador de PICs. No mencionas cuál sea este, si Pickit2, pickit3, u otro.

Saludos y espero puedas comprender y ayudarnos a ayudarte.

elreypic.

Desconectado SIRSAIMON

  • PIC10
  • *
  • Mensajes: 2
Re:INICIACION PIC Y SIMULACIONES
« Respuesta #7 en: 03 de Febrero de 2021, 15:20:11 »
Buenas tardes foro, saludos.
acato sus lineamientos.
como lo mencione estoy realizando un control para un calentador de agua basado en el pic12f629,  de 8 pines, ya tengo el programa listo, lo implemente en un pic 16f84a usando solo 6 pines del puerto B, (RB0 a RB5) 3 primeros como entrada y los otros 3 como salidas,  trabaja perfecto en el simulador proteus y en físico. Me dispongo a utilizar el mismo cod, modificando algunas cosas para usarlo en el pic12f629, listo y se compila bien (uso microcode como editor y pickit2 como compilador) pero al simularlo no trabaja bien puesto que el MCLR todavia esta activo y es necesario conectarle +5v en gpio.3 para que el pic trabaje, elimimamdo una entrada que es necesaria.
he utilizado CONF_WORD= 31c4 donde deberia estar no habilitado el MCLR, tambien he probado @device MCLR_OFF y nada
el programa no importa ya que no es el problema, la falla por asi decir es en la palabra de configuracion  CONF_WORD
gracias por su valiosa ayuda

 

Desconectado Eduardo2

  • PIC18
  • ****
  • Mensajes: 424
Re:INICIACION PIC Y SIMULACIONES
« Respuesta #8 en: 03 de Febrero de 2021, 16:02:11 »
Te olvidaste de adjuntar el código fuente y el archivo en Proteus.

Conectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8030
Re:INICIACION PIC Y SIMULACIONES
« Respuesta #9 en: 03 de Febrero de 2021, 17:01:29 »
O tal ves cuando lo esta grabando el mismo grabador pone los FUSES que el desea.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1227
Re:INICIACION PIC Y SIMULACIONES
« Respuesta #10 en: 03 de Febrero de 2021, 20:16:19 »
Buenas tardes foro, saludos.
acato sus lineamientos.
como lo mencione estoy realizando un control para un calentador de agua basado en el pic12f629,  de 8 pines, ya tengo el programa listo, lo implemente en un pic 16f84a usando solo 6 pines del puerto B, (RB0 a RB5) 3 primeros como entrada y los otros 3 como salidas,  trabaja perfecto en el simulador proteus y en físico. Me dispongo a utilizar el mismo cod, modificando algunas cosas para usarlo en el pic12f629, listo y se compila bien (uso microcode como editor y pickit2 como compilador) pero al simularlo no trabaja bien puesto que el MCLR todavia esta activo y es necesario conectarle +5v en gpio.3 para que el pic trabaje, elimimamdo una entrada que es necesaria.
he utilizado CONF_WORD= 31c4 donde deberia estar no habilitado el MCLR, tambien he probado @device MCLR_OFF y nada
el programa no importa ya que no es el problema, la falla por asi decir es en la palabra de configuracion  CONF_WORD
gracias por su valiosa ayuda

Según lo que leo estás intentado definir los fuses desde el código fuente. Pero para hacerlo así necesito saber algo antes de poderte guiar con el procedimiento correcto.
Como te dije anteriormente estás utilizando el compilador PIcBasic (Pickit es un programador no un compilador). ¿Cuál versión estás usando del compilador PICBasic V2.60 o anterior o version 3.0 o superior?
Si estás usando la versión 2.60 o anterior, esta version hace uso de dos posibles ensambladores, el MPASM (que es de microchip) o el assembler llamado PM. Asegúrate de que estás usando el MPASM. Mira la siguiente figura:

 

* PBPSetASM.JPG
(31.38 kB, 375x304 - visto 38 veces)


Agrega la siguiente línea en tu código fuente:

@ __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_OFF & _CP_OFF

Pero para que esto funcione, necesitas editar un archivo que se llama 12F629.INC que está localizado en tu carpeta de instalación del PicBasic.

Abre ese archivo con un bloc de notas y busca la siguiente línea:

__config _INTRC_OSC_NOCLKOUT & _WDT_ON & _MCLRE_ON & _CP_OFF

Pues simplemente agrega un ";" al inicio de esa línea como se muestra a continuación:

;__config _INTRC_OSC_NOCLKOUT & _WDT_ON & _MCLRE_ON & _CP_OFF

Guarda el archivo y lista intenta recompilar. Eso cargará en tu archivo hex, los fusibles.

La manera más sencilla es que una vez que cargues el archivo hex al PIckit2 simplemente modifica los fuses antes de grabar el código en el PIC. Como se muestra en la siguiente figura (Das click a configuración):

 

* CONFIG.JPG
(35.36 kB, 674x225 - visto 38 veces)


Y los modificas de acuerdo a tus necesidades.

Espero esto te sirva.

elreypic.
« Última modificación: 03 de Febrero de 2021, 20:19:53 por elreypic2 »