Autor Tema: Funciones y punteros... esto no funciona con variables!  (Leído 1568 veces)

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

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
Funciones y punteros... esto no funciona con variables!
« en: 19 de Marzo de 2007, 08:24:58 »
Hola!

Código: [Seleccionar]
void glcd_pixelA(int8 x, int8 y, int1 color)

#ifdef FAST_GLCD
{
   int8 *p;
   int16 temp;
   temp =  y/8;
   temp *= 64;
   temp += x;

   if(x > 63)
   {
      p = displayData.right + temp - 64;
   }
   else
   {
      p = displayData.left + temp;
   }

   if(color)
   {
      bit_set(*p, y%8);
   }
   else
   {
      bit_clear(*p, y%8);
   }
}

Bueno, os comento, es una rutina de GLCD. La cuestion es, que funciona bien cuando pongo  glcd_pixelA(20,20,1) , y si hago x=20 e y=20, y luego pongo glcd_pixelA(x,y,1)  tambien funciona.

Pero si pongo un bucle FOR cambiando los valores de x e y, e invocando la funcion cada vez, no funciona.

Código: [Seleccionar]
x=20;
for(y=1;y<=20;y++)
{
glcd_pixel(x,y,1);
}

Cuestion de punteros? No tengo ni idea. Espero que podais ayudar. Un saludo!
« Última modificación: 19 de Marzo de 2007, 08:28:01 por manex_1987 »

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Funciones y punteros... esto no funciona con variables!
« Respuesta #1 en: 19 de Marzo de 2007, 10:29:10 »
Cuestion de punteros? No tengo ni idea. Espero que podais ayudar. Un saludo!

Si te funciona enviando los datos por separado y no en un bucle, yo sospecharía de que hay algún "timing" que respetar o algo por el estilo.

Los punteros en cuestión son declarados dentro de la función y si con los extremos de la declaración funciona bien no me parece que esté ahí el problema.

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

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
Re: Funciones y punteros... esto no funciona con variables!
« Respuesta #2 en: 19 de Marzo de 2007, 11:23:22 »
No es problema de timing, pues puedo poner tres glcd_pixelA seguidos, con numeros en vez de variables, y va a la perfeccion.

Ademas, me he fijado en lo siguiente:

si pongo a=20 y b=10,  e invoco  glcd_pixelA(a,b,ON) funciona. Pero si pongo  glcd_pixelA(a+1,b+1,ON) ya no va. En cambio, si pongo glcd_pixelA(a*2,b*2,ON) si que funciona.

Bug del compilador? Me tienen harto los de ccs. Cada vez me veo mas cerca de C18, lo juro.



PD: Mas risas.

Código: [Seleccionar]
a=20;
b=10;
do
{
glcd_pixel(a,b,ON);
b++;
}while(b<=30);
No muestra ninguna linea en el LCD.
Código: [Seleccionar]
a=20;
b=10;
do
{
b++;
glcd_pixel(a,b,ON);
}while(b<=30);
Este codigo en cambio si. Se me esta riendo el compilador???
« Última modificación: 19 de Marzo de 2007, 11:29:11 por manex_1987 »


 

anything