TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: gerard en 05 de Junio de 2006, 18:01:50
-
Hola a todos!!!
Bien estoy realizando el proyecto final de carrera y junto con un compañero estamos diseñando un ondulador y el control es mediante micro, en concreto el 18F4420. Bien tengo una consulta que creo que es sencilla pero no puedo resolver.....
Porque las entradas, que las programo como digitales me dan 2V y por lo tanto para activar una entrada tengo que poner la masa??? me tiene loco y es una tontería porque activar se activa igual pero con lógica invertida!!!!!!
Un saludo!!!!!
-
Hola, desconozco la familia 18F, pero por lo que decis, si medis y hay voltaje presente en un/os pin/s que declaraste como entrada/s, entonces seguramente tenes activadas la "weak pull ups" en esos pines.
Estas weak pull ups son resistencias a positivo, que se utilizan para minimizar circuito electronico externo en ciertos proyectos.
Lo que no se es si, por defecto, ese PIC las trae activadas y en tu caso debas desactivarlas por soft o bien no vengan activadas por defecto y en alguna parte de tu codigo las estes activando sin darte cuenta.
Desde lo lejos y desde la nebulosa del cuasi nulo conocimiento que poseo de esta familia, es la unica idea que se me viene a la mente.
Edito: Nuevas impresiones:
Bueno, aunque sabiendo que para medir una entrada de manera correcta, la misma debe estar flotante, es muy probable que aun sin las weak pull ups activadas, el instrumento de medicion muestre voltaje presente en el pin, ya que un pin flotante esta sometido al medio ambiente, y puede ingresar cualquier tipo de voltaje al mismo.
Otra idea es que a las entradas las tengas configuradas como analogicas en lugar de digitales, aunque dudo de esta opcion.
Exitos.
-
Gràcias por tu información, la verdad es que me tendré que informar mejor sobre las "weak pull ups", no sabía ni lo que eran......... però de todas formas con lo que me dices que es normal que la entrada me de tensión té doy la razón, pero el que no es normal es que tenga que poner las entradas a masa para que interprete una señal de entrada. Es decir normalmente el micro interpreta que las entradas las tengo a 1.....................
Gràcias de nuevo por tu información, voy a informarme sobre estas resistencias!!!!!
SAludos i mas éxitos!!!
-
Hola. Bueno, exactamente eso es lo que hacen. Cuando las entradas estan en reposo, fuerzan a las entradas a valer un 1 logico. En realidad no invierten NADA, simplemente fuerzan a las entradas a tener un valor logico, aun sin estar conectadas a nada, de esta manera se evita que ingrese "ruido" a las mismas.
Por lo que comentas, estas ingresando a las patillas señales con un solo estado logico, y no dos.
Entonces, si te resulta contraproducente que las pull ups esten activadas, me lleva a pensar, que la señal/es que les envias es/son:
un 1 logico(5v) o flotante(circuito al aire), y aqui se produce tu problema ya que te obliga a invertir la señal para lograr que funcione.
¿la solucion? Desactivar las weak pull up internas, y colocar resistencias externas a tierra(pull down) para forzar un estado logico 0 cuando el circuito esta en reposo. De esta manera no necesitas mas invertir la señal.
Exitos!
-
Pues muchas gracias de nuevo, voy a intentar averiguar el que y si me sale lo expongo para que todos sepan como resolver este problemilla!!! realmente sé nota quien sabe y quien no.................. :o
De todas formas pronto haré una nueva consulta porque estoy programando un PI y me trae loco loco!!!!
Un saludo y continuad así porque este foro es de lo mejorcito que se encuentra!!!!!
-
Pues muchas gracias de nuevo, voy a intentar averiguar el que y si me sale lo expongo para que todos sepan como resolver este problemilla!!! realmente sé nota quien sabe y quien no.................. :o
De todas formas pronto haré una nueva consulta porque estoy programando un PI y me trae loco loco!!!!
Un saludo y continuad así porque este foro es de lo mejorcito que se encuentra!!!!!
gerard recién leo tu post. Veo que has olvidado mencionar que pines son los que lees 'mal' o 'crees que estan mal'.
Por favor, detalla eso porque es fundamental para poderte seguir dando una mano
Saludos
-
Hola de nuevo, respecto a las entradas que por defecto las tengo a 1 son las del puerto A, esta noche pasaré un programita con los bits de configuración porque empiezo a dudar de mi opinión!!!
Me me estado mirando las resistencias "Weak pull up" y solo las tengo en el puerto B y no en el A, que es donde me surge el problema............................
Gràcias por vuestra ayuda!!!!!!
Saludos
-
Hola de nuevo, respecto a las entradas que por defecto las tengo a 1 son las del puerto A, esta noche pasaré un programita con los bits de configuración porque empiezo a dudar de mi opinión!!!
Me me estado mirando las resistencias "Weak pull up" y solo las tengo en el puerto B y no en el A, que es donde me surge el problema............................
Gràcias por vuestra ayuda!!!!!!
Saludos
¿Has apagado el comparador analógico?
-
Pues si que està apagado, o almenos eso creo.......... de hecho utilizo el datasheet en donde inicializa el puerto A y lo hace de la siguiente forma:
CLRF PORTA ; Initialize PORTA by
; clearing output
; data latches
CLRF LATA ; Alternate method
; to clear output
; data latches
MOVLW 07h ; Configure A/D
MOVWF ADCON1 ; for digital inputs
MOVWF 07h ; Configure comparators
MOVWF CMCON ; for digital input
MOVLW 0CFh ; Value used to
; initialize data
; direction
MOVWF TRISA ; Set RA<3:0> as inputs
; RA<5:4> as outputs
He probado de poner el CMCON todo a 0 y parece que las entradas ahora si que se activan a estado alto!!! A ver si tengo suerte!!!! OS iré informando...........................
Muchas gracias por tu ayuda!!!!!!
-
MOVLW 0CFh ; Value used to
; initialize data
; direction
MOVWF TRISA ; Set RA<3:0> as inputs
; RA<5:4> as outputs
RA 0, 1, 2, 3 como entradas y 4, 5 como salidas con ese valor (0xCF)
Si pones 0x00 serán todas salidas.
-
Pues si que està apagado, o almenos eso creo.......... de hecho utilizo el datasheet en donde inicializa el puerto A y lo hace de la siguiente forma:
CLRF PORTA ; Initialize PORTA by
; clearing output
; data latches
CLRF LATA ; Alternate method
; to clear output
; data latches
MOVLW 07h ; Configure A/D
MOVWF ADCON1 ; for digital inputs
MOVWF 07h ; Configure comparators
MOVWF CMCON ; for digital input
MOVLW 0CFh ; Value used to
; initialize data
; direction
MOVWF TRISA ; Set RA<3:0> as inputs
; RA<5:4> as outputs
He probado de poner el CMCON todo a 0 y parece que las entradas ahora si que se activan a estado alto!!! A ver si tengo suerte!!!! OS iré informando...........................
Muchas gracias por tu ayuda!!!!!!
Cargar CMCON=00 pone los comparadores en Reset pero fijate en el datasheet que ese modo es para pines analógicos.
El modo CMCON=0x07 es el que apaga los comparadores.
CVRCON=0 apaga también el voltaje de referencia.
Lo más importante ADCON1 = 0x07 , esto no setea los pines como digitales, sino que setea las señales AN0 a AN8 como analogicas y el resto como digitales.
Debes poner ADCON1 = 0x0F
movlw 0x0F
movwf ADCON1
Respecto a del TRIS, ya te fue indicado por pibe. Estas seteando PORTA<0:5> como entrada y no se condice con el texto del código fuente que subiste.
Saludos
-
Teneis toda la razón, de hecho en mi código ya puse el ADCON1 a 0x0FH, lo que ocurre es que cogí la inicialización del PDF y no de mi programa. En esto estamos de acuerdo, lo que no entiendo es porquè me deciis que no puedo poner en el TRISA 0xCF, ya que estoy utilizando 4 entradas (0,1, 2 y 3) y 2 salidas (4 y 5). A menos que no sea porque el ADCON1 estaba a 0x07 y entonces no lo programase como entradas y salidas digitales............... Posiblemente me equivoque.....
De hecho el problema aun sigo teniendolo, voy a probar de resetear el CVRCON para apagar el voltaje de referencia, posiblemente sea esto!!!!
Gracias a los 2!!!
-
Queres que te confiese algo, gerard?
Yo particularmente intento no trabajar con el puerto A, siempre me encuentro con algún problema. Si realmente no me queda otra alternativa pues... me tomo 4 PLIDAN y luego de luchar un rato puedo usar el maldito puerto A.
Que si RA4 es open collector, que si analógicas, que si RA5 solo entrada, que no tiene resistencias pullups, que no son de 8 bits... (en algunos micros) Por eso si puedo uso otro puerto y no me complico la existencia.
Joder con el puerto A ! :mrgreen:
-
jajaja pibe!!!!!! tienes razon, estoy harto del puertoA. Creo que te voy a hacer caso y a probar con otro puerto!!!!!! De hecho problemas con los pics no me faltan pero supongo que como a todos.
Saludos y suerte con lo vuestro!!!
-
Queres que te confiese algo, gerard?
Yo particularmente intento no trabajar con el puerto A, siempre me encuentro con algún problema. Si realmente no me queda otra alternativa pues... me tomo 4 PLIDAN y luego de luchar un rato puedo usar el maldito puerto A.
Que si RA4 es open collector, que si analógicas, que si RA5 solo entrada, que no tiene resistencias pullups, que no son de 8 bits... (en algunos micros) Por eso si puedo uso otro puerto y no me complico la existencia.
Joder con el puerto A ! :mrgreen:
Los puertos se pueden usar muy bien y de hecho en los PICs 18F no existe el RA4 como open collector. Jamás he tenido inconvenientes con el uso del puerto A y no veo razón por la cual deban tenerlo.
En los 18F lo que ocurre es que cada pin puede realmente cumplir muchas funciones y si uno se tiene el debido cuidado en apagar el módulo que uno no usará, pues bueno, surgen estas cosas en las que hay que observar bien que se está haciendo.
En mi opinión personal yo no tomaría como consejo el decir que porque tiene estas cosas no usarlo!! :? :?
Para algo está el puerto ¿no? :-) :-)
Saludos
-
jajaja pibe!!!!!! tienes razon, estoy harto del puertoA. Creo que te voy a hacer caso y a probar con otro puerto!!!!!! De hecho problemas con los pics no me faltan pero supongo que como a todos.
Saludos y suerte con lo vuestro!!!
gerard lo lindo de estos problemas es 'saber' porqué ocurren y encontrarles la solución. Si la solución termina siendo usar otro pin sin saber el porqué... luego otra vez tendrás problemas con otro pin y otra vez con otro pin y así, terminarás sin usar ningún pin del pic porque 'alguna vez' tuviste problemas con dicho pin!
Es por eso que te pido no te desanimes, que si estas apurado ahora, pues bien, resuelve tu problema con otro pin pero no termines odiando a un puerto porque no lo pudiste hacer funcionar en primera instancia. ;)
Saludos y que te vaya bien.