Autor Tema: problemas con RAM  (Leído 3031 veces)

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

Desconectado narcosystem

  • PIC10
  • *
  • Mensajes: 32
problemas con RAM
« en: 25 de Mayo de 2004, 10:20:00 »
Hola amigos, ¿Podria alguien explicarme esto ?
Error[74]   MenuTecV4.c 285 : Not enough RAM for all variables  

segun el mensaje del compilador es que estoy usando demasiada RAM pero he estado contando las variables que utilizo y me parece que no llego ni con mucho a las 368 bytes del 16f877 que estoy utilizando,(teniendo en cuenta que siempre que puedo uso variables locales, que creo que es mejor¿no?).
 Si alguien pudiera decirme que puedo hacer para solucionar esto le estaria muy agradecido, porque no puedo prescindir de ninguna de las variables que he usado.Gracias de antemano.

Desconectado pacalaconcurso

  • PIC24F
  • *****
  • Mensajes: 718
RE: problemas con RAM
« Respuesta #1 en: 25 de Mayo de 2004, 16:32:00 »
ya sabes que por defecto algunos compiladores no acceden a toda la ram si no defines implicitamente .....

usas alguna matriz o estructura que pueda no entrar en un  mismo bank ?????


saludos

Desconectado narcosystem

  • PIC10
  • *
  • Mensajes: 32
RE: problemas con RAM
« Respuesta #2 en: 25 de Mayo de 2004, 16:54:00 »
Lo mas largo que uso es esto:
char actuadores[5][12]={"Calefaccion","Ventilacion","Ventanas","Aspersion","Riego"};

char Menu[3][16]={"Pedir Datos","Cambiarvalores","Actuadores"};

y y luego uso pues bastantes variables pero tampoco creo que demasiadas. ademas casi todas excepto las que tengo para el buffer de recepcion de la usart son locales.

No se si te he dicho algo con esto que te pueda orientar para que me puedas ayudar, espero que si. Un saludo.

Desconectado Zimmbi

  • PIC10
  • *
  • Mensajes: 3
RE: problemas con RAM
« Respuesta #3 en: 26 de Mayo de 2004, 07:06:00 »
A mi me pasaba lo mismo, me ponia que no habia suficiente ram, con el pic 16F877A, y no llenava ni un banco. Lo que hice es:

float aux;  #locate aux = 0x001


O algo asi xD. Mirate como usar la primitiva Locate. Yo solucione el problema.


Guillem

Desconectado narcosystem

  • PIC10
  • *
  • Mensajes: 32
RE: problemas con RAM
« Respuesta #4 en: 26 de Mayo de 2004, 08:12:00 »
muchas gracias, pero he probado lode usar la directiva #locate y no me ha funcionado. sigue saliendo el mismo error.

Desconectado mirazulado

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 142
RE: problemas con RAM
« Respuesta #5 en: 26 de Mayo de 2004, 14:13:00 »
Si estas usando ccs fijate en la parte de Symbols Map que el compilador te hace una lista de las variables utilizadas y donde las coloca en la RAM.. por ahi te das cuenta quien te esta consumiendo la RAM en exceso..
Otra cosa, que declares variables locales no quiere decir que siempre el compilador libere la RAM para ser utilizada por otras variables cada vez que salgas del procedimiento.. Si te fijas en el Symbol Map, vas a ver que las variables locales tienen asignada una posicion de memoria unica y a veces no la comparte con nadie. Calculo que tiene que ver con la relacion entre los procedimientos.
No tengo mucha experiencia en esto asi que si me equivoco espero me corrijan.  
Ya que estamos.. alguien conoce una forma mas eficiente de almacenar string constantes en un programa sin utilizar la RAM (variables) como en el ejemplo de narcosystem, si es que se puede .

  Un abrazo Mariano ..


 

anything