Autor Tema: ROM al 100%!!! QUE HAGO?? AYUDA!!!  (Leído 10569 veces)

0 Usuarios y 4 Visitantes están viendo este tema.

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
ROM al 100%!!! QUE HAGO?? AYUDA!!!
« en: 18 de Julio de 2009, 17:44:25 »
Saludos amigos, estoy empezando con todo en el mundo de los PIC (por ahi 6 meses) y estoy haciendo un programa bien depurado con buenos metodos para optimizar codigo pero tengo MALAS NOTICIAS!!!! me queda poca memoria ROM  :shock: del 18f4550 y me falta algo mas de 40 % del programa!!! :(

Tengo los rumores que si se puede otros que NO!!

Yo trabajo en C, para ser mas especifico con el CCS...

POR FAVOR AYUDA!!!


Desconectado Jpic

  • PIC12
  • **
  • Mensajes: 94
Re: ROM al 100%!!! QUE HAGO?? AYUDA!!!
« Respuesta #1 en: 18 de Julio de 2009, 17:48:18 »
carajo fidodido18 y que es lo que estas haciendo que ya te tragaste toda la memoria del pic, ja ja debe ser tremendo, o disculpa por lo que te diré, pero sera que estas abusando del código para ese pic...

debes contar con mas detalles lo que estas haciendo para ver que se puede hacer, de lo contrario creo que deberías pensar en usar otro pic con mas memoria.

saludos

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: ROM al 100%!!! QUE HAGO?? AYUDA!!!
« Respuesta #2 en: 18 de Julio de 2009, 17:51:08 »
q estas haciendo q te quedaste corto de memoria? :shock:
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: ROM al 100%!!! QUE HAGO?? AYUDA!!!
« Respuesta #3 en: 18 de Julio de 2009, 18:21:06 »
Aparte de necesitar mas detalles para poder evaluar la gravedad del problema, como dicen los otros amigos, es algo por lo que he pasado muy a menudo ...

Mira las estadísticas de mi última compilada para un 18F4550 ... tengo libre un 4% (¡¡¡202 bytes libres!!!!  :shock:) y aún faltan cosas por hacer Ja, ja, ja  :D :D :D

Mi remedio ha sido siempre "adelgazar, adelgazar y adelgazar" depurando código, viendo nuevas formas de escribir funciones o pasarles parámetros, utilizar tal función built-in en lugar de tal otra,  para que todo haga lo mismo pero ocupe menos ... ufff ... decenas y decenas de pequeños detalles que si se repiten mucho pueden abrir espacios libres donde menos lo sospechas.  :mrgreen:

Código: ASM
  1. ROM used: 31602 (96%)
  2.           31606 (96%) including unused fragments
  3.  
  4.           2 Average locations per line
  5.           9 Average locations per statement
  6.  
  7. RAM used: 872 (43%) at main() level
  8.           1343 (66%) worst case
  9.  
  10. Lines Stmts  %   Files
  11. ----- ----- ---  -----
  12.    25     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\firmware_iACD_v105.c
  13.   638   212   6  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\firmware_iACD.c
  14.   118     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\_Config.h
  15.   422     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5_Lib\_18F4550.h
  16.    63     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\bootloader\bootloader.h
  17.    16     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\_Fuses.h
  18.   211     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\_defines_Hard.h
  19.   407     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5_Lib\lib_Heads.h
  20.   350     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\_defines_Soft.h
  21.    23     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5_Lib\lib_BitsArray.h
  22.    50     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5_Lib\lib_Utils.h
  23.    28     0   0  C:\proyectos\firmware\iACD_V1.0.5\Device_Drivers\driver_24AA1025.h
  24.    26     0   0  C:\proyectos\firmware\iACD_V1.0.5\Device_Drivers\driver_DS1307.h
  25.    38     0   0  C:\proyectos\firmware\iACD_V1.0.5\Device_Drivers\driver_EEPROM.h
  26.   459     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\_defines_Soft_EEPROM.h
  27.   174     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\_defines_Soft_EXTMEM.h
  28.   807     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\_defines_Soft_Commands.h
  29.   164     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\_prototypes.h
  30.    14     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\_i2c.h
  31.    14     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\_usart.h
  32.   907   389  10  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5_Lib\_stdlib.h
  33.    33     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5_Lib\_stddef.h
  34.   421    36   1  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5_Lib\_string.h
  35.    76     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5_Lib\_ctype.h
  36.   100     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\_static_EEPROM_map.h
  37.   940     0   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\_static_RAM_map.h
  38.   297    94   2  C:\proyectos\firmware\iACD_V1.0.5\Device_Drivers\driver_DS1307.c
  39.   297    90   2  C:\proyectos\firmware\iACD_V1.0.5\Device_Drivers\driver_24AA1025.c
  40.   169    55   1  C:\proyectos\firmware\iACD_V1.0.5\Device_Drivers\driver_EEPROM.c
  41.    89    15   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5_Lib\lib_BitsArray.c
  42.   730   242   5  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5_Lib\lib_utils.c
  43.   626   293   6  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5_Lib\lib_heads.c
  44.   272    13   0  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5_Lib\lib_heads_translate.c
  45.   233   110   2  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\main_on_reset.c
  46.   417   143   3  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\main_hard_control.c
  47.   285    87   2  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\main_USART.c
  48.   309   122   2  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\main_interrupts.c
  49.  1939   679  12  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\protocolo_iACD_v_1_0.c
  50.  1028   401   7  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\main_SO.c
  51.   429   561   9  C:\proyectos\firmware\iACD_V1.0.5\Hard_iACD_V1.0.5\main_SO_Idtty_PseudoIndex.c
  52. ----- -----
  53. 27288  7084 Total
  54.  
  55.  Segment   Used  Free
  56. ---------  ----  ----
  57. 00000-003BE     0  960
  58. 003C0-003C6     4  4
  59. 003C8-004A2   220  0
  60. 004A4-07FFE  31378  202
« Última modificación: 18 de Julio de 2009, 18:23:28 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: ROM al 100%!!! QUE HAGO?? AYUDA!!!
« Respuesta #4 en: 18 de Julio de 2009, 18:38:35 »

xD

Me ha pasado , en especial cuando uso lcd y muhos printf xD

Que asi como ustedes dicen y hacen , optimizando y revisando xD todo todo qu eluego hay cada cosa que programo xD
Haciendo redundancias increibles xD.

Pero ya se me va quitando poco a poco xD  :D

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: ROM al 100%!!! QUE HAGO?? AYUDA!!!
« Respuesta #5 en: 18 de Julio de 2009, 18:39:59 »
Gracias por las respuestas!!

Bueno lo que pasa es que estoy manejando una lcd grafica (las imagenes las tengo en una eeprom), ademas lo que mas me llena el pic son los formularios que llena el usuario (hasta 11 datos por llenar), que maneja un teclado alfanumerico(que me toco volverlo solo numerico por espacio de ROM - ademas me toco hacer una libreria de teclado alfanumerico tipo cel).

SI quieren pongo el programa pero esta muy largo...

Tengo un menu principal, que se derivan 8 funciones y cada una en promedio tiene 5 subfunciones y aproximadamente 2 de esas tienen 3 subsubfunciones mas, cada una pide datos diferentes al usuario, que luego son enviadas por usb o rs485 (estoy pensando que mejor rs232 porque ocupa menos rom y ram).

Ahh se me olvidaba ahora mismo lo estoy haciendo con la libreria GLCD pero pienso usar un lcd de nokia a color.

Ademas el PIC tiene que leer unos codigo de barra y unos lectores de banda magnetica segun el usuario disponga... asi que me estoy quedando corto de pines tambien!!!

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: ROM al 100%!!! QUE HAGO?? AYUDA!!!
« Respuesta #6 en: 18 de Julio de 2009, 18:51:16 »
Me ha pasado , en especial cuando uso lcd y muhos printf xD

Que asi como ustedes dicen y hacen , optimizando y revisando xD todo todo qu eluego hay cada cosa que programo xD
Haciendo redundancias increibles xD.

Pues tengo el codigo muy optimizado y utilizo metodos para preguntar (ya que los datos se repiten en algunas funciones), para enviar los datos por rs232... he realizado mi mejor esfuerzo para optimizar codigo a pesar de llevar 6 meses en CCS. Antes utilizaba ASM para preder y apagar led y conversores analogico digital cosas sencillas, y no me imagino haciendo este programa en ensamblador  :shock:

Se me acaba de ocurrir una idea, cargar todos los menu y submenus como imagen en una SD y a medida que el usuario se desplaza pase de imagen a imagen, y hago una rutina que lea los espacios de la SD, seria posible o el pic trabaja muy lento??

Se me olvidaba estoy trabajando con un 18f4550

les envio la simulacion y todo el programa cuando tenia a apenas el 60-70% faltan agregarle varias funciones mas y el lector de codigo de barra y banda magnetica, que estoy en proceso de desarrollo. Estoy seguro que lo que falta es muchisimo mas de lo que llevo.... antes estaba en un PIC de 24 K despues pase al 18f2550 pero por los pines pase al 18f4550... jajajajaja en serio este proyecto necesita de ayuda extra para depurarlo mejor...
« Última modificación: 18 de Julio de 2009, 19:06:52 por fidodido18 »

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: ROM al 100%!!! QUE HAGO?? AYUDA!!!
« Respuesta #7 en: 18 de Julio de 2009, 19:04:57 »
existes algunas funciones q puedan traducir mas codigo q otras?? los case, if, for???
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: ROM al 100%!!! QUE HAGO?? AYUDA!!!
« Respuesta #8 en: 18 de Julio de 2009, 19:13:27 »
existes algunas funciones q puedan traducir mas codigo q otras?? los case, if, for???

Gracias jhozate,

Como dice Jpic es hora que vaya buscando otro pic, en la pagina de microchip encontre para buscar por memoria ROM o por lo que quieras, este es el link

Aunque me gustaria trabajar con el 18f4550 porque lo tengo disponible donde me encuentro, si utilizo otro me tocará mandarlo a importar...

Miren el programa que adjunte arriba y me dicen que tal va, que se le puede cambiar o mejorar...

Desconectado controlpic

  • PIC10
  • *
  • Mensajes: 24
    • servicio de grabacion de microcontroladores
Re: ROM al 100%!!! QUE HAGO?? AYUDA!!!
« Respuesta #9 en: 18 de Julio de 2009, 19:33:33 »
En asembler te sale el codigo bastante mas depurado, pero supongo que no lo dominas.
El unico consejo que te puedo dar es que saques las tablas del programa y las pongas en la Eepron, o bien en una rom externa, o incluso meterlas dentro de la misma Ram.

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: ROM al 100%!!! QUE HAGO?? AYUDA!!!
« Respuesta #10 en: 18 de Julio de 2009, 19:47:09 »
Citar
existes algunas funciones q puedan traducir mas codigo q otras?? los case, if, for???

Gracias jhozate,

era una pregunta :mrgreen: :D
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: ROM al 100%!!! QUE HAGO?? AYUDA!!!
« Respuesta #11 en: 18 de Julio de 2009, 20:23:37 »
Me ha pasado , en especial cuando uso lcd y muhos printf xD

Que asi como ustedes dicen y hacen , optimizando y revisando xD todo todo qu eluego hay cada cosa que programo xD
Haciendo redundancias increibles xD.



Se me acaba de ocurrir una idea, cargar todos los menu y submenus como imagen en una SD y a medida que el usuario se desplaza pase de imagen a imagen, y hago una rutina que lea los espacios de la SD, seria posible o el pic trabaja muy lento??



Estoy trabajando con GLCD , también pido datos y esas cosas , en los menus no uso el glcd_text57(); ni los sprintf porque abarcan mucha memoria.

Lo que hago es cargar las pantallas o formularios<-- Esta me da risa porque xD me queda feo todavia y no se merec ele nombre xD

bueno cargo cada imagen en la se muestra el menu , y voy pidiendo dato por dato segun sea necesario, y el desplazamiento entre la sopcione slo llevo con un indice. Y me ahorro memoria sin tranto glcd_text y esas cosas

Dejame checar si puedo subir un video.

saludos!

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: ROM al 100%!!! QUE HAGO?? AYUDA!!!
« Respuesta #12 en: 18 de Julio de 2009, 20:39:16 »
En asembler te sale el codigo bastante mas depurado, pero supongo que no lo dominas.
El unico consejo que te puedo dar es que saques las tablas del programa y las pongas en la Eepron, o bien en una rom externa, o incluso meterlas dentro de la misma Ram.


Gracias controlpic, donde puedo conseguir una ROM externa? y que tipo de comunicaciones utiliza, si me pudieras dar ejemplos referencias seria de gran ayuda!!

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: ROM al 100%!!! QUE HAGO?? AYUDA!!!
« Respuesta #13 en: 18 de Julio de 2009, 20:50:30 »
Me ha pasado , en especial cuando uso lcd y muhos printf xD

Que asi como ustedes dicen y hacen , optimizando y revisando xD todo todo qu eluego hay cada cosa que programo xD
Haciendo redundancias increibles xD.



Se me acaba de ocurrir una idea, cargar todos los menu y submenus como imagen en una SD y a medida que el usuario se desplaza pase de imagen a imagen, y hago una rutina que lea los espacios de la SD, seria posible o el pic trabaja muy lento??



Estoy trabajando con GLCD , también pido datos y esas cosas , en los menus no uso el glcd_text57(); ni los sprintf porque abarcan mucha memoria.

Lo que hago es cargar las pantallas o formularios<-- Esta me da risa porque xD me queda feo todavia y no se merec ele nombre xD

bueno cargo cada imagen en la se muestra el menu , y voy pidiendo dato por dato segun sea necesario, y el desplazamiento entre la sopcione slo llevo con un indice. Y me ahorro memoria sin tranto glcd_text y esas cosas

Dejame checar si puedo subir un video.

saludos!


Ya viste la parte que subi?? tengo un teclado numerico pero originalmente es alfanumerico, igual a un celular cuando escribes mensajes de texto... si quieres subo la "libreria" que hice...

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: ROM al 100%!!! QUE HAGO?? AYUDA!!!
« Respuesta #14 en: 18 de Julio de 2009, 20:55:11 »
Veo que tienes varias imagenes en ROM y significan -+ 1KB de ROM por pantallazo además de la función para pintar cada una.

Creo que seria conveniente lo de la memoria externa para las imágenes , yo las guardo en un EEPROM i2c con capacidad de 32KB ,que equivaldría a 32 bmp's de 128x64.

Mi programa no es nada pesado por ahora , llevo un 26% de ROM,11% RAM y no esta optimizado :( el código.

Uso un pic18F252(32KB rom)

P.D. Tu funcion en proteus para el glcd despliega muy rápido   :shocked:

Ya casi sube el video.

 


 

anything