TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Jordi en 18 de Marzo de 2008, 13:32:08
-
Hola,
necesito generar un reloj de 32k con un pic16f873A. Para ello utilizo el módulo CCP en configración PWM con un duty cicle del 50%. Hago el código en proteus y obtengo los resultados esperados pero luego a la hora de probar en el osciloscopio no sale ni la frecuencia deseada ni el duty cicle deseado. Hay algo que debea añadir a la electrónica?, he hecho dos placas ya y en las dos pasa lo mismo.
He generado los registros en un página web por si me hubiera equivocado en los calculos...
http://www.micro-examples.com/public/microex-navig/doc/097-pwm-calculator.html
banksel PR2
movlw b'00011110'
movwf PR2
banksel CCPR1L
movlw b'00001111'
movwf CCPR1L
banksel TRISC
bcf TRISC,2
banksel T2CON
movwf T2CON
banksel CCP1CON
movlw b'00011100'
movwf CCP1CON
Un saludo,
Jordi
-
Mejor revisa el datasheet para que veas como funciona el módulo pwm, solo necesitas conocer dos formulas:
pwm_periodo = (PR2 + 1) * 4Tosc * Prescaler_TMR2
pwm_duty_cycle = (CCPR1L:CCP1CON<5:4>) * Tosc * Prescaler_TMR2
El Prescaler_TMR2 solo puede ser 1, 4 o 16 a traves de T2CON
CCP1CON<3:0> = 1100 ... Modo PWM
T2CON(2)=1 ... Timer2 activado
Espero te sirva.
Javicho.
-
A ver, pero si dices que en Proteus te funciona todo muy bien, entonces tu problema no está a nivel de software, sino más bien de hardware!!! Si dices que ya has hecho dos placas, pues, todo es por descarte!!! prueba con otros osciloscopio, a lo mejor el que tienes te está echando broma!!! o más bien revisa bien si los has configurado correctamente!!!!
Atte: Enigma... La llanerita de Guayana :-)
-
No te fies de los simuladores, el hecho de que en la simulación todo funcione no implica que en la vida real funcione tu circuito, es perdida de tiempo hacer simulaciones prefiero en todo caso el simulador del mismo MPLab ahi puedes ver bien como trabajan los registros y paso a paso es mucho mas seguro fiable y verdadero.
Por otro lado tal vez tienes el divisor de tiempos del osciloscopio a 1seg, deberias ajustarlo dependiendo de cuantos periodos quieres ver en el osciloscopio. Si estas usando un 50% de ciclo util entonces ponle un simple led con su R, si se prende va bien y si se ve un poco tenue mucho mejor porque significa que le llega un porcentaje de ciclo util.
Javicho.
-
No te fies de los simuladores, el hecho de que en la simulación todo funcione no implica que en la vida real funcione tu circuito, es perdida de tiempo hacer simulaciones prefiero en todo caso el simulador del mismo MPLab ahi puedes ver bien como trabajan los registros y paso a paso es mucho mas seguro fiable y verdadero.
Umm!!! Bueno no estoy totalmente de acuerdo con esto!!! En mi opinión personal!!, yo! Enigma... pues no creo que que sea perdida de tiempo el hacer una simulación... Particularmente a mi pues me ha ayudado a resolver muuuchos problemas!!! ahora si bien es cierto que son solo herramientas y que no se debe confiar 100% en ellas!!! pues solo son simuladores y en la mayoria de los casos no tendrán un comportamiento igual en vida real!!
Ahora, también es cierto que he tenido algunos problemas con los simuladores, por ejemplo con proteus, pero los he tenido con funciones nuevas, como las del pic 4550... Pero cuando trabaje con el 877, pues me fue estupendo!!!! no tuve ninguna queja... Es más todo lo probaba primero en proteus, y si daba allí, pues cuando lo probaba en vida real también daba!! e incluso cuando tenia errores, probaba en vida real y los errores llegaban a ser igual que en el simulador... Ahora cuando me meti con el 4550, pues alli si que para las funciones nuenas no recomiendo para nada el proteus!! todo debe probarse en vida real.. solo algunas cosas comunes se pueden simular!!
No con esto quiero decir, que hay que hay que usar fielmente los simuladores, solo digo que te ayudan en muchos casos a descubrir y resolver errores! por lo menos a mi han ayudado mucho! :lol:
Ahora el simulador de Mplab, pues ese es otro rollo,,,, si allí no te da, pues ni aunque le hagas magia, no te dará en vida real!!!! :?
Atte: Enigma... La llanerita de Guayana :-)
-
1000% de acuerdo con la llanerita. :mrgreen:
-
Pues al final el proteus tenia razon, por lo visto el pic16f873a (he probado 3 comprados en diferentes sitios) da problemas con el pwm. He grabado el programa en un pic16f873 (sin a) y ha funcionado perfecto!!!!.
Lo que no me explico es porque en los A no van cuando ha sido compilado para un 873A...
Un saludo
-
Lo que no me explico es porque en los A no van cuando ha sido compilado para un 873A...
El 873A a diferencia del 873 posee comparadores internos, tal vez tu programa no configura el registro CMCON adecuadamente.
Javicho.