Autor Tema: Variables en RAM con #separate  (Leído 1883 veces)

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

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Variables en RAM con #separate
« en: 14 de Mayo de 2009, 12:40:05 »
Hola Amigos.

Recurro a uds que son los maestros de la programacion para que me aclaren algo que he visto en el Proteus.

Estoy cacharreandole a la GLCD y estoy usando la directiva #define FAST_GLCD, y veo que me consume mucha RAM, no se si se deba a eso lo que muestro a continuacion o si es porque no se organizar la memoria de datos.

He definido lo siguiente:



Donde se ve claramente que se respeta la direccion donde se pone la variable en RAM -o al menos eso es lo que creo-, pero eso es al iniciar al programa, ya que al seguir con el programa -que solo es recibir datos y guardarlos- se modifican los valores:



Ahi, solo he usado la funcion de copiar strings strcpy(); para luego pasarlo a la GLCD. La direcion de la variable DataBufer[] es 0x044E, que esta en otro espacio de la RAM ....

A la hora de correr el programa funciona muy normal, es decir, se respetan los valores que guardo en el bufer SetPoint[] que declare, pero no se si esto vaya a influir a la hora de implementarlo.

Es normal que suceda esto?

Saludos
El papel lo aguanta todo

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Variables en RAM con #separate
« Respuesta #1 en: 15 de Mayo de 2009, 18:49:59 »
MLO y ¿estas seguro que no se modifica setpoint{3} en otro sitio?

intenta ponerle un breakpoint a ese índice en el proteus, cargalo desde la ventana watch y clica sobre la variable y busca una opción que te permita detener el programa cuando se intente escribir sobre setpoint{3}

 
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Variables en RAM con #separate
« Respuesta #2 en: 15 de Mayo de 2009, 21:55:34 »
Hola.

Super seguro Pali.

Esa parte del codigo que puse es inmediatamente despues del while(true), pero lo extraño es que las variables si se estan guardando, ya que despues si hago uso de SetPoint y el valor si se guarda ... pero el proteus no lo sigue.

Pense que era por el uso de RAM, pero no .... no se si eso vaya a afectar en el montaje ...

Una pregunta si quiero que esa seccion de memoria donde esta SetPoint[] no se toque y solo se use cuando use la variable, que mas hay que colocar ademas de #locate ???

Saludos
El papel lo aguanta todo

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Variables en RAM con #separate
« Respuesta #3 en: 15 de Mayo de 2009, 22:46:29 »
Hay otra directiva llamada #reserve. En la ayuda del ccs te explica mejor su funcionamiento



La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Variables en RAM con #separate
« Respuesta #4 en: 16 de Mayo de 2009, 14:51:50 »
Hola.

Hice otra prueba: Cargo directamente los valores a las variables, y para mi sorpresa, el proteus solo muestra el cambio en las variables del primer arreglo, en las otras no carga nada.



Sin embargo, al sacar la variable para mostrarla por la GLCD, si respeta el valor que se ha ingresado con anterioridad, aunque no correponde al valor visualizado por el ISIS.



No se que esta pasando ... a alguien le ha sucedido antes?

Esta declaracion si es valida verdad?

Código: C#
  1. struct BytesSetPoint
  2. {
  3.         int16 Temperatura;
  4.         int8  PendienteRampa;
  5.         int8  Horas;
  6.         int8  Minutos;
  7. }SetPoint[9];

Saludos
El papel lo aguanta todo


 

anything