Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

24/08/2010 #1


Tamaño maximo de array, 16F877
Hola,

Quiero introducir un array de tipo float y el tamaño máximo que me permite el compilador sin problemas de Ram es 24, pero necesito que sea de 50, hay alguna posibilidad de crearlo?

un saludo
24/08/2010 #2


Respuesta: Tamaño maximo de array, 16F877
¿Por qué no guardas el array en la memoria de programa?
24/08/2010 #3


Respuesta: Tamaño maximo de array, 16F877
mm creo que lo tengo declarado en la memoria de programa, es decir donde declaro todas las variables no? Lo tengo declarado ahí.. float valor[24]..
24/08/2010 #4


Respuesta: Tamaño maximo de array, 16F877
los elementos del array se almacenan en posiciones consecutivas de la memoria RAM del PIC

poniendo:

rom float variable[50];

ya deberia dejarte. Claro está que ahora la variable la tendrás en la eeprom y tendras que manejar punteros

Ah! Se me olvidó decirte que también es posible hacer arrays bidimensionales
24/08/2010 #5


Respuesta: Tamaño maximo de array, 16F877
Muchas gracias, ahora echaré un vistazo a ver si es muy complicado.. De todas formas he comprobado que me acepta en la memoria de programa dos de tamaño 20, por lo que quizás sea mas rapido y facil hacerlo así.. y creo que con 40 tendré suficiente..
24/08/2010 #6


Respuesta: Tamaño maximo de array, 16F877
Si necesitas un array de ese tamaño, y no te sirve colocarlo en flash como te sugirió tartisa. Definitivamente tienes que pasarte a otro PIC. Te recomiendo que uses el PIC18F452, tiene el mismo Pin-out que el PIC16F877 pero tiene mucho más memoria RAM. El 877 tiene 368 bytes de RAM, mientras que el 452 tiene 1536 bytes. Acordate que cuando declarás una variable tipo float, te ocupa 4 bytes por cada elemento del array. Así, que sólo tu array de 50 elementos, ocupa 200 bytes en RAM. A eso, tenés que sumarle todas las otras variables que hayas ocupado, más las variables que te gasta en implementar el stack o las variables locales.
24/08/2010 #7


Respuesta: Tamaño maximo de array, 16F877
Pues si, quizás cambiar el pic sea lo mas rapido, porque podría usar dos arrays como si estuviesen anidados pero cambiar va a ser mas facil.. Acabo de comprobar que pic tengo aqui por que lo necesito ya y en mi pueblo no hay tiendas de electronica y tengo un 18F4450, voy a comprobar si es similar al 18F452..

Muchas gracias por vuestra ayuda,
Comprobado, tiene el mismo diagrama de pines por lo que viene perfecto... voy a revisar las demas características
25/08/2010 #8


Respuesta: Tamaño maximo de array, 16F877
Una duda que tengo ya que nunca he usado ningún 18F, debo modificar cosas del codigo o me funciona con las mismas instrucciones y eso? porque estoy probando una simulación y parece que no está bien y no se si es algun fallo tonto o es que hay que cambiar cosas...
Me refiero a cosas a tener en cuenta a parte de las dierecciones de puertos y registros que cambian
25/08/2010 #9


Respuesta: Tamaño maximo de array, 16F877
Un par de cosas tenés que modificar:

- Los fuses.
- El timer0 si lo has usado, tenes que decirle que trabaje en 8 bits, los 18F pueden trabajar en 8 o 16 bits.
- El ADC, si lo has usado, en estos fijate en la hoja de datos, pero creo que el que querés usar vos, es de 12 bits.

Creo que nada más.... Suerte!
26/08/2010 #10


Respuesta: Tamaño maximo de array, 16F877
Muchas gracias, esas cosas creo que las tengo cambiadas ya.. Aunque aún sigo teniendo bastantes problemas.. Sabeis por que puede ser que no escriba bien en la pantalla? Despues de mucho intentarlo he cargado el programa 'hola mundo' a ver si eso lo mostraba, pero tampoco.. estoy utilizando la libreria flex_lcd con 4 bits, igual que hacia con el 16f877 aunque alli que trabajaba correctamente...

Edito: Ya funciona el Lcd. Aunque lo demas sigue funcionando mal, a ver si encuentro la solucion y ya comentaré que fallaba..
26/08/2010 #11

Avatar de Meta

Respuesta: Tamaño maximo de array, 16F877
Usas el 16F887 o los 18F4550, tiene más RAM a lo bestia.
26/08/2010 #12


Respuesta: Tamaño maximo de array, 16F877
Puede que tangas activado el PLL (4x) o sea la LCD no puede seguir el micro
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.