Autor Tema: || CCS || Fallo de input_b()  (Leído 3170 veces)

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

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
|| CCS || Fallo de input_b()
« en: 07 de Noviembre de 2007, 11:31:45 »
Hola! estoy a punto de volverme loco!  :-/

Veis algún problema en esta sentencia??

printf(usb_cdc_putc,"%d\r",input_b());


Estoy tratando de leer el puerto B al completo, para enviarlo por usb al PC (la parte del envío funciona perfecta), el problema es que input_b() no está leyendo correctamente el PB, siempre me da -1... o al menos es lo que recibo en la consola. En el puerto B tengo conectadas un bus paralelo de 8 hilos, un pin a cada hilo, he estado mirando en el osciloscopio la señal que recibo, y aunque no es del todo 'bonita' (tiene picos a 5v, pero el rango está entre 3.5v y 0v) creo que debería servir para saber 'instantaneamente' que tengo. Que creeis que puede estar fallando, pq yo ya me he quedado sin ideas!  :?


Gracias y un saludo!!

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: || CCS || Fallo de input_b()
« Respuesta #1 en: 07 de Noviembre de 2007, 11:36:52 »
Jaime, prueba guardando input_b en un int y luego mandalo a portd a ver si funciona

Código: C++
  1. ...
  2. valor=input_b();
  3. output_d(valor);
  4. ...

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

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: || CCS || Fallo de input_b()
« Respuesta #2 en: 07 de Noviembre de 2007, 19:02:23 »
Hola Pedro, no he podido probarlo esta tarde pq me he quedado sin tiempo que dedicarle, lo tendré q aplazar hasta la semana que viene, pero aun así, me parece extraño. En cualquier caso, tengo todos los demás puertos ocupados, lo único que puedo hacer es 'ver' que valor presenta el puerto en un determinado momento. Otra cosa curiosa es que al aplicarle una mascara al puerto, para eliminar RB7 y quedarme solo con RB0-RB6, si que obtengo valor.... pero es el de la mascara! :S

int valor = 0;
valor = input_b();
valor &= 0b01111111;
printf(usb_cdc_putc,"%d\r",valor);

muestra en pantalla: 127


Si no le hago la mascara lo que se muestra en pantalla es lo mismo que si hago esto:

printf(usb_cdc_putc,"%d\r",input_b());

muestra en pantalla: -1



:S:S:S Será un bug? será que la estoy liando y no se donde?... que será será....

Gracias y un saludo!



Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: || CCS || Fallo de input_b()
« Respuesta #3 en: 07 de Noviembre de 2007, 19:07:58 »
y si pruebas así:

printf(usb_cdc_putc,"%d\r",(int)input_b());

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

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: || CCS || Fallo de input_b()
« Respuesta #4 en: 07 de Noviembre de 2007, 20:55:15 »
pero la salida de la función input_b(), no es ya explícitamente un 'int' ??. Probaré también por si acaso, pero los ejemplos que he visto parece que lo hacen tal cuál.... Supongo que si todo sigue fallando también podría leer el estado del puerto bit a bit... En fin, muy raro me parece que esa función no me de lo que quiero!

saludos y gracias nuevamente :)

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: || CCS || Fallo de input_b()
« Respuesta #5 en: 08 de Noviembre de 2007, 04:56:34 »
Te recomiendo que descompongas la instrucción como te sugiere Pedro y, si sigue fallando, mira cómo está el código ASM que ha generado el compilador. Seguro que ahí encuentras el error.


 

anything