Private
Public Access
2
0

firmata: implemented pwm functions

Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
Mihai Tudor Panu
2016-03-16 12:57:49 -07:00
committed by Brendan Le Foll
parent 0e5dadeb8c
commit 405e601387

View File

@@ -429,7 +429,8 @@ mraa_firmata_pwm_init_internal_replace(void* func_table, int pin)
return NULL; return NULL;
} }
dev->pin = pin; dev->pin = pin;
dev->period = 2048; // Locked, in us dev->chipid = 512;
dev->period = 2048000; // Locked, in ns
dev->advance_func = (mraa_adv_func_t*) func_table; dev->advance_func = (mraa_adv_func_t*) func_table;
return dev; return dev;
@@ -438,19 +439,32 @@ mraa_firmata_pwm_init_internal_replace(void* func_table, int pin)
static mraa_result_t static mraa_result_t
mraa_firmata_pwm_write_replace(mraa_pwm_context dev, float percentage) mraa_firmata_pwm_write_replace(mraa_pwm_context dev, float percentage)
{ {
return MRAA_ERROR_FEATURE_NOT_IMPLEMENTED; int value = (int)((percentage - 1) / 8000);
firmata_analogWrite(firmata_dev, dev->pin, value);
firmata_dev->pins[dev->pin].value = value;
return MRAA_SUCCESS;
} }
static float static float
mraa_firmata_pwm_read_replace(mraa_pwm_context dev) mraa_firmata_pwm_read_replace(mraa_pwm_context dev)
{ {
return MRAA_ERROR_FEATURE_NOT_IMPLEMENTED; int value = firmata_dev->pins[dev->pin].value;
if (value) {
return (value + 1) * 8000;
}
return 0;
} }
static mraa_result_t static mraa_result_t
mraa_firmata_pwm_enable_replace(mraa_pwm_context dev, int enable) mraa_firmata_pwm_enable_replace(mraa_pwm_context dev, int enable)
{ {
return MRAA_ERROR_FEATURE_NOT_IMPLEMENTED; if (enable) {
firmata_pinMode(firmata_dev, dev->pin, MODE_PWM);
firmata_dev->pins[dev->pin].value = 0;
} else {
firmata_pinMode(firmata_dev, dev->pin, MODE_INPUT);
}
return MRAA_SUCCESS;
} }
static void* static void*