Exemplo n.º 1
0
Arquivo: pwm.c Projeto: cocasema/mraa
mraa_result_t
mraa_pwm_config_percent(mraa_pwm_context dev, int ms, float percentage)
{
    int old_dutycycle, old_period, status;

    if (!dev) {
        syslog(LOG_ERR, "pwm: config_percent: context is NULL");
        return MRAA_ERROR_INVALID_HANDLE;
    }

    old_dutycycle = mraa_pwm_read_duty(dev);
    old_period = mraa_pwm_read_period(dev);
    status = mraa_pwm_period_us(dev, ms * 1000);
    if (status != MRAA_SUCCESS) {
        mraa_pwm_write_duty(dev, old_dutycycle);
        return status;
    }
    status = mraa_pwm_write_duty(dev, 0);
    if (status != MRAA_SUCCESS) {
        return status;
    }
    status = mraa_pwm_pulsewidth_us(dev, (ms * 1000) * percentage);
    if (status != MRAA_SUCCESS) {
        mraa_pwm_write_duty(dev, old_dutycycle);
        mraa_pwm_write_period(dev, old_period);
        return status;
    }
    return MRAA_SUCCESS;
}
Exemplo n.º 2
0
Arquivo: pwm.c Projeto: Sayter99/mraa
float
mraa_pwm_read(mraa_pwm_context dev)
{
    int period = mraa_pwm_read_period(dev);
    if (period > 0) {
        return (mraa_pwm_read_duty(dev) / (float) period);
    }
    return 0.0f;
}
Exemplo n.º 3
0
Arquivo: pwm.c Projeto: Hbrinj/mraa
float
mraa_pwm_read(mraa_pwm_context dev)
{
    if (!dev) {
        syslog(LOG_ERR, "pwm: read: context is NULL");
        return MRAA_ERROR_INVALID_HANDLE;
    }

    int period = mraa_pwm_read_period(dev);
    if (period > 0) {
        return (mraa_pwm_read_duty(dev) / (float) period);
    }
    return 0.0f;
}
Exemplo n.º 4
0
Arquivo: pwm.c Projeto: ak1394/mraa
mraa_result_t
mraa_pwm_config_percent(mraa_pwm_context dev, int ms ,float percentage)
{
    int old_dutycycle, old_period, status;
    old_dutycycle = mraa_pwm_read_duty(dev);
    old_period = mraa_pwm_read_period(dev);
    status = mraa_pwm_write_duty(dev, 0);
    if (status != MRAA_SUCCESS) {
        return status;
    }
    status = mraa_pwm_period_us(dev, ms*1000);
    if (status != MRAA_SUCCESS) {
        mraa_pwm_write_duty(dev, old_dutycycle);
        return status;
    }
    status = mraa_pwm_pulsewidth_us(dev, (ms*1000)*percentage);
    if (status != MRAA_SUCCESS) {
        mraa_pwm_write_duty(dev, old_dutycycle);
        mraa_pwm_write_period(dev, old_period);
        return status;
    }
    return MRAA_SUCCESS;
}
Exemplo n.º 5
0
Arquivo: pwm.c Projeto: ak1394/mraa
float
mraa_pwm_read(mraa_pwm_context dev)
{
    float output = mraa_pwm_read_duty(dev) / (float) mraa_pwm_read_period(dev);
    return output;
}