Autor Tema: Problema con set_tris_x() en CCS  (Leído 10685 veces)

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

Desconectado ggp0

  • PIC10
  • *
  • Mensajes: 16
Problema con set_tris_x() en CCS
« en: 28 de Mayo de 2009, 13:22:02 »
Hola a todos,

Antes de nada espero que la pregunta no os parezca una perogrullada muy grande, pero la verdad es que hace tiempo que no toco los pics y ademas me he cambiado al CCS por lo que ando un poco flojo...
El tema es que cuando intento configurar un puerto como entrada set_tris_b(0xFF); no funciona y si lo cambio a set_tris_b(0x00); funciona bien como entrada y como salida, por lo que me deja un poco extrañado y sin saber por que sucede esto???
Os muestro un pequeño programita de ejemplo donde sucede lo que comento.

Código: [Seleccionar]
#include <16F877.h>

#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=1000000)

#use fast_io(b)
#use fast_io(c)

void main(void)
{
set_tris_b(0xFF); // Configuro el puerto B como entradas, si lo pongo así no funciona, si lo cambio a (0x00) funciona OK.
set_tris_c(0x00); // Configuro el puerto C como salidas

output_c(0xFF); // Pruebo a poner el puerto C a 1.
output_c(0x00); // Reseteo el puerto C.

while (1) { // Bucle de prueba
if (input(PIN_B0)==1) {
output_bit(pin_c0, 1);
}
}
}

Espero que alguien pueda aclararme el porque sucede esto.

Saludos a todos.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Problema con set_tris_x() en CCS
« Respuesta #1 en: 28 de Mayo de 2009, 13:35:02 »
Compilando tu ejemplo, veo que lo hace correctamente   :(

Citar
.................... set_tris_b(0xFF);   // Configuro el puerto B como entradas, si lo pongo así no funciona, si lo cambio a (0x00) funciona OK.
000D:  MOVLW  FF
000E:  MOVWF  06
.................... set_tris_c(0x00);   // Configuro el puerto C como salidas
000F:  MOVLW  00
0010:  MOVWF  07
....................

No veo el problema!
No contesto mensajes privados, las consultas en el foro

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problema con set_tris_x() en CCS
« Respuesta #2 en: 28 de Mayo de 2009, 13:50:56 »
y si  pruebas mejor con input_state(pin_b0)
El papel lo aguanta todo

Desconectado ggp0

  • PIC10
  • *
  • Mensajes: 16
Re: Problema con set_tris_x() en CCS
« Respuesta #3 en: 28 de Mayo de 2009, 14:14:33 »
A mi también me compila bien, pero a la hora de simularlo no hace lo que debería.
Para compilar lo hago desde MpLab llamando al CCS y supongo que esta todo correcto porque compila bien. Para simular utilizo el simulador que trae por defecto el MpLab.
No se a que se debe pero la verdad es que la entrada con un tris como si fuese una salida funciona, lo cual aún me desconcierta más porque de ese modo si que no debería funcionar.
???

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Problema con set_tris_x() en CCS
« Respuesta #4 en: 28 de Mayo de 2009, 14:48:45 »
y si usas solamente:

if(input(pin_b0)){
...
}

haz armado el circuito? o solo a nivel simulación?
.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Problema con set_tris_x() en CCS
« Respuesta #5 en: 28 de Mayo de 2009, 14:51:20 »
Compilando tu ejemplo, veo que lo hace correctamente   :(

Citar
.................... set_tris_b(0xFF);   // Configuro el puerto B como entradas, si lo pongo así no funciona, si lo cambio a (0x00) funciona OK.
000D:  MOVLW  FF
000E:  MOVWF  06
.................... set_tris_c(0x00);   // Configuro el puerto C como salidas
000F:  MOVLW  00
0010:  MOVWF  07
....................

No veo el problema!


¿Y el cambio de banco?¿No está o no lo has incluido?
"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 Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Problema con set_tris_x() en CCS
« Respuesta #6 en: 28 de Mayo de 2009, 15:13:26 »
y si usas solamente:

if(input(pin_b0)){
...
}
Es exactamente lo mismo.

¿Y el cambio de banco?¿No está o no lo has incluido?
No lo incluí, pero esta! :wink:
No contesto mensajes privados, las consultas en el foro

Desconectado ggp0

  • PIC10
  • *
  • Mensajes: 16
Re: Problema con set_tris_x() en CCS
« Respuesta #7 en: 28 de Mayo de 2009, 15:18:03 »
Si, he probado a poner unicamente...  if(input(pin_b0)){...  pero el resultado es el mismo. El circuito no lo he montado tan solo estoy haciendo pruebas con el simulador del MpLab.
Respecto a lo del cambio de banco, diría que no hace falta hacerlo, entiendo que de eso ya se encarga la función set_tris_x(), pienso que esto no es como en ensamblador, al menos yo no he leido nada al respecto.
Voy a ver si el compilador de CCS trae alguna herramienta que me permita simular al igual que MpLab, porque me da que el problema va a ir por la unión de MpLab con el compilador de CCS, en cuanto tenga algo claro os voy comentando.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Problema con set_tris_x() en CCS
« Respuesta #8 en: 28 de Mayo de 2009, 15:20:42 »
Por ahí conviene usar los pines RB1 y RB2 para hacer las pruebas, porque no tienen asociado ningun modulo a diferencia del resto y no está configurando ninguno(modulo) al iniciar el programa.
"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 Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Problema con set_tris_x() en CCS
« Respuesta #9 en: 28 de Mayo de 2009, 15:24:05 »
Probado en Proteus y funciona correctamente! Así que el problema viene de la simulación de MPlab.
No contesto mensajes privados, las consultas en el foro

Desconectado ggp0

  • PIC10
  • *
  • Mensajes: 16
Re: Problema con set_tris_x() en CCS
« Respuesta #10 en: 28 de Mayo de 2009, 15:33:22 »
Suky, si lo pruebas con MpLab te ocurre lo que a mi?, en caso negativo la solución está clara, actualizar MpLab.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Problema con set_tris_x() en CCS
« Respuesta #11 en: 28 de Mayo de 2009, 15:41:40 »
Nunca simule código C en Mplab  :?
No contesto mensajes privados, las consultas en el foro

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problema con set_tris_x() en CCS
« Respuesta #12 en: 28 de Mayo de 2009, 15:54:13 »
Si estas asignando bien la entrada con el MPLAB?
El papel lo aguanta todo

Desconectado ggp0

  • PIC10
  • *
  • Mensajes: 16
Re: Problema con set_tris_x() en CCS
« Respuesta #13 en: 28 de Mayo de 2009, 17:17:38 »
He estado buscando la forma de simular con CCS pero creo que no se puede, este te remite al simulador de MpLab, asi que me parece que tengo un problema porque nunca he trabajado con Proteus y visto lo visto en el MpLab Sim hay algo que no le estoy haciendo bien y no me funciona como debería.
Si alguien se le ocurre algo mas para probar??

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Problema con set_tris_x() en CCS
« Respuesta #14 en: 28 de Mayo de 2009, 17:43:32 »
me late que debes reinstalar el mplab o actualizar de versión

el ccs no tiene opción de hacer simulaciones, para ello existe el proteus, pic simulator IDE, etc.

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek