Colapsar columna

Menu Usuario -

Hola, Visitante
avatar


Mas Activos -

nocturno
Mensajes: 1685
djfreeman
Mensajes: 269
Meta
Mensajes: 254
spiderman
Mensajes: 201
residente
Mensajes: 164

Autor Tema: funcion pwm usando el timer  (Leído 951 veces)

Desconectado jerry

  • Nuevo fichaje
  • *
  • Mensajes: 2
funcion pwm usando el timer
« en: Abril 11, 2007, 02:02 »
Hola a todos, les cuento que soy primiparo en esto de los PICs pero estoy
en el proceso de apredizaje y quiero compartir con ustedes mis logros.
est? es una funcion para posicionar dos servo motores de 0 a 180 grados sin usar los modulos pwm del pic solo tienes que mandarles los grados y el motor. por ejemplo pwm(80,1);
espero que les sea de utilidad chaoo......

void pwm(unsigned char grados,char motor)
{
  unsigned char contador=25;
  float TMR3HL,valor_PW,valor_Periodo;
  unsigned int16 TMR3HL_int;

  TMR3ON=0;   //Timer off

  //valor_PW=5.0e-003;   //Valor del ancho de pulso
  valor_PW=(grados*1.0e-005)+0.3e-003;
while(contador!=0)
{
  TMR3HL= valor_PW/200.0e-009;
  TMR3HL_int=(unsigned int16)TMR3HL;
  TMR3HL_int = 65536 - TMR3HL_int;
  set_timer1(TMR3HL_int);

  TMR3ON=1;    //Timer on
  while(!TMR3IF);
  TMR3IF=0;
   if (motor==1)
        output_high(PIN_D0);
   else
        output_high(PIN_D1);

  valor_Periodo=11.0e-003-valor_PW;
  TMR3HL= valor_Periodo/200.0e-009;
  TMR3HL_int=(unsigned int16)TMR3HL;
  TMR3HL_int = 65536 - TMR3HL_int;
  set_timer1(TMR3HL_int);

  while(!TMR3IF);
  TMR3IF=0;
  if (motor==1)
      output_low(PIN_D0);
  else
     output_low(PIN_D1);
  contador--;
}
output_high(PIN_D0);
output_high(PIN_D1);
}