TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: nbc en 12 de Febrero de 2009, 20:33:12

Título: bug del CCS ? con i++
Publicado por: nbc en 12 de Febrero de 2009, 20:33:12
hola , los sigo hace mucho y leo todo lo posible antes de preguntar algo , no quiero que me reten ..... pero esta vez me superó
resulta que al leer datos de la eeprom me aparecia entremedio basura , despues de leer lo de poner #rom int8 0xf00000 para grabar datos de 8 bits , dije
! EUREKA ¡ , pero no .... seguí probando y descubrí el problema ,para lo cual adjunto pedazo ( o trozo , como más les guste )de codigo , el problema es que al ir incrementandose la variable ibuftx salta de la  dirección 31 (hexa ) a la 53 , con distintas partes del programa me hace lo mismo , si leo hasta 31 datos todo bien , pero si leo más me agrega basura entre
la dir 31 y la 53 , puede ser un error del ccs ( 4.1 0213 ) ?
////////////////////////////////////////////////////////////////////////
void enviar_eventos ( )
{
   int16 i ;
   fputs ( "enviar_eventos\r\n" , DEBUG ) ;
   for ( i = 200 ; i < 320 ; i ++ )
   {
      int8 x ;
      x = read_eeprom ( i ) ;
      buftx [ ibuftx ] = x ;
      fprintf ( DEBUG , "%lu: %02X\r\n" , i , ibuftx ) ;
      ibuftx ++ ;
   }
}

cuando leo en la  terminal , ibuftx salta del 31 al 53  olvidé decir que en una parte anterior hago ibutx = 0 
Título: Re: bug del CCS ? con i++
Publicado por: MGLSOFT en 14 de Febrero de 2009, 08:41:01
De que PIC se trata??
Me suena raro las direcciones que quieres ocupar en EEPROM, me da la impresion que no te alcanza la cantidad de bytes disponibles para lo que quieres hacer... :mrgreen:
Título: Re: bug del CCS ? con i++
Publicado por: nbc en 14 de Febrero de 2009, 13:14:23
hola , gracias por tu interes , el pic es un 18f8720 , y tiene 1k de eeprom , asi que ese no es el problema , ademas despues del salto sigue leyendo bien las direcciones y los datos siguientes . antes de llegar a esta rutina , el ibuftx paso por otra que tambien lo incrementó y viene con un valor de 6 ; aqui pongo el codigo completo de esa parte , aclaro que previamente tengo grabados en la eeprom datos varios en secuencia para poder leerlos y ver que sale mal.


void enviar_encabezado ( ) //siempre envia encabezado
{
   fputs ( "enviar_encabezado\r\n" , DEBUG ) ;
   ibuftx = 0 ;
   buftx [ ibuftx ++ ] = 0X05 ;
   buftx [ ibuftx ++ ] = 0X64 ;   
   buftx [ ibuftx ++ ] = 0    ;          // long. mens. ;la funcion de cierre completa este valor
   buftx [ ibuftx ++ ] = bufrx [ 3 ] ;   // control   
   buftx [ ibuftx ++ ] = bufrx [ 5 ] ;   // destino del mensaje
   buftx [ ibuftx ++ ] = ESTA_ESTACION ; // fuente del mensaje
   ibufrx = 6 ;
}


void enviar_eventos ( )
{
   int16 i ;
   fputs ( "enviar_eventos\r\n" , DEBUG ) ;
   for ( i = 200 ; i < 320 ; i ++ )
   {
      int8 x ;
      x = read_eeprom ( i ) ;
      buftx [ ibuftx ] = x ;
      fprintf ( DEBUG , "%lu: %02X\r\n" , i , ibuftx ) ;
      ibuftx ++ ;
   }
}
Título: Re: bug del CCS ? con i++
Publicado por: Cryn en 14 de Febrero de 2009, 14:19:13
estas simulando o estas en circuito armado?

si estas simulando puede ser que el error venga del simulador, y más si es el proteus, porqque para mi el código esta bien
Título: Re: bug del CCS ? con i++
Publicado por: nbc en 14 de Febrero de 2009, 21:40:59
hola , no lo estoy simulando ,tengo la placa hecha  y conectada con hyperterminal .
Título: Re: bug del CCS ? con i++
Publicado por: juno303 en 15 de Febrero de 2009, 05:50:23
a mi ya me paso eso, y si, es un bug del css,  ponle "STATIC int16" a tu variable y lo mas probable que ya no tengas ese problema...
Título: Re: bug del CCS ? con i++
Publicado por: nbc en 15 de Febrero de 2009, 19:20:15
te agadezco la respuesta, lo probaré y si funciona lo pondré en el foro , tal vez le resuelva el problema a algun otro...