Autor Tema: ADvertencia Fastidiosa  (Leído 3911 veces)

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

Desconectado alfa33333

  • PIC10
  • *
  • Mensajes: 1
ADvertencia Fastidiosa
« 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

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: ADvertencia Fastidiosa
« Respuesta #1 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!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: ADvertencia Fastidiosa
« Respuesta #2 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.
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: ADvertencia Fastidiosa
« Respuesta #3 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.





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

  • PIC12
  • **
  • Mensajes: 89
Re: ADvertencia Fastidiosa
« Respuesta #4 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

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: ADvertencia Fastidiosa
« Respuesta #5 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
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: ADvertencia Fastidiosa
« Respuesta #6 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.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: ADvertencia Fastidiosa
« Respuesta #7 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.
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: ADvertencia Fastidiosa
« Respuesta #8 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:
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.


 

anything