Autor Tema: leer puerto que está configurado como salida.  (Leído 3421 veces)

0 Usuarios y 5 Visitantes están viendo este tema.

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
leer puerto que está configurado como salida.
« en: 25 de Febrero de 2007, 17:54:09 »
hola estoy programando pics pero todavía tengo algunas dudas básicas acerca de ellos, por ejemplo:
¿qué sucede si intento hacer una lectura en un puerto que está configurado como salida? ¿se estropea?

sl2

Desconectado IIIC

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 158
Re: leer puerto que está configurado como salida.
« Respuesta #1 en: 25 de Febrero de 2007, 18:08:07 »
No se estropea.

Lo que realmente estas haciendo es leer la posicion de memoria asignado para el puerto. Y si el puerto o pin fue configurado como salida lo que obtendras es el ultimo valor enviado por el pin o puerto.

saludos.
« Última modificación: 25 de Febrero de 2007, 19:14:57 por IIIC »
"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas."

Albert Einstein

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: leer puerto que está configurado como salida.
« Respuesta #2 en: 26 de Febrero de 2007, 08:42:57 »
Lo que realmente estas haciendo es leer la posicion de memoria asignado para el puerto. Y si el puerto o pin fue configurado como salida lo que obtendras es el ultimo valor enviado por el pin o puerto.

IIIC esto no siempre es así.  Digamos que "depende" de que pic y de que registro estemos hablando.

Si uno lee los registros PORTx, no se lees la posición de memoria asignada al puerto, lees el hardware.  Si lees un LATx entonces si lees la memoria.

black_flowers si están como salida no los dañarás pero si la tensión de los mismos no está estabilizada (no es un 0 ni un 1) por ser justo durante una transición puede que varíen su estado cuando lo vuelvas a escribir si es que esto se da en poco tiempo  tu hardware está cargado y si funciona a muchos MHz.

Además esto es cierto para una 'escritura' .  Si haces un bsf PORTx,3 , también se hace una lectura/modificación/escritura con lo cual estas todo el tiempo leyendo el hardware y es ahí donde hay que tener cuidado.


Saludos

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

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: leer puerto que está configurado como salida.
« Respuesta #3 en: 26 de Febrero de 2007, 09:59:20 »
Hola!
Si la memoria no me falla, algunos lenguajes de alto nivel configuran el pin como entrada automaticamente al leerlo.....asegurate que no pase eso.

Saludos! :mrgreen:
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado IIIC

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 158
Re: leer puerto que está configurado como salida.
« Respuesta #4 en: 26 de Febrero de 2007, 10:55:28 »
Gracias por la aclaración maunix.
"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas."

Albert Einstein

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re: leer puerto que está configurado como salida.
« Respuesta #5 en: 26 de Febrero de 2007, 10:56:26 »
hola

¿ y no funcionaria algo de este estilo: a = portb AND 0xFF ?

no se si me explico...

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: leer puerto que está configurado como salida.
« Respuesta #6 en: 26 de Febrero de 2007, 12:51:51 »
hola

¿ y no funcionaria algo de este estilo: a = portb AND 0xFF ?

no se si me explico...

Al incluir PORTB en la igualación, el compilador de seguro traduce eso a una lectura del puerto (en hardware).


Saludos
- 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 Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: leer puerto que está configurado como salida.
« Respuesta #7 en: 26 de Febrero de 2007, 13:16:37 »
Hola!
Si la memoria no me falla, algunos lenguajes de alto nivel configuran el pin como entrada automaticamente al leerlo.....asegurate que no pase eso.

Saludos! :mrgreen:

Efectivamente, CCS hace esto si está configurado en modo STANDARD_IO, que es el modo por defecto. Yo siempre suelo poner FAST_IO para que no me haga cosas raritas.

Desconectado fartet

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 145
Re: leer puerto que está configurado como salida.
« Respuesta #8 en: 26 de Febrero de 2007, 21:20:32 »
Hola
Hay un "truco" que quizas pueda salvar los problemas:
Si el puerto esta programado como salidas es porque se usa para "escribir" en el, pues bien, creemos un espejo del puerto en cualquier posicion de memoria que quede libre, así todo dato que vaya a escribirse en el puerto lo copiamos en el espejo, y cuando queramos leer el puerto leemos en su lugar su espejo

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: leer puerto que está configurado como salida.
« Respuesta #9 en: 26 de Febrero de 2007, 21:26:17 »
Bueno fartet. Acabas de crear un LATx por tu cuenta :D
"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 maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: leer puerto que está configurado como salida.
« Respuesta #10 en: 26 de Febrero de 2007, 22:15:52 »
Hola
Hay un "truco" que quizas pueda salvar los problemas:
Si el puerto esta programado como salidas es porque se usa para "escribir" en el, pues bien, creemos un espejo del puerto en cualquier posicion de memoria que quede libre, así todo dato que vaya a escribirse en el puerto lo copiamos en el espejo, y cuando queramos leer el puerto leemos en su lugar su espejo


A esto se le llama "shadow register" o registro sombra. 

Es lo que "se debe" hacer en los 16F cuando se trabaja con puertos para evitar todo tipo de problemas. .  Remarco  por si alguno dice que le anda bien sin usar los registros shadow, hay casos especiales en los que no.

Si el registro está como salida y lo cambiamos muy rápido, entonces el estado del registro de salida no será el esperamos por más que supongamos que la lógica dice que debiera ser así.  En ese caso el registro shadow tendrá el valor "que debería tener" pero el puerto pudiera tener otro.

Ver este link: http://www.todopic.com.ar/foros/index.php?topic=11553.msg64901#msg64901

Saludos
« Última modificación: 26 de Febrero de 2007, 22:19:40 por maunix »
- 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)