TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: mecatronicomarc en 30 de Octubre de 2006, 03:03:49
-
tdo el dia me e estado rompiendo la cabeza en que estoy mal!
este simple codigo deberia sacar una señal del pwm, siguiendo las hojas de especificaciones
LIST P=16F873A
RADIX HEX
INCLUDE "p16f873A.inc"
org 0x0
bsf STATUS,5
clrf TRISC
movlw b'11111111' ;le meto 128 uno le doy periodo a mi pwm
movwf PR2 ;le meto un periodo de .516 milisegundos[1.3 KHz de frecuencia]
bcf STATUS,5
DENU
movlw b'00010000' ; le doy duty cicle
movwf CCPR1L
movlw b'00001100'
movwf CCP1CON ;configuro para pwm
movlw b'00000111' ;ya habiendo configurado el puerto c como salida
movwf T2CON
PWMS
goto PWMS
END
Pero no!...se supone que al terminar el tmr2=pr2 deberia pasar el ccpri1l al ccpr2H y poner en alto la patita RC2 pero no pasa nada de nada...lo estoy simulando en el pic simulator ID y deplano nada de nada alguien puede ayudarme ?!!
gracias
-
Hola.
¿Cómo que no pasa de nada?
Si aca en el MPLAB SIM funciona tu programa.
Lo que si te puedo recomendar para que luego por ahi no tengas dolores de cabeza, es que te asegures estar en el banco correcto.
Cambiar
Por:
bcf STATUS,RP1
bsf STATUS,RP0
Saludos.
-
Y donde sirves la interrupcion de timer???? No veo donde habilitas la interrupcion del timer2, ni donde reconoces la interrupcion. Tampoco veo que actives GIE ni PEIE. No se, tampoco habilitas la interrupcion de CCP. Personalmente nunca habia visto hacer una pwm así. No dudo que no se pueda hacer, pero a mí me faltan bastantes cosas en este fuente.
-
Y donde sirves la interrupcion de timer???? No veo donde habilitas la interrupcion del timer2, ni donde reconoces la interrupcion. Tampoco veo que actives GIE ni PEIE. No se, tampoco habilitas la interrupcion de CCP. Personalmente nunca habia visto hacer una pwm así. No dudo que no se pueda hacer, pero a mí me faltan bastantes cosas en este fuente.
Deimos, creo que estás confundido, El PWM no necesita tener una interrupción habilitada para funcionar, solamente que corra el TIMER2.
Saludos
-
Hombre no me digas eso, como que
Y donde sirves la interrupcion de timer???? No veo donde habilitas la interrupcion del timer2, ni donde reconoces la interrupcion. Tampoco veo que actives GIE ni PEIE. No se, tampoco habilitas la interrupcion de CCP. Personalmente nunca habia visto hacer una pwm así. No dudo que no se pueda hacer, pero a mí me faltan bastantes cosas en este fuente.
Deimos, creo que estás confundido, El PWM no necesita tener una interrupción habilitada para funcionar, solamente que corra el TIMER2.
Saludos
Hombre no me digas que no necesitas interrupcion para funcionar. Con el timer 2 le das la frecuencia, pero con CCPxIF le das el tiempo de duty cycle. Además que aunque solo esté la interrupcion de timer 2, tanto GIE como PEIE deberian estar habilitadas. Y en el fuente configura el timer 2 pero no habilita las interrupciones.
No dudo que no funcione maunix, pero no se....... a mi me falta fuente por todas partes jajajaja quizas el problema sea mio, que soy un enfermo de la configuracion jajaja y toco todos los registros aunque no haga falta configurarlos.
Seguramente tienes más razón que yo.
PD: El pueblo no se va!!!! el pueblo no se va!!!! el pueblo no se va!!!!
-
Hola mecatrónicomarc:
Revisa esto:
http://www.interq.or.jp/japan/se-inoue/e_pic6_9.htm
Esta persona tiene una página interesante y aquí coloca un control de velocidad usando PWM (en ensamblador).
Sigue los enlaces hasta que llegues al diagrama de flujo, a el programa y, a la explicación de cada uno de los segmentos de programa.
Mientras que escribía esto, surgió la respuesta de Deimos.
Coincido con Mauricio en que no necesitas configurar las interrupciones pero la página que presento lo hace :?
-
Hombre no me digas eso, como que Y donde sirves la interrupcion de timer???? No veo donde habilitas la interrupcion del timer2, ni donde reconoces la interrupcion. Tampoco veo que actives GIE ni PEIE. No se, tampoco habilitas la interrupcion de CCP. Personalmente nunca habia visto hacer una pwm así. No dudo que no se pueda hacer, pero a mí me faltan bastantes cosas en este fuente.
Deimos, creo que estás confundido, El PWM no necesita tener una interrupción habilitada para funcionar, solamente que corra el TIMER2.
Saludos
Hombre no me digas que no necesitas interrupcion para funcionar. Con el timer 2 le das la frecuencia, pero con CCPxIF le das el tiempo de duty cycle. Además que aunque solo esté la interrupcion de timer 2, tanto GIE como PEIE deberian estar habilitadas. Y en el fuente configura el timer 2 pero no habilita las interrupciones.
No dudo que no funcione maunix, pero no se....... a mi me falta fuente por todas partes jajajaja quizas el problema sea mio, que soy un enfermo de la configuracion jajaja y toco todos los registros aunque no haga falta configurarlos.
Seguramente tienes más razón que yo.
PD: El pueblo no se va!!!! el pueblo no se va!!!! el pueblo no se va!!!!
Deimos , no es cuestión de tener mas o menor razón en un tema , trato de ser objetivo en el punto, nada más.
Siendo más general, cualquier módulo del PIC funciona perfectamente sin el GIE habilitado, o sin su interrupción habilitada.
Las interrupciones las usamos cuando queremos que el micro responda de inmediato a algún estímulo, pero no es obligatorio que así sea.
De hecho en el caso puntual del PWM, la interrupción serviría , en todo caso para cambiar el duty cycle o para detener el pwm si así lo deseamos, etc. Pero el PWM correrá y correrá sin parar, mientras el Timer2 esté corriendo, con o sin interrupciones.
Incluso si cambiamos el duty cycle, el mismo entrará en vigencia en el próximo ciclo.
Saludos
-
Pues mira es algo que no sabia :shock: Siempre que hago algo con un pic lo hago bajo interrupciones puras y duras. Siempre que se puede claro. Me da la sensacion que le da mas estabilidad al sistema. Pero bueno supongo que es cuestion de gustos.
De todos modos y volviendo al hilo principal, no veo donde pasa el CCP1L al CCP2H en el fuente. Generas 1 o 2 señales? Pensaba que solo generabas una, pero despues de ver que necesitas ccp2H, cada vez entiendo menos.
-
Pues mira es algo que no sabia :shock: Siempre que hago algo con un pic lo hago bajo interrupciones puras y duras. Siempre que se puede claro. Me da la sensacion que le da mas estabilidad al sistema. Pero bueno supongo que es cuestion de gustos.
En algunos casos es cuestión de gusto usar o no interrupciones, en otros es obligación usar interrupciones.
De todas formas, opino al revés que tú, para mi me parece que es más fácil no cometer errores (hacer un sistema más estable) cuando uno NO usa interrupciones que cuando las usa, al menos para el que recién comienza.
De todos modos y volviendo al hilo principal, no veo donde pasa el CCP1L al CCP2H en el fuente. Generas 1 o 2 señales? Pensaba que solo generabas una, pero despues de ver que necesitas ccp2H, cada vez entiendo menos.
Deimos yo no veo ningún CCP2H en el código fuente que subió mecatronicomarc
-
Coincido con mauricio, si no sabes utilizar las interrupciones es mejor no meterse con ellas. Uno sabe qué hará cuando se dirije al vector de interrupciones porque uno las ha utilizado y, como él, cuando uno intentó usarlas creía que el programa no servía.
Todo por no saber que el programa "brinca" a la línea cuatro.
De todas maneras creo que mecatrónicomarc ya lo solucionó o se dió por vencido; la información que proporciona Deimos le ayudará en un futuro.