TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: JoseLuis2801 en 07 de Febrero de 2013, 08:50:46
-
Ya he realizado un aaplicacion en PWM, modo simple, que solo salga la señal por una pata, tal y como viene en el manual del PIC, la del puerto GPIO,2, todo bien. Tanto en el MPLABSIM como ya una vez metido en el mismo PIC.
Ahora quiero que salga la misma por la pata GPIO,0 , pero no sale, siempre a 0 voltios.
La cosa es que usando el MPLABSIM me lo simula bien, pero cuando paso el programa al PIC y lo ejecuto, mira con el osciloscopio, y nada de nada. Es posible, esta bien programado como puerto de salida.
ESta fue la rutina que hize para pasar el valor al puerto GPIO,
BUCLE BTFSS GPIO,2
GOTO ESCERO
BSF GPIO,0 ; es uno
RETURN
ESCERO BCF GPIO,0
RETURN
A ver que os parece.
Gracias
Un saludo
-
Lo que se me ocurre asi a simple vista es que en principio GPIO,2 este a 0 y entonces ejecuta GOTO ESCERO, pone a 0 GPIO,0 y al ejecutar el RETURN como no fue llamado por un CALL, el programa se perdera o ira a cualquier sitio y GPIO,0 estara siempre a 0
Para retornar con RETURN, tienes que llamarlo con CALL, pero tienes que cambiar el programa, asi tal y como lo tienes no te funcionaria, ya que si lo llamas con CALL al retornar haria BSF GPIO,0 aunque GPIO,2 este a 0.
Saludos.
-
Si tapi8, es que no voy a poner todo el programa, es largo, pero si viene de un call, esta es la parte donde lo llama:
MOVLW 27h
MOVWF CONTC
MOVLW 75h
MOVWF CONTB
CALL PWM ; Vgs = Vcc
CALL BUCLE
GOTO INIC2
FIN NOP
END
La rutina PWM se ejecuta perfectamente, vuelve a CALL BUCLE, pero,.....no va.
Debería funcionar entonces, Bueno , tengo que dar con ello, os cuento........
Un saludo
-
NDA HAY AGLUN TIPO DE CONFLICTO, FUNCIONAS A LA PERFECCION SIN PONER LA RUTINA, PERO PONIENDOLA SIGUE FUNCIONANADO PERFECTO EL PUERTO GPIO,2, PERO POR EL GPIO,0 NO SALE SEÑAL pwm ALGUNA.
aHORA HE PROBADO ASI:
----------------------------
BUCLE BTFSC GPIO,2
GOTO NOESCERO
BCF GPIO,0
RETURN
NOESCERO BSF GPIO,0
RETURN
------------------------------
UN SALUDO
-
¿Eses dos PWMs tienen la misma frecuencia?
¿Por que chequeas si GPIO,2 esta a 1? Eres tu el que lo pones a 1, por tanto si cuando lo pones a 1 en vez de hacer BSF GPIO,2 haces esto:
movlw 0000 0101 ; para poner GPIO,2 y GPIO,0 a 1
movwf GPIO ; aqui comienza el PWM
Ya tendrias los dos a 1 para empezar el PWM, despues bajaras cada uno (pondras a 0) a su debido tiempo, por ejemplo asi:
call DELAY ; o con un TIMER mejor aun
bcf GPIO,0 ; bajamos uno de ellos o los dos eso depende
call DELAY ; pongo asi pero puede ser un tiempo diferente
bcf GPIO,2
Si explicas lo que quieres te podremos ayudar mejor.
-
Estas definiendo a GPI0 como salida?
-
Si esta como salida todopic.
Aver, no hay problema XQ he hecho un puente con un cable de cobre del GPIO,2 al GPIO,0 , y por supuesto he hecho un agujerillo en la pista del GPIO,2 para que ambos puertos no esten conectados.
Tapi8, yo leo el estado del GPIO,2, y en funcion de ello, escribo en el GPIO,0 un 0 o un 1. El 12F617 tiene 2 salidas PWM, yo me he currado para la PWM simple, la programo, y su señal sale por el puerto GPIO,2, concretamente la llaman P1B. Todo perfecto. Aplicación:
En un pequeño avion de R/C de turbina electrica, un driver PWM para iluminar las toberas, y que en funcion del gas, el pulso positivo sea mas o menos largo:
Luego esta la salida P1B , que esta en el puerto GPIO,0, pero esa es para el modo avanzado , de todas formas como tengo que rediseñar el circuito electrico XQ ya no necesito el Optoacoplador para nada, ya que todo tira de la misma bateria, así que no voy a currarme el modo avanzado, no es necesario, coin la salida simple tengo mas que suficiente.
Gracias a ámbos
Un saludo