Autor Tema: Interrupcion PWM e Intterrupcion del TIMER1 o TIMER2 ?  (Leído 3748 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pantera

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Interrupcion PWM e Intterrupcion del TIMER1 o TIMER2 ?
« en: 17 de Octubre de 2006, 17:31:51 »
Hola me gustaria ver si pueden ayudarme con este problema que tengo, o al menos aclarme si lo que digo esta bien o mal ? o algo asi

OBJETIVO:
Necesito programar un PWM en CCP1 y cuando terminer de contar el PWM atender una interrupcion por desvordamiento correspondiente del Timer. 

PREGUNTAS:
¿Primero puede acerse al reves que comience el bajo el PWM y despues lo ponga en alto y cuando baje atienda la interrupcion?

DUDAS:
Se que el  el cambio del pin (Alto a Bajo) lo hace cuando PR2 coincide con la parte alta del TIMER2 y que:

Periodo = [PR2+1]*4*Tosc* Valor_PredivisorTMR2

esto en C seria.

Código: C
  1. setup_ccp1(CCP_PWM);   // Configure CCP1 as a PWM
  2.              setup_timer_2(T2_DIV_BY_16, 1, 1);
  3.  
  4.         while (true){
  5.                 set_pwm1_duty(value);
  6.         }

De la ayuda

Código: C
  1. setup_timer_2 (mode, period, postscale)
  2.  
  3. mode: [PREDIVISOR EN LA FRECUENCIA]
  4. T2_DISABLED, T2_DIV_BY_1, T2_DIV_BY_4, T2_DIV_BY_16
  5.  
  6. period: [NO ENTIENDO BIEN]
  7. Es un valor int 0-255 que determina cuando el reloj del timer es reseteado.  
  8. //El el valor inicial despues del desvordamiento?
  9.  
  10. postscale:[POSTDIVISOR EN LA FRECUENCIA Solo para la intenrrupcion?]
  11. Es un numero de 1-16 que determina cuantos tiempos de reset hay antes de una interrupcion
  12. //[Division en la frecuencia]
  13. //Si pongo 1 la primera ves que se desvorde va y atiende la interrupcion.
  14. //Si pongo 2 la segunda ves que se desvorde va y atiende la interrupcion. y etc hasta 16

Por lo tanto
La temporizacion, perido, que esperaría seria en el PWM seria: ?

Primero ese es el reloj que estoy utilizando, Pero el Crital que tengo es de 12 Mhz. Uso el de 48 Mhz para los calculos ?
(tengo los fuses para USB).

Código: Ada
  1. #use delay(clock=48000000)
  2. Temporizacion = 4 * Tos *  Valor_PredivisorTMR2 * PR2
  3. Temporizacion = 4 * 48M *10^-1 * 16 * PR2
  4. Temporizacion = 4 * 2.083 E-8 * 16 * PR2
  5. Temporizacion = 1.33 E-6 * PR2

Pero donde establesco el PRS en CCS ?

Luego solo tendria que atender la interrupcion TIMER2

De antemano les agradesco, por la leida de todo lo que escribi.

GRACIAS


« Última modificación: 18 de Octubre de 2006, 01:56:51 por pantera »
La música es sinónimo de libertad, de tocar lo que quieras y como quieras, siempre que sea bueno y tenga pasión, que la música sea el alimento del amor y del alma.

        :-)El Rock es Cultura :-)

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: Interrupcion PWM e Intterrupcion del TIMER1 o TIMER2 ?
« Respuesta #1 en: 17 de Octubre de 2006, 20:16:09 »
No se mucho de C pero, no creo que puedas usar eso que quieres.

La condición (tengo entendido) de la bandera de interrupción se cumple cuando PR2=TMR2 y eso es cuando se termina la frecuencia, no cuando termina el ciclo de trabajo (página 136 y 146 del manual).

No creo recomedable que tomes como muestra ese periodo, tu frecuencia para PWM.

Por lo general se establece un tiempo global para el programa y en base a éste se hacen los cálculos.

Por ejemplo:
Llamar a la rutina cada 10 milisegundos o 100 milisegundos (depende de tu aplicación) y ejecutar el código PID. Si tu rutina arroja valores diferentes, se hará la corrección necesaria; si no hay correcciones, produce la salida anterior.
No pierdes tiempo porque tu PWM es en hardware, solo espera a que termine el periodo y se carga con el nuevo ciclo de trabajo; si tu PWM ya está corriendo, aunque modifiques los CCPRxL y CCPxCON<5,4>, el ciclo de trabajo anterior sigue y después que termina, se inicia con la nueva (en tu caso solo CCPR1L porque usas 8 bits y un solo canal).

Así es como he visto que plantean éste tipo de códigos.

Espero no aguarte la idea.
« Última modificación: 18 de Octubre de 2006, 04:04:33 por Mario »
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: Interrupcion PWM e Intterrupcion del TIMER1 o TIMER2 ?
« Respuesta #2 en: 17 de Octubre de 2006, 20:17:16 »
Una cosa mas:
Solo puedes usar el Timer 2 con el PWM, el 1 no.
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee