Autor Tema: Capacidad de un PIC  (Leído 6317 veces)

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

Desconectado pablo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 253
Capacidad de un PIC
« en: 25 de Abril de 2007, 20:25:33 »
Hola gente:

Tengo un inconveniente. Arme un controlador para mi acuario con bastantes opciones y menues, esto me quito demasiada memoria ROM, en este momento estoy trabajando con el pic mas grande el 18F452 16k de ROM y estoy en el 96%.
Existe alguna forma de utilizar alguna memoria extra para poder seguir programando en el PIC.

Desde ya muchas gracias.
Saludos.
Pablo

Desconectado psykhon

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 823
Re: Capacidad de un PIC
« Respuesta #1 en: 25 de Abril de 2007, 21:15:53 »
18f4520 es la version ampliada del 452 y tiene 32k, en cuanto a la memoria externa para programa no hay manera
No, no se lo que estoy haciendo. Nadie sabe que estoy haciendo. Por eso se llama "Investigacion".

Desconectado pablo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 253
Re: Capacidad de un PIC
« Respuesta #2 en: 25 de Abril de 2007, 21:36:02 »
Muchisimas gracias por el dato.

Saludos

Desconectado maspic

  • PIC10
  • *
  • Mensajes: 2
Re: Capacidad de un PIC
« Respuesta #3 en: 28 de Abril de 2007, 10:35:49 »
Perdoname, ,... pero con que estas programando ???, un programa complicado, no me ocuma mas de 1k en assembler.
Te recomiendo revisar tus rutinas, posiblemente estes repitiendo cosas o algo por el estilo, cualquier cosa avisame y le pego una mirada a tu codigo, saludos Jorge

Desconectado pablo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 253
Re: Capacidad de un PIC
« Respuesta #4 en: 28 de Abril de 2007, 13:04:43 »
Es un programa que tiene menues y demasiadas configuraciones, varias entradas a/d y control de LCD de 20x4, esos sumado a que no se programar en asembler, solo se programar en Picc y supongo que la suma de todo esto equivale a programa muy grande.

Gracias.

Desconectado vszener

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Capacidad de un PIC
« Respuesta #5 en: 28 de Abril de 2007, 15:20:32 »
Con 16k ya debe ser enorme tu progrma, hay pic's de la familia 18 que si se puede agrandar su memoria de programa externamente.


Suerte!!! ;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado psykhon

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 823
Re: Capacidad de un PIC
« Respuesta #6 en: 28 de Abril de 2007, 20:09:46 »
epas, pense que usabas una pantala grafica con iconos en la flash, asi si consumis a lo pavote memoria pero con un 20*4 consumir tanto no es normal che
No, no se lo que estoy haciendo. Nadie sabe que estoy haciendo. Por eso se llama "Investigacion".

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Capacidad de un PIC
« Respuesta #7 en: 28 de Abril de 2007, 21:10:01 »
La verdad es que si es posible llenar la memoria a punta de mensajes para la pantalla LCD. A mi me paso y luego busque la forma de reciclar mensajes y crear palabras y combinarlos para crear los mensajes.

Ahora lo raro es que sea en ASm que lo llenaste eso si me sorprende. Mi proyecto de grado necesitaba como 50 mensajes para una LCd de 2x16 y no se lleno la memoria del PIC16F877A llegue como al 80%. Debes revisar y depurar el codigo que tienes a lo mejor si hay cosas redundantes.
« Última modificación: 28 de Abril de 2007, 21:13:50 por PICmouse »

Desconectado pablo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 253
Re: Capacidad de un PIC
« Respuesta #8 en: 28 de Abril de 2007, 21:53:31 »
No lo hice en C, si lo hubiera hecho en asm seguramente me hubiera ahorado unos cuantos k pero no tengo idea de asembler.

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: Capacidad de un PIC
« Respuesta #9 en: 28 de Abril de 2007, 22:10:32 »
Pablo , si usaste el picc de ccs posiblemente no esta manejando tus subrutinas bien, me explico, el ccs trata de colocar las funciones que utilizas ,"inline ", es decir, no reusa las funciones sino que las pones seguidas, por ejemplo , si tienes una funcion llamada menu que ocupe por decir 100 posiciones de memoria y la llamas diez veces en diferentes partes del programa muchas veces el ccs copia esta funcion en esas partes para evitar saturar la pila y esto da por resultado que esa funcion en realidad usa 1000 posiciones de memoria , esto puedes evitarlo usando la directiva #separate que permita reusar la funcion y asi ahorras posiciones de memoria .

Te digo esto pero a mi me paso algo similar , llego un momento en el cual  el ccs me decia que no tenia suficiente memoria y al ir colocando #separate en diferentes funciones resulto que solo ocupaba el 50 % de la memoria. espero que te sirva de ayuda

Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado pablo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 253
Re: Capacidad de un PIC
« Respuesta #10 en: 28 de Abril de 2007, 22:13:32 »
 :) ya lo hice asi y todo ocupaba 96% pero no sabia que estaba el 4520 con 32k. Asi que ahora no me preocupa mucho la capacidad.
Igualmente gracias por el dato.

