Exemplo n.º 1
0
void t3(int pi)
{
   int pw[3]={500, 1500, 2500};
   int dc[4]={20, 40, 60, 80};

   int f, rr, v;
   float on, off;

   int t, id;

   printf("PWM/Servo pulse accuracy tests.\n");

   id = callback(pi, GPIO, EITHER_EDGE, t3cbf);

   for (t=0; t<3; t++)
   {
      set_servo_pulsewidth(pi, GPIO, pw[t]);
      v = get_servo_pulsewidth(pi, GPIO);
      CHECK(3, t+t+1, v, pw[t], 0, "get servo pulsewidth");

      time_sleep(1);
      t3_reset = 1;
      time_sleep(4);
      on = t3_on;
      off = t3_off;
      CHECK(3, t+t+2, (1000.0*(on+off))/on, 20000000.0/pw[t], 1,
         "set servo pulsewidth");
   }

   set_servo_pulsewidth(pi, GPIO, 0);
   set_PWM_frequency(pi, GPIO, 1000);
   f = get_PWM_frequency(pi, GPIO);
   CHECK(3, 7, f, 1000, 0, "set/get PWM frequency");

   rr = set_PWM_range(pi, GPIO, 100);
   CHECK(3, 8, rr, 200, 0, "set PWM range");

   for (t=0; t<4; t++)
   {
      set_PWM_dutycycle(pi, GPIO, dc[t]);
      v = get_PWM_dutycycle(pi, GPIO);
      CHECK(3, t+t+9, v, dc[t], 0, "get PWM dutycycle");

      time_sleep(1);
      t3_reset = 1;
      time_sleep(2);
      on = t3_on;
      off = t3_off;
      CHECK(3, t+t+10, (1000.0*on)/(on+off), 10.0*dc[t], 1,
         "set PWM dutycycle");
   }

   set_PWM_dutycycle(pi, GPIO, 0);

   callback_cancel(id);
}
Exemplo n.º 2
0
void t3()
{
   int pw[3]={500, 1500, 2500};
   int dc[4]={20, 40, 60, 80};

   int f, rr;
   float on, off;

   int t;

   printf("PWM/Servo pulse accuracy tests.\n");

   callback(GPIO, EITHER_EDGE, t3cbf);

   for (t=0; t<3; t++)
   {
      set_servo_pulsewidth(GPIO, pw[t]);
      time_sleep(1);
      t3_reset = 1;
      time_sleep(4);
      on = t3_on;
      off = t3_off;
      CHECK(3, 1+t, (1000.0*(on+off))/on, 20000000.0/pw[t], 1,
         "set servo pulsewidth");
   }

   set_servo_pulsewidth(GPIO, 0);
   set_PWM_frequency(GPIO, 1000);
   f = get_PWM_frequency(GPIO);
   CHECK(3, 4, f, 1000, 0, "set/get PWM frequency");

   rr = set_PWM_range(GPIO, 100);
   CHECK(3, 5, rr, 200, 0, "set PWM range");

   for (t=0; t<4; t++)
   {
      set_PWM_dutycycle(GPIO, dc[t]);
      time_sleep(1);
      t3_reset = 1;
      time_sleep(2);
      on = t3_on;
      off = t3_off;
      CHECK(3, 6+t, (1000.0*on)/(on+off), 10.0*dc[t], 1,
         "set PWM dutycycle");
   }

   set_PWM_dutycycle(GPIO, 0);

}
Exemplo n.º 3
0
/*
 * OUTPUTS
 */
bool HAL_SERVO_PULSE_WIDTH_SET(uint32_t gpioIndex, uint32_t pulseWidthUsec)
{
    // write pulse width to the output gpio
    int32_t rtnVal = set_servo_pulsewidth(gpioOutputs[gpioIndex], pulseWidthUsec);
                   
    if(rtnVal != 0)
    {
        printf("spnServoSetPulseWidth: set_servo_pulsewidth - %s\n", pigpio_error(rtnVal));
        return EXIT_FAILURE;
    }
    else
    {
    	gpioOutputPulses[gpioIndex] = pulseWidthUsec;
        return EXIT_SUCCESS;
    }
}