Autor Tema: Al compilar con PBP en PIC16F628A y PIC16F648A genera diferente ocupación Flash  (Leído 8823 veces)

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

Desconectado betobono

  • PIC10
  • *
  • Mensajes: 18
Cordial saludo amigos, es un honor saludarlos. :)

Casi siempre he desarrollado proyectos con el PIC16F628A, pero ahora intento trabajar con el PIC16F648A por su mayor capacidad de memoria y tengo un problema que aún no logro resolver... Ojalá alguno tenga la respuesta, sería enorme su aporte...

Resulta que cuando compilo cualquier programa con el PIC16F648A, el número de palabras de memoria Flash utilizada es mayor que cuando compilo en el PIC16F628A (a veces de más del 30% y no me está alcanzando la Flash) ... alguien sabrá a qué se debe esto? Será que debo actualizar mi versión del compilador PIC BASIC PRO COMPILER (PBP)? Existe otro compilador para lenguaje PIC BASIC que pueda probar?

Si no logro solucionarlo, tendría que meter a la bóveda los PIC16F648A que compré y adquirir unos de mayor capacidad de memoria y posiblemente tener que modificar el diseño de mi PCB para un integrado de mayor tamaño.  :(

Gracias de antemano...
« Última modificación: 16 de Julio de 2019, 09:43:33 por betobono »

Desconectado AccioRw

  • PIC16
  • ***
  • Mensajes: 165
Hola betobono, no conozco ese compilador, pero… tienes activadas las optimizaciones o ves por algún sitio algún tipo de optimización que desaparezca en el 16F648A ?

Desconectado betobono

  • PIC10
  • *
  • Mensajes: 18
Hola AccioRw,

El compilador es cargado desde el editor de Micro Code Studio. Ya he revisado desde ahí y no me aparece ninguna opción de optimización del compilador. Lo que probaré ahora es trabajar con una versión más reciente del compilador del PIC BASIC PRO (PBP) o probar con otro compilador para lenguaje PIC BASIC.

Hoy al regresar del trabajo, haré la prueba a ver cómo me va...

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Que tal betobono,

Podrías subir tu código e indicar cuál es la versión de PBP que estás usando?

elreypic.

Desconectado betobono

  • PIC10
  • *
  • Mensajes: 18
Hola Elreypic2, gusto en saludarte.

Bueno.... hoy después de una larga jornada laboral, me pegué un poco más de tres horas buscando, instalando y probando.

Trabajo con la versión 2.6 del PBP y MicroCode Studio 3.0.05

Hoy conseguí la versión 3.0.1 del PBP y  MicroCode Studio 5.0.0.5.
Con estas actualizaciones lo único que logré fue reducir solo una palabra de programa (pero la diferencia se mantiene).

En esencia, sigue presentándose el mismo problema.... más ocupación en Flash al compilar en PIC16F648A que en PIC16F628A.
Esto ocurre con cualquier programa que intento compilar. Adjunto pantallazos de la compilación de programa para el parpadeo de un LED.

Espero alguien me dé una pista de cómo puedo solucionar esto, o sencillamente me indique si esto es normal.... gracias
 

* PBP Compiler PIC16F628A_LED parpadeo.jpg
(104.35 kB, 1366x768 - visto 916 veces)
 

* PBP Compiler PIC16F648A_LED parpadeo.jpg
(102.55 kB, 1366x768 - visto 852 veces)



« Última modificación: 17 de Julio de 2019, 01:06:05 por betobono »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Si podes colgar los 2 .hex para ver cuales son las 4 palabras de diferencia seria bueno.

De todas formas 4 palabras no es mucho... pense que era mucho mas.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Que tal betobono,

He creado y compilado el código fuente que tienes de prueba para revisar el contenido de los archivos hexadecimales (tal como lo propone KILLERJC) y he encontrado las 4 instrucciones agregadas. Básicamente lo que está haciendo el compilador es tratar con la paginación de la memoria de programa e inserta cuatro veces la instrucción de CLRF PCLATH, la cual contiene la parte alta de las direcciones de memoria de programa, exto es porque el PIC16F648A contiene 4KWords y el PIC628A solo tiene 2KWords y no necesita paginación.

La siguiente figura muestra los CLRF PCLATH insertados en el código del PIC16F648A (el archivo hex desensamblado):

 

* pic648.JPG
(83.43 kB, 882x585 - visto 919 veces)


y en la siguiente figura se muestra el código del PIC16F628A (archivo hex desensamblado):

 

* pic628.JPG
(77.2 kB, 877x585 - visto 835 veces)


En tu código eso es lo que está pasando, el compilador tiene que manejar correctamente la paginación (que es el uso del PCLATH) y es por eso que inserta esa instrucción. Esto para mí tiene total sentido, aunque el compilador no es muy eficiente en esa tarea.

Espero esto conteste a tu duda.

saludos,

elreypic.

Desconectado betobono

  • PIC10
  • *
  • Mensajes: 18
Saludos elreypic2,

Excelente amigo, ((:-)). Gracias por tomarte el trabajo. Sospechaba de los procesos de paginación, pero no sabía de qué manera podía revisarlo.

Bueno, parece que me tocará cambiar el PIC16F648A porque contaba con los 4KWords y resulta que por los procesos de paginación solo cuento con aproximadamente el 70% de esa capacidad y no me alcanza... Bueno, al menos ya sé que es por una causa confirmada gracias a tu ayuda.

Y como indicas, parece que el compilador no es muy eficiente... no importa la versión que utilice... Conocerán algún compilador diferente al PBP que pueda usar desde MicroCode Studio para hacer una última pruebita u otro paquete para PIC BASIC que pueda utilizar? (solo manejo PIC BASIC :()

PDA: Conocen algún PIC de 18 pines con 8KWords de Flash?

Gracias amigos.



« Última modificación: 17 de Julio de 2019, 16:01:35 por betobono »

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Que tal betobono,

No puedes decir que solo tienes el 70% de memoria disponible para tu código.
Yo creo que puedes optimizar tu código si usas algunas rutinas en ensamblador y depurando muy bien tu código.
No sé qué es lo que pretendes hacer, pero no recuerdo que exista un micro de 18 pines con 8kwords de memoria de programa.

Elreypic

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Los PIC18 hay de mucha mas memoria, y los PIC16 tambien tenes con 8K por ejemplo:

http://ww1.microchip.com/downloads/en/DeviceDoc/PIC16(L)F18425-45-Data%20Sheet-DS40002002A.pdf

PD: Que mal la web de Microchip, me saco la tabla para poder ver los PICs... tengo que utilizar el MAPS

https://www.microchip.com/maps

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Al compilar con PBP en PIC16F628A y PIC16F648A genera diferente ocupación Flash
« Respuesta #10 en: 18 de Julio de 2019, 20:04:11 »
Me ha picado la curiosidad y he compilado con el mío, dejo los resultados.
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Al compilar con PBP en PIC16F628A y PIC16F648A genera diferente ocupación Flash
« Respuesta #11 en: 18 de Julio de 2019, 20:09:31 »
En ambos casos el tamaño es de 55 program words.
« Última modificación: 18 de Julio de 2019, 20:31:35 por dogflu66 »
Saludos desde Granada, España.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Que tal betobono,

Algo que debes saber es que no existen otros computadores basic que trabajen con MicrocodeStudio, pero sí existen otros compiladores basic para micro controladores pIC.
Uno de ellos es el usado por dogflu66 que se llama compilador basic del PIC simulador, otro es el Protón y uno que es gratuito pero muy bueno es el Great Cow Basic. También está el Mikrobasic PIC de mikroelektronika. En fin existen varios, pero cada uno tiene su propio IDE, pero al final son muy parecidos.
Menciono esto en caso de que estés considerando usar otro compilador Basic para PIC

Saludos

elreypic

Desconectado betobono

  • PIC10
  • *
  • Mensajes: 18
Gracias Elreiypic2, dogflu66,

Me alegra poder contar con personas como ustedes (no estamos solos "en la tierra", jejeje). Esta info me es de gran ayuda... ahora a seguir probando.

Saludos!

Desconectado betobono

  • PIC10
  • *
  • Mensajes: 18
Hola amigos,

Busqué y encontré lo siguiente:

* Simulador IDE PIC: La versión que descargué tiene diferencia en la sintaxis a la versión de dogflu66 y también a algunas instrucciones del PIC BASIC PRO (que es el que manejo). Esto me preocupa ya que tendría que revisar mi programa de casi 4K para hacer los ajustes, y temo equivocarme en algo y tener un dolor de cabeza con eso.

* Great Cow Basic: Solo he encontrado versiones para Windows/32 bits y estoy trabajando con 64 bits, entonces al compilar me arroja error. No he validado si la sintaxis es igual a la de PIC BASIC PRO.

* Mikrobasic PIC: Antes de descargarlo, revisé y encontré diferencia de sintaxis de algunas instrucciones.

* Protón: Antes de descargar revisaré el tema de la sintaxis.

Creía que la sintaxis para PIC BASIC era estándar :(


« Última modificación: 24 de Julio de 2019, 16:09:18 por betobono »


 

anything