Autor Tema: MAS MEMORIA RAM  (Leído 1700 veces)

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

Desconectado peter2007

  • PIC10
  • *
  • Mensajes: 12
MAS MEMORIA RAM
« en: 27 de Marzo de 2006, 07:00:00 »
Hola, estoy programando en CCS con el PIC 16F877A y quisiera saber como obtener mas memoria Ram para un proyecto que utiliza una matriz de tres dimensiones de 5x5x5 con el formato de numero int8, podria utilizar un formato menor pero el compilador pasa de int1 a int8 (podria usar un int4 pero no me lo acepta) el tema es que al compilar me da el error de insuficiente memoria RAM.
No quisiera utilizar una memoria externa ya que el proyento el simple y no quisiera complicarlo.
Las definiciones de variables son:
int16 q1,sq1,sq2;
float num,num1;
unsigned int8 seg,min,hor,reten,semana,mdisp,sdisp,rebote,rebot,tarea,ent[4],sal[4],i,j;
signed int8 fila,menu;
int1 disp,boton,ajuste,sethor,setmin,setdia,salida;
int32 total_delay_time;                    
long total_ms_delay_time, total_us_delay_time,num_periods;
int num_us_delays, num_ms_delays, ms_delay_time, us_delay_time;

int8  matriz[5][5][5]={{{1,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}},
                       {{1,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}},
                       {{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}},
                       {{1,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}},
                       {{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}}};

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: MAS MEMORIA RAM
« Respuesta #1 en: 27 de Marzo de 2006, 14:46:00 »
Escrito originalmente por peter2007
Hola, estoy programando en CCS con el PIC 16F877A y quisiera saber como obtener mas memoria Ram para un proyecto que utiliza una matriz de tres dimensiones de 5x5x5 con el formato de numero int8, podria utilizar un formato menor pero el compilador pasa de int1 a int8 (podria usar un int4 pero no me lo acepta) el tema es que al compilar me da el error de insuficiente memoria RAM.
No quisiera utilizar una memoria externa ya que el proyento el simple y no quisiera complicarlo.
Las definiciones de variables son:
int16 q1,sq1,sq2;
float num,num1;
unsigned int8 seg,min,hor,reten,semana,mdisp,sdisp,rebote,rebot,tarea,ent[4],sal[4],i,j;
signed int8 fila,menu;
int1 disp,boton,ajuste,sethor,setmin,setdia,salida;
int32 total_delay_time;                    
long total_ms_delay_time, total_us_delay_time,num_periods;
int num_us_delays, num_ms_delays, ms_delay_time, us_delay_time;

int8  matriz[5][5][5]={{{1,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}},
                       {{1,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}},
                       {{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}},
                       {{1,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}},
                       {{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}}};


Pues, cambiando el pic o usando el ingenio.

Dentro de los 16F. estas atado porque es el que más Ram tiene.  Debieras usar un 18F

Sino debieras empezar por optimizar la utilización de RAM en tu código.  Es muy probable que la estes desaprovechando en alguna parte del código.

Esta es una de las razones por las cuales no uso el C en los pic16 porque ni bien uno le agrega complejidad se queda sin program memory y sin ram... es muy ineficiente la arquitectura con tantas páginas como para que un código quede a un tamaño aceptable.

Volviendo a tu tema, tal vez el compilador no te deje declarar un int4, pero porque no ingeniartela para usar "nibbles" de las variables int8 ?

- 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 peter2007

  • PIC10
  • *
  • Mensajes: 12
RE: MAS MEMORIA RAM
« Respuesta #2 en: 27 de Marzo de 2006, 18:52:00 »
Mauricio, muchas gracias por tu sujerencia de los nibles ya mismo la pongo en practica,

Saludos desde Ramos Mejia Prov. de Buenos Aires

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: MAS MEMORIA RAM
« Respuesta #3 en: 27 de Marzo de 2006, 20:50:00 »
Escrito originalmente por peter2007
Mauricio, muchas gracias por tu sujerencia de los nibles ya mismo la pongo en practica,

Saludos desde Ramos Mejia Prov. de Buenos Aires


De nada, ,son solo trucos de un viejo lobo de mar Sonrisa
Giño
- 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)