Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: bloxons en 06 de Febrero de 2017, 12:26:35
Título: Leer entradas
Publicado por: bloxons en 06 de Febrero de 2017, 12:26:35
Buenas gente, quería realizarles una consulta mas bien conceptual, cuando uno escribe PORTAbits.RA5, para leer la entrada, si ese pin esta configurado para ser digital, la entrada que lee es un 0 o 1 lógico? o siempre ese comando lee el valor analógico de la entrada?
Desde ya muchas gracias por su ayuda.
Título: Re:Leer entradas
Publicado por: Fer_TACA en 06 de Febrero de 2017, 15:04:42
Si lo tienes configurado como digital solo vas a poder leer o escribir datos digitales: 1 o 0. Nunca podrás leer un valor analógico, salvo que reconfigures el puerto y le digas que es analógico.
Título: Re:Leer entradas
Publicado por: KILLERJC en 06 de Febrero de 2017, 21:34:36
Además leyendo el registro porta siempre va a ser un 1 o 0. Para leer la entrada analógica deberás usar el ADC, y si lo tenés como análogo y lees el porta creo que lees 0
Título: Re:Leer entradas
Publicado por: bloxons en 07 de Febrero de 2017, 10:37:37
Muchas gracias por sus respuestas, la consulta vino a raiz de que estoy leyendo varios pines con PORTXbits.RX y transmitiendolos pero el tema es que no lo lee. por ejemplo.
char dato1 = D7 & D6 & D5 & D4 & D3 & D2 & D1 & D0; UART_write(dato1); y utilizando el hyperterminal no me transmite nada, entonces empece a dudar como era que funcionaba el comando PORTXbits.RX. Alguna sugerencia para resolver esto. Desde ya muchas gracias por sus respuetas.
Título: Re:Leer entradas
Publicado por: bloxons en 07 de Febrero de 2017, 12:33:28
Y tambien tengo otra duda, en la linea char dato1 = D7 & D6 & D5 & D4 & D3 & D2 & D1 & D0; estoy tratando de concatenar los bits leídos, pero me parece que en realidad estoy haciendo una and bit a bit, no estoy muy seguro. alguien me podría orientar si es correcta esa linea para concatenar. la idea es concatenar los bits para formar el char.
Desde ya muchas gracias.
Título: Re:Leer entradas
Publicado por: KILLERJC en 07 de Febrero de 2017, 18:07:27
Tu problema esta en la forma de concatenar.
PORTBbits.RB1
devuelve cero o uno. No devuelve 0b00000010, es decir no devuelve la posicion del bit en 1.
1 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 Con uno solo que sea 0 el resultado es 0. Entonces podes hacerlo de 2 formas. O hacer una super funcion como esto:
Título: Re:Leer entradas
Publicado por: bloxons en 13 de Febrero de 2017, 11:05:20
Muchas gracias por su respuesta, hice como me dijeron pero resulta que no me convierte el dato en forma correcta, es mas me envia el valor inicial de dato1, es decir, me envia 0 o haciendo una prueba dato1 = 'a' envia a(no todo el tiempo en algunas ocaciones envia q). La cuestion es que no se si no esta adquiriendo en forma correcta es decir si no esta leyendo bien PORTX.RX o si no esta haciendo bien los if, es decir los saltea. Si alguno tiene alguna idea para comprobar por donde viene el error se los agradeceria mucho.
Título: Re:Leer entradas
Publicado por: Nano_T en 13 de Febrero de 2017, 11:37:26
Buenas! Qué formato esperas recibir en tu terminal? La opción que te dió el maestrísimo KillerJC está perfecta, creería que así vas a recibir un solo caracter porque estas llenando los espacios de los 8 bits del char, trabajo aparte es desarmarlo cuando llegue.. Otra opción tal vez sería guardar los datos en un array y recorrerlo con un for para enviarlos por serial caracter a caracter.
Salutes! Leo B.
Título: Re:Leer entradas
Publicado por: bloxons en 15 de Febrero de 2017, 10:26:00
Buenas, el dispositivo que me envía el dato lo envía en ASCII, pero el tema es que el dato no es correcto, es decir me debería llegar un guion medio y en su lugar me llega el tilde. He revisado el código que me ha pasado KILLERJC y no tengo dudas con respecto a que ese código funciona correctamente. pero la cuestión es por que el dato es erroneo. Me he colgado de D0 y D1 que deberian ser los que mas cambian y son correctos. La verdad que no se por donde buscar el error, cualquier sugerencia sera muy bien recibida. Como siempre muchas gracias por su ayuda.
Título: Re:Leer entradas
Publicado por: KILLERJC en 23 de Febrero de 2017, 15:31:58
Seria interesante si podes explayarte un poco mas que tenes conectado a que pensas conectarlo , como se transmite, etc.
Ejemplo: Recibo el caracter por la UART y debo sacarlo de forma paralela. Ejemplo2: Recibo el caracter de forma paralela en ASCII nomas que los bits no estan en su orden correcto y debo luego enviarlo por UART a una PC.
Eso nos daria un poco mas de informacion de lo que veniamos viendo y manejando para encontrar el problema. Ya que no logro entender que estas intentando hacer.