Autor Tema: Problemita con PWM  (Leído 1755 veces)

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

Desconectado andpic

  • PIC10
  • *
  • Mensajes: 30
Problemita con PWM
« en: 13 de Diciembre de 2005, 05:35:00 »
Hola Chicos: Por favor quería ver si me pueden dar una mano con un problema que tengo con PWM. No logro hacerlo andar. Tengo todo configurado y calculado para la frecuencia que necesito, pero no me anda. Abajo cuelgo el programa. Por favor veanló y diganmé en que puedo estar fallando. Muchas Gracias

Datos:
PIC 16F819, frecuencia interna on la que lo hago trabajar=8Mhz
Frecuencia que necesito: 153.600 Hz
Calculo que saco del PR2=12

Me gustaría que me respondan:

1) Puede que no me esté andando porque tengo algo mal configurado del oscilador interno del PIC? es decir la linea:
#fuses  INTRC_IO, NOWDT, NOPROTECT, PUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG

2) Tengo que agregarle algo mas a esta linea para usar en oscilador interno y esa frecuencia? Tengo que colocar HS, XT, etc o alguno de estos parametros o estos son para cuando se usa un oscilador externo?

3) Tengo que configurar algo mas: Los puertos como salida?

Aca va el programa:

#include <16f819.h>
#fuses INTRC_IO, NOWDT, NOPROTECT, PUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG

#use delay(clock=8000000)


void main(void){

   long duty_PWM1;
   // Para la frecuencia del pic de 8 mhz, frecuencia de 153600 hz ,
   // T2DIV set to 1
   // Para calcular la frecuencia:
   // (4/frecuencia cristal)*T2_DIV*(periodo+1)

 // seleccionamos PWM para los dos módulos CCP
   setup_ccp1 (CCP_PWM);

   // (4/8000000)*1*(12+1)=0.00000651seg
   setup_timer_2(T2_DIV_BY_1, 12, 1);

 

   duty_PWM1 = 52; // 0.00000651seg/(1*(1/8000000))=52.08, que es el valor a
                   //cargar. Duty 50%

   set_pwm1_duty(duty_PWM1);


   while(1){   //bucle infinito.
   }
}

Muchas Gracias

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Problemita con PWM
« Respuesta #1 en: 14 de Diciembre de 2005, 16:17:00 »
Me vienen a la mente 2 soluciones

- Como tú dices, delcarar puerto C como salida (si ptoC en ese PIC tiene el PWM)
- La resolución PWM de tu PIC no es capaz de sacar un duty time al 50%.

La fórmula de la resolución en bits del PWM es:



Y si no es ninguna de las anteriores, tal vez deberías revisar lo del oscilador interno. Ahí no puedo ayudarte porque nunca he usado un PIC así. Muchas risas

Desconectado fecudo

  • PIC10
  • *
  • Mensajes: 14
RE: Problemita con PWM
« Respuesta #2 en: 29 de Diciembre de 2005, 01:57:00 »
hola

Tienes que configurar difentes parametros como por ejemplo el CCP1CON

Aqui debes activar el PWM

PWM Period = [(PR2) + 1] • 4 • TOSC •(TMR2 Prescale Value)
PWM Duty Cycle = (CCPR1L:CCP1CON<5:4>Giño •TOSC • (TMR2 Prescale Value)

Espero que te ayude.