pwm: Added API for PWM.
* Added include line on main maa header to include PWM definitions. Signed-off-by: Thomas Ingleby <thomas.c.ingleby@intel.com>
This commit is contained in:
@@ -27,6 +27,7 @@
|
||||
#include "i2c.h"
|
||||
#include "i2cslave.h"
|
||||
#include "gpio.h"
|
||||
#include "pwm.h"
|
||||
|
||||
#define MAA_LIBRARY_VERSION 1
|
||||
|
||||
|
||||
128
api/pwm.h
Normal file
128
api/pwm.h
Normal file
@@ -0,0 +1,128 @@
|
||||
/*
|
||||
* Author: Thomas Ingleby <thomas.c.ingleby@intel.com>
|
||||
*
|
||||
* Copyright © 2014 Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
namespace maa {
|
||||
|
||||
/** A PWM object, used for interacting with PWM output.
|
||||
*
|
||||
* Example:
|
||||
* @code
|
||||
* // Set up PWM object then cycle percentage 0-100.
|
||||
*
|
||||
* #include "maa.h"
|
||||
*
|
||||
* PWM pwm(3);
|
||||
*
|
||||
* int main() {
|
||||
* pwm.period_us(7968750i); //Max Galileo Rev D
|
||||
* pwm.enable(1);
|
||||
*
|
||||
* float value = 0;
|
||||
* while(1) {
|
||||
* pwm.write(value);
|
||||
* sleep(0.5);
|
||||
* if(value == 1.0) {
|
||||
* value = 0;
|
||||
* } else {
|
||||
* value = value +0.1;
|
||||
* }
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
*/
|
||||
class PWM {
|
||||
|
||||
public:
|
||||
|
||||
/** Create an PWM object
|
||||
*
|
||||
* @param pin The PWM pin to operate on.
|
||||
*/
|
||||
PWM(int pin);
|
||||
|
||||
/** Set the ouput duty-cycle percentage, as a float
|
||||
*
|
||||
* @param percentage A floating-point value representing percentage of output.
|
||||
* The value should lie between 0.0f (representing on 0%) and 1.0f
|
||||
* Values above or below this range will be set at either 0.0f or 1.0f.
|
||||
*/
|
||||
void write(float percentage);
|
||||
|
||||
/** Read the ouput duty-cycle percentage, as a float
|
||||
*
|
||||
* @return percentage A floating-point value representing percentage of output.
|
||||
* The value should lie between 0.0f (representing on 0%) and 1.0f
|
||||
* Values above or below this range will be set at either 0.0f or 1.0f.
|
||||
*/
|
||||
float read();
|
||||
|
||||
/** Set the PWM period as seconds represented in a float
|
||||
*
|
||||
* @param seconds Peroid represented as a float in seconds.
|
||||
*/
|
||||
void period(float seconds);
|
||||
|
||||
/** Set period. Microseconds.
|
||||
* @param ms microseconds for period.
|
||||
*/
|
||||
void period_ms(int ms);
|
||||
|
||||
/** Set period. Nanoseconds
|
||||
* @param ns nanoseconds as period.
|
||||
*/
|
||||
void perod_us(int us);
|
||||
|
||||
/** Set pulsewidth, As represnted by seconds in a (float).
|
||||
* @param seconds The duration of a pulse
|
||||
*/
|
||||
void pulsewidth(float seconds);
|
||||
|
||||
/** Set pulsewidth. Microseconds
|
||||
* @param ms microseconds for pulsewidth.
|
||||
*/
|
||||
void pulsewidth_ms(int ms);
|
||||
|
||||
/** Set pulsewidth, nanoseconds.
|
||||
* @param us nanoseconds for pulsewidth.
|
||||
*/
|
||||
void pulsewidth_us(int us);
|
||||
|
||||
/** Set the enable status of the PWM pin. None zero will assume on with output being driven.
|
||||
* and 0 will disable the output.
|
||||
* @param enable enable status of pin
|
||||
*/
|
||||
void enable(int enable);
|
||||
|
||||
/** Close and unexport the PWM pin.
|
||||
*/
|
||||
void close();
|
||||
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user