Saludos.
Pablo

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Capacidad de un PIC
« Respuesta #11 en: 29 de Abril de 2007, 20:21:04 »
18f4520 es la version ampliada del 452 y tiene 32k, en cuanto a la memoria externa para programa no hay manera

No , esto no es así, es un error.  El 18F452 y el 18F4520 ambos tienen 32KBytes o 16KWords.  Las diferencias estan en otras cosas, como en mayor cantidad de A/Ds de parte del 18F4520, oscilador interno, mayor velocidad de programación, la posibilidad de usar el RA6 y RA7 , modulo de comparación multiplexable y alguna otra cosa que se me está escapando.

Pablo, te sugiero reveas tu código, trates de reutilizar tu código lo más posible agrupando en funciones que contengan varias cosas juntas.  Los menúes, si son texto, definelos como constantes en ROM en vez de que sean una mera asignación de código en el programa.   Definirlos como constante en ROM, te garantiza (si el compilador funciona bien) que tengas 1 caracter por cada byte de la memoria de programa.  Si armas el menú por código, te verás en graves problemas de optimización.

Si aún así no te cierra la idea, te sugiero bajes la Product Selection Guide de la página de Microchip, ahí verás toda la gama de pics y podrás elegir la que mejor se ajuste a tu aplicación.

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado pablo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 253
Re: Capacidad de un PIC
« Respuesta #12 en: 29 de Abril de 2007, 20:44:31 »
Si lo que mas me ocupo k fue toda la parte de menues y sus submenues.
Sabes programar en picc? Las de claraciones de los menues las hice asi. No tengo idea como declarar en Rom, si sabes C tirame una idea.

const char* MenuD[5][20] = {"Conf. Temperatura ","Calibrar PH       ","Timers            ","Conf. General     ","Volver            "};

Ahora veo lo de la pagina de microchip.

Muchas gracias.
Pablo

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Capacidad de un PIC
« Respuesta #13 en: 30 de Abril de 2007, 08:27:15 »
Si lo que mas me ocupo k fue toda la parte de menues y sus submenues.
Sabes programar en picc? Las de claraciones de los menues las hice asi. No tengo idea como declarar en Rom, si sabes C tirame una idea.

const char* MenuD[5][20] = {"Conf. Temperatura ","Calibrar PH       ","Timers            ","Conf. General     ","Volver            "};

Ahora veo lo de la pagina de microchip.

Muchas gracias.
Pablo

No uso PICC, ni tampoco sé si esté bien hecha esa declaración.  Nunca vi algo así.  Un puntero a un arreglo completo? Eso es nuevo para mi, o al menos no lo considero de gran utilidad.

En C18 es


rom const char MenuD[5][20] = {"Conf. Temperatura ","Calibrar PH       ","Timers            ","Conf. General     ","Volver            "};


Luego defines un puntero a la rom y vas leyendo byte a byte.

Otra ayuda es que si usas mucho los espacios, es que directamente hagas la rutina "borre" todo el display y luego comience a escribir cada linea de display hasta encontrar un #0 .  Ese #0 es un caracter ascii #0 o en un 0 en binario.  Es lo que se usa en lenguajes de alto nivel para terminar las cadenas de caracteres

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado psykhon

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 823
Re: Capacidad de un PIC
« Respuesta #14 en: 30 de Abril de 2007, 10:41:07 »
18f4520 es la version ampliada del 452 y tiene 32k, en cuanto a la memoria externa para programa no hay manera

No , esto no es así, es un error.  El 18F452 y el 18F4520 ambos tienen 32KBytes o 16KWords.  Las diferencias estan en otras cosas, como en mayor cantidad de A/Ds de parte del 18F4520, oscilador interno, mayor velocidad de programación, la posibilidad de usar el RA6 y RA7 , modulo de comparación multiplexable y alguna otra cosa que se me está escapando.

Pablo, te sugiero reveas tu código, trates de reutilizar tu código lo más posible agrupando en funciones que contengan varias cosas juntas.  Los menúes, si son texto, definelos como constantes en ROM en vez de que sean una mera asignación de código en el programa.   Definirlos como constante en ROM, te garantiza (si el compilador funciona bien) que tengas 1 caracter por cada byte de la memoria de programa.  Si armas el menú por código, te verás en graves problemas de optimización.

Si aún así no te cierra la idea, te sugiero bajes la Product Selection Guide de la página de Microchip, ahí verás toda la gama de pics y podrás elegir la que mejor se ajuste a tu aplicación.


tenes raxon maunix, garrafal error el mio, eso me pasa porque justo ese dia estaba viendo la pagina de cika y en est figura asi:
 018018F452-2      PIC18F452-I/L      MICRO CTRL 16KF 1K5R 256E 34I/O ADC10      MICROCHIP      U$ 10.6      10.5      > 27 unid.
   018018F4520    PIC18F4520-I/PT    32 KB Enh Flash, 3804 RAM,36 I/O,Pb Free    MICROCHIP    U$ 12    10.5    > 160 unid.

Gracias por la correcion  :)
No, no se lo que estoy haciendo. Nadie sabe que estoy haciendo. Por eso se llama "Investigacion".