TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: mecatronicomarc en 30 de Octubre de 2006, 03:03:49

Título: PWM en el pic16f873a
Publicado 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
Título: Re: PWM en el pic16f873a
Publicado por: BrunoF en 30 de Octubre de 2006, 04:04:41
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
    
Código: ASM
  1. bsf       STATUS,5

Por:

Código: ASM
  1. bcf     STATUS,RP1
  2. bsf     STATUS,RP0
Saludos.
Título: Re: PWM en el pic16f873a
Publicado por: Deimos en 30 de Octubre de 2006, 12:00:54
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.
Título: Re: PWM en el pic16f873a
Publicado por: maunix en 30 de Octubre de 2006, 12:54:19
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

Título: Re: PWM en el pic16f873a
Publicado por: Deimos en 30 de Octubre de 2006, 13:13:17
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!!!!
Título: Re: PWM en el pic16f873a
Publicado por: Mario en 30 de Octubre de 2006, 13:15:19
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  :?
Título: Re: PWM en el pic16f873a
Publicado por: maunix en 30 de Octubre de 2006, 13:22:39
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



Título: Re: PWM en el pic16f873a
Publicado por: Deimos en 31 de Octubre de 2006, 06:00:59
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.

Título: Re: PWM en el pic16f873a
Publicado por: maunix en 31 de Octubre de 2006, 08:32:46
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
Título: Re: PWM en el pic16f873a
Publicado por: Mario en 31 de Octubre de 2006, 14:11:21
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.