TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: alfa33333 en 23 de Octubre de 2008, 02:20:40

Título: ADvertencia Fastidiosa
Publicado por: alfa33333 en 23 de Octubre de 2008, 02:20:40
Hola soy nuevo en esto de programacion en C para los pics y pues  todo andaba bien hasta que al simular me comenzo a salir una advertencia:
TRISB function is deprecated pic16f648
 y bueno el programa funciona  pero esa advertencia comiensa a crecer y creceer y crecer y crecer  hasta que llega un punto que comienz a alentar y quisiera saber a que se debe, hay algo mal en el codigo algun problema o que puedo hacer para  corregirlo
Título: Re: ADvertencia Fastidiosa
Publicado por: gera en 23 de Octubre de 2008, 13:27:22
hola alfa! podrias publicar el codigo fuente asi vemos donde esta el problema? Asumo q se te escapo alguna directiva del compilador, pero no se cual.
saludos!
Título: Re: ADvertencia Fastidiosa
Publicado por: Gonzalo_BlackHawk en 23 de Octubre de 2008, 19:20:24
Alfa, si mal no recuerdo, es porque estas utilizando la intrucción set_tris dentro del código del programa sin estar en el modo fast_io. Si no has definido este modo mediante la directiva #use_fast_io(), o bien declaraste el modo como standard o fixed entonces va a producirse esa alerta, que no es mas que una indicación de que la instruccion set_tris es una redundancia y que no va a ser tenida en cuenta.
Elimina todos los set_tris del código y verás como se va este error.

Saludos.
Título: Re: ADvertencia Fastidiosa
Publicado por: maunix en 24 de Octubre de 2008, 11:36:00
Hola soy nuevo en esto de programacion en C para los pics y pues  todo andaba bien hasta que al simular me comenzo a salir una advertencia:
TRISB function is deprecated pic16f648
 y bueno el programa funciona  pero esa advertencia comiensa a crecer y creceer y crecer y crecer  hasta que llega un punto que comienz a alentar y quisiera saber a que se debe, hay algo mal en el codigo algun problema o que puedo hacer para  corregirlo


. Los viejos pics tenian una instrucción que se llamaba TRIS que permitia configurar qué pnes serian E/S

. Luego esa instrucción siguió allí pero NO recomendada para nuevos diseños para lo cual se sugiere cargar el W y grabar el resultado en el registro TRISx donde x es el número de puerto.

El compilador te está avisando que la instrucción esa ya es obsoleta... o debiera serlo o no te recomienda usarla, etc.





Título: Re: ADvertencia Fastidiosa
Publicado por: kilopondio en 27 de Octubre de 2008, 07:50:52
Hola Alfa!.

Por casualidad estas probando el codigo que lee botones en el puerto B del amigo Vszener???.

Lo que te puede estar pasando es que pusite haber cambiado el tipo de micro que usas y por lo tanto no usa las directivas correctas o puede que hayas re definido los puertos de una manera equivocada.

Antes de mandar el codigo fijate linea por linea que puede estar mal.Si es un codigo propio sera mas rapido y si lo copiaste de algun lado fijate de copiarlo exactamente como es.


Un abrazo!


Kilo
Título: Re: ADvertencia Fastidiosa
Publicado por: Marttyn en 31 de Octubre de 2008, 03:48:23
. Los viejos pics tenian una instrucción que se llamaba TRIS que permitia configurar qué pnes serian E/S

. Luego esa instrucción siguió allí pero NO recomendada para nuevos diseños para lo cual se sugiere cargar el W y grabar el resultado en el registro TRISx donde x es el número de puerto.

El compilador te está avisando que la instrucción esa ya es obsoleta... o debiera serlo o no te recomienda usarla, etc.

Maunix, como es esto?
Yo utilizo "set_tris_x()" cuando uso la directiva "fast_io(x)", asi configuro que pines son de E/S. Hay una manera mejor o "no obsoleta" para hacerlo?
O es que me estoy confundiendo y la instruccion "set_tris" y "TRIS" son cosas diferentes?  :z)

Salu2
Título: Re: ADvertencia Fastidiosa
Publicado por: BrunoF en 31 de Octubre de 2008, 08:13:59
Buenas :)

Martyyn, Maunix se está refiriendo a lenguaje assembly. La instrucción TRIS es la que está "deprecated"(obsoleta). Es decir que ha sido suplantada por otra instrucción. Mientras que "set_tris" supongo que será una instrucción de lenguaje C, la que puede que sea la que genere la instrucción TRIS al compilar el código.
Me resulta bastante raro que un compilador C utilice la instrucción TRIS...

Saludos.
Título: Re: ADvertencia Fastidiosa
Publicado por: Gonzalo_BlackHawk en 31 de Octubre de 2008, 14:38:32
Tal cual lo dice bruno, a no confundir TRIS que es una instrucción de ASM con la instrucción set_tris propia de lenguaje C. Vayamos por partes dijo Jack:

La instrucción set_tris en el lenguaje de CCS permite configurar mediante el registro TRIS a un puerto como una serie de entradas y salidas. En general el uso de set_tris en CCS no es necesario, porque el mismo compilador configura por si mismo los registros TRIS del PIC antes de iniciar una operación de entrada o salida.
Entonces, porque se sigue utilizando set_tris si el compilador configura los puertos por si mismo?? Para forzar un estado de un puerto independientemente y/o en un momento distinto a las operación de entrada o salida de datos, o bien porque estamos en el modo fast_io y entonces se desactiva el redireccionamiento automatico del compilador y hay que setear los registros TRISx manualmente mediante la instrucción set_tris.

Ahora bien, y esto tiene mucho de suposición, el error que se ve en proteus, puede darse en versiones antiguas del compilador donde el set_tris hacia el seteo del puerto mediante la instrucción TRIS (la de ASM), error que a medida que se fueron actualizando las versiones de CCS se fue eliminando pues yo tengo la ultima versión y cuando se ejecuta una instrucción set_tris se escribe directamente sobre el registro TRISX, pero nunca jamas se ejecuta la instrucción TRIS, por lo menos hasta ahora en todos los programas que he depurado eso no ha ocurrido.

Yo recomiendo que quites primero todos los set_tris del código (si estas en modo estandar o fijo) y si el error no aparece es que una de las instrucciónes con la que el compilador generaba el TRIS en ASM. Si con esto no ocurre nada, es porque el compilador esta produciendo la instrucción TRIS durante alguna de las asignaciones automaticas de direcciones de los puertos, cosa que he visto que ocurre. En realidad la forma mas eficaz de ver donde se genera el problema es simplemente observar el archivo .LST que te genera CSS hasta detectar la linea en la que se produce TRIS. Una vez encontrada esta linea reemplazarla por instrucciónes que escriban directamente sobre el registro TRISx. Creo que me enrolle bastante con la explicación, pero bueno.

Saludos.
Título: Re: ADvertencia Fastidiosa
Publicado por: Marttyn en 01 de Noviembre de 2008, 03:09:05
si, el set_tris lo utilizo con fast_io, asi genera una instruccion menos por cada vez que escribo el el puerto...
asi que por lo visto, no hay problema con esto... me habia llevado un "susto"... seguire haciendo como antes que parece que no hay problema  :mrgreen: