COSA
An Object-Oriented Platform for Arduino Programming
PWMPin Class Reference

#include <PWMPin.hh>

Inheritance diagram for PWMPin:
Inheritance graph
Collaboration diagram for PWMPin:
Collaboration graph

Public Types

enum  Direction { MSB_FIRST = 0, LSB_FIRST = 1 }
 

Public Member Functions

 PWMPin (Board::PWMPin pin, uint8_t duty=0)
 
void begin ()
 
void set (uint8_t duty)
 
void write (uint8_t duty)
 
PWMPinoperator= (uint8_t duty)
 
void set (uint16_t value, uint16_t min, uint16_t max)
 
void write (uint16_t value, uint16_t min, uint16_t max)
 
uint8_t duty ()
 
void _set () const
 
void _set (int value) const
 
void set () const
 
void set (int value) const
 
void high () const
 
void on () const
 
void _clear () const
 
void clear () const
 
void low () const
 
void off () const
 
void _toggle () const
 
void toggle () const
 
void _write (int value) const
 
void write (int value) const
 
void write (uint8_t value, OutputPin &clk, Direction order=MSB_FIRST) const
 
void write (uint16_t value, uint8_t bits, uint16_t us) const
 
OutputPinoperator<< (int value)
 
void pulse (uint16_t us) const
 
uint8_t pin () const
 
bool is_set () const
 
bool is_high () const
 
bool is_on () const
 
bool is_clear () const
 
bool is_low () const
 
bool is_off () const
 
bool read () const
 
uint8_t read (OutputPin &clk, Direction order=MSB_FIRST) const
 
 operator bool () const
 
Pinoperator>> (uint8_t &var)
 

Static Public Member Functions

static void mode (Board::DigitalPin pin, uint8_t initial=0)
 
static void toggle (Board::DigitalPin pin)
 
static void _write (Board::DigitalPin pin, uint8_t value)
 
static void write (Board::DigitalPin pin, int value)
 
static uint8_t MASK (uint8_t pin)
 
static volatile uint8_t * PIN (uint8_t pin)
 
static volatile uint8_t * DDR (uint8_t pin)
 
static volatile uint8_t * PORT (uint8_t pin)
 
static bool read (Board::DigitalPin pin)
 

Protected Member Functions

volatile uint8_t * PIN () const
 
volatile uint8_t * DDR () const
 
volatile uint8_t * PORT () const
 
volatile uint8_t * PCIMR () const
 

Protected Attributes

volatile uint8_t *const m_sfr
 
const uint8_t m_mask
 
const uint8_t m_pin
 

Detailed Description

Abstract pulse width modulation pin.

Definition at line 29 of file PWMPin.hh.

Member Enumeration Documentation

enum Pin::Direction
inherited

Serialization directions; most or least significant bit first.

Enumerator
MSB_FIRST 
LSB_FIRST 

Definition at line 84 of file Pin.hh.

Constructor & Destructor Documentation

PWMPin::PWMPin ( Board::PWMPin  pin,
uint8_t  duty = 0 
)

Construct an abstract pwm output pin for given Arduino pin number.

Parameters
[in]pinnumber.
[in]dutycycle (0..255)

Member Function Documentation

void OutputPin::_clear ( ) const
inlineinherited

Clear the output pin. Unprotected version.

Definition at line 114 of file OutputPin.hh.

void OutputPin::_set ( ) const
inlineinherited

Set the output pin. Unprotected version.

Definition at line 75 of file OutputPin.hh.

void OutputPin::_set ( int  value) const
inlineinherited

Set the output pin with the given value. Zero(0) to clear and non-zero to set. Unprotected version.

Parameters
[in]valueto set.

Definition at line 184 of file OutputPin.hh.

void OutputPin::_toggle ( ) const
inlineinherited

Toggle the output pin. Unprotected version.

Definition at line 153 of file OutputPin.hh.

void OutputPin::_write ( int  value) const
inlineinherited

Set the output pin with the given value. Zero(0) to clear and non-zero to set. Unprotected version.

Parameters
[in]valueto set.

Definition at line 219 of file OutputPin.hh.

static void OutputPin::_write ( Board::DigitalPin  pin,
uint8_t  value 
)
inlinestaticinherited

Set the given output pin with the given value. Zero(0) to clear and non-zero to set. Unprotected version when pin and value are constants.

Parameters
[in]pinnumber (must be constant).
[in]valueto write (must be constant).

Definition at line 345 of file OutputPin.hh.

void PWMPin::begin ( )

Start pwm pin. Power up timer.

void OutputPin::clear ( ) const
inlineinherited

Clear the output pin.

Note
atomic

Definition at line 124 of file OutputPin.hh.

static volatile uint8_t* Pin::DDR ( uint8_t  pin)
inlinestaticinherited

Return pointer to Data Direction Register.

Parameters
[in]pinnumber.
Returns
DDR register pointer.

Definition at line 64 of file Pin.hh.

volatile uint8_t* Pin::DDR ( ) const
inlineprotectedinherited

Return pointer to Data Direction Register.

Returns
DDR register pointer.

Definition at line 245 of file Pin.hh.

uint8_t PWMPin::duty ( )

Return duty setting for pwm output pin.

Returns
duty
void OutputPin::high ( ) const
inlineinherited

Set the output pin.

Note
atomic

Definition at line 95 of file OutputPin.hh.

bool Pin::is_clear ( ) const
inlineinherited

Return true(1) if the pin is clear otherwise false(0).

Returns
boolean.

Definition at line 142 of file Pin.hh.

bool Pin::is_high ( ) const
inlineinherited

Return true(1) if the pin is set otherwise false(0).

Returns
boolean.

Definition at line 122 of file Pin.hh.

bool Pin::is_low ( ) const
inlineinherited

Return true(1) if the pin is clear otherwise false(0).

Returns
boolean.

Definition at line 152 of file Pin.hh.

bool Pin::is_off ( ) const
inlineinherited

Return true(1) if the pin is clear otherwise false(0).

Returns
boolean.

Definition at line 162 of file Pin.hh.

bool Pin::is_on ( ) const
inlineinherited

Return true(1) if the pin is set otherwise false(0).

Returns
boolean.

Definition at line 132 of file Pin.hh.

bool Pin::is_set ( ) const
inlineinherited

Return true(1) if the pin is set otherwise false(0).

Returns
boolean.

Definition at line 112 of file Pin.hh.

void OutputPin::low ( ) const
inlineinherited

Clear the output pin.

Note
atomic

Definition at line 134 of file OutputPin.hh.

static uint8_t Pin::MASK ( uint8_t  pin)
inlinestaticinherited

Return bit mask for given Arduino pin number.

Parameters
[in]pinnumber.
Returns
pin bit mask.

Definition at line 42 of file Pin.hh.

static void OutputPin::mode ( Board::DigitalPin  pin,
uint8_t  initial = 0 
)
inlinestaticinherited

Set output pin to mode.

Parameters
[in]pinnumber.
[in]initialvalue.
Note
atomic

Definition at line 56 of file OutputPin.hh.

void OutputPin::off ( ) const
inlineinherited

Clear the output pin.

Note
atomic

Definition at line 144 of file OutputPin.hh.

void OutputPin::on ( ) const
inlineinherited

Set the output pin.

Note
atomic

Definition at line 105 of file OutputPin.hh.

Pin::operator bool ( ) const
inlineinherited

Read input pin and assign variable.

Parameters
[out]varto assign.
Returns
pin.

Definition at line 204 of file Pin.hh.

OutputPin& OutputPin::operator<< ( int  value)
inlineinherited

Set the output pin with the given value. Zero(0) to clear and non-zero to set. Output operator syntax.

Parameters
[in]valueto write.
Returns
output pin.

Definition at line 364 of file OutputPin.hh.

PWMPin& PWMPin::operator= ( uint8_t  duty)
inline

Set duty cycle for pwm output pin.

Parameters
[in]dutycycle (0..255)
Returns
pwm pin.

Definition at line 64 of file PWMPin.hh.

Pin& Pin::operator>> ( uint8_t &  var)
inlineinherited

Read input pin and assign variable.

Parameters
[out]varto assign.
Returns
pin.

Definition at line 215 of file Pin.hh.

volatile uint8_t* Pin::PCIMR ( ) const
inlineprotectedinherited

Return pin change interrupt mask register.

Returns
pin change mask register pointer.

Definition at line 263 of file Pin.hh.

static volatile uint8_t* Pin::PIN ( uint8_t  pin)
inlinestaticinherited

Return pointer to PIN register.

Parameters
[in]pinnumber.
Returns
PIN register pointer.

Definition at line 53 of file Pin.hh.

uint8_t Pin::pin ( ) const
inlineinherited

Return Arduino pin number of abstract pin.

Returns
pin number.

Definition at line 103 of file Pin.hh.

volatile uint8_t* Pin::PIN ( ) const
inlineprotectedinherited

Return pointer to PIN register.

Returns
PIN register pointer.

Definition at line 236 of file Pin.hh.

static volatile uint8_t* Pin::PORT ( uint8_t  pin)
inlinestaticinherited

Return pointer to data PORT register.

Parameters
[in]pinnumber.
Returns
PORT register pointer.

Definition at line 75 of file Pin.hh.

volatile uint8_t* Pin::PORT ( ) const
inlineprotectedinherited

Return pointer to data PORT register.

Returns
PORT register pointer.

Definition at line 254 of file Pin.hh.

void OutputPin::pulse ( uint16_t  us) const
inlineinherited

Toggle the output pin to form a pulse with given width in micro-seconds.

Parameters
[in]uspulse width in micro seconds
Note
atomic
pulse width is limited to 1000 us

Definition at line 378 of file OutputPin.hh.

bool Pin::read ( ) const
inlineinherited

Return true(1) if the pin is set otherwise false(0).

Returns
boolean.

Definition at line 172 of file Pin.hh.

uint8_t Pin::read ( OutputPin clk,
Direction  order = MSB_FIRST 
) const
inherited

Shift in a byte from the input pin using the given clock output pin. Shift in according to given direction.

Parameters
[in]clkoutput pin.
[in]orderbit first.
Returns
value.

Definition at line 25 of file Pin.cpp.

static bool Pin::read ( Board::DigitalPin  pin)
inlinestaticinherited

Use pin number directly to read value. Does not require an instance. Return true(1) if the pin is set otherwise false(0).

Parameters
[in]pinnumber.
Returns
boolean.

Definition at line 193 of file Pin.hh.

void PWMPin::set ( uint8_t  duty)

Set duty cycle for pwm output pin.

Parameters
[in]dutycycle (0..255)
void PWMPin::set ( uint16_t  value,
uint16_t  min,
uint16_t  max 
)

Set duty cycle for pwm output pin with given value mapping. The value is mapped from ]min..max[ to duty [0..255]. Value below min is mapped to zero(0) and above max to 255.

Parameters
[in]valueto map.
[in]minvalue.
[in]maxvalue.

Definition at line 722 of file PWMPin.cpp.

void OutputPin::set ( ) const
inlineinherited

Set the output pin.

Note
atomic

Definition at line 85 of file OutputPin.hh.

void OutputPin::set ( int  value) const
inlineinherited

Set the output pin with the given value. Zero(0) to clear and non-zero to set.

Parameters
[in]valueto set.
Note
atomic

Definition at line 201 of file OutputPin.hh.

void OutputPin::toggle ( ) const
inlineinherited

Toggle the output pin.

Note
atomic

Definition at line 163 of file OutputPin.hh.

static void OutputPin::toggle ( Board::DigitalPin  pin)
inlinestaticinherited

Toggle the output pin. Atomic per definition

Parameters
[in]pinnumber.

Definition at line 173 of file OutputPin.hh.

void PWMPin::write ( uint8_t  duty)
inline

Set duty cycle for pwm output pin.

Parameters
[in]dutycycle (0..255)

Definition at line 53 of file PWMPin.hh.

void PWMPin::write ( uint16_t  value,
uint16_t  min,
uint16_t  max 
)
inline

Set duty cycle for pwm output pin with given value mapping. The value is mapped from ]min..max[ to duty [0..255]. Value below min is mapped to zero(0) and above max to 255.

Parameters
[in]valueto map.
[in]minvalue.
[in]maxvalue.

Definition at line 89 of file PWMPin.hh.

void OutputPin::write ( int  value) const
inlineinherited

Set the output pin with the given value. Zero(0) to clear and non-zero to set.

Parameters
[in]valueto write.
Note
atomic

Definition at line 236 of file OutputPin.hh.

void OutputPin::write ( uint8_t  value,
OutputPin clk,
Direction  order = MSB_FIRST 
) const
inherited

Shift out given byte to the output pin using the given clock output pin. Shift out according to given direction. Data (bits) are transfered on clock transition. Interrupts are allowed during the shift out.

Parameters
[in]valueto write.
[in]clkoutput pin.
[in]orderbit first.

Definition at line 24 of file OutputPin.cpp.

void OutputPin::write ( uint16_t  value,
uint8_t  bits,
uint16_t  us 
) const
inherited

Shift out given value and number of bits to the output pin using the given pulse length in micro-seconds. Shift out from LSB(0) to MSB(bits-1). This operation is synchronized and will turn off interrupt handling during the transmission period.

Parameters
[in]valueto write.
[in]bitsto write.
[in]usmicro-second bit period.
Note
atomic
us should not exceed 1000

Definition at line 46 of file OutputPin.cpp.

static void OutputPin::write ( Board::DigitalPin  pin,
int  value 
)
inlinestaticinherited

Set the given output pin with the given value. Zero(0) to clear and non-zero to set.

Parameters
[in]pinnumber.
[in]valueto write.
Note
atomic

Definition at line 306 of file OutputPin.hh.

Member Data Documentation

const uint8_t Pin::m_mask
protectedinherited

Pin mask in port.

Definition at line 227 of file Pin.hh.

const uint8_t Pin::m_pin
protectedinherited

Pin identity.

Definition at line 230 of file Pin.hh.

volatile uint8_t* const Pin::m_sfr
protectedinherited

Special function register pointer.

Definition at line 224 of file Pin.hh.


The documentation for this class was generated from the following files: