![]() |
PropWare
3.0.0.229
C++ objects and CMake build system for Parallax Propeller
|
Utility class to handle general purpose I/O pins. More...
#include <PropWare/gpio/pin.h>
Public Types | |
enum | Channel { A, B } |
enum | Mask { P0 = BIT_0, P1 = BIT_1, P2 = BIT_2, P3 = BIT_3, P4 = BIT_4, P5 = BIT_5, P6 = BIT_6, P7 = BIT_7, P8 = BIT_8, P9 = BIT_9, P10 = BIT_10, P11 = BIT_11, P12 = BIT_12, P13 = BIT_13, P14 = BIT_14, P15 = BIT_15, P16 = BIT_16, P17 = BIT_17, P18 = BIT_18, P19 = BIT_19, P20 = BIT_20, P21 = BIT_21, P22 = BIT_22, P23 = BIT_23, P24 = BIT_24, P25 = BIT_25, P26 = BIT_26, P27 = BIT_27, P28 = BIT_28, P29 = BIT_29, P30 = BIT_30, P31 = BIT_31, NULL_PIN = 0 } |
enum | Dir { Dir::IN = 0, Dir::OUT = -1 } |
Public Member Functions | |
Pin (const PropWare::Pin::Mask mask=NULL_PIN) | |
Create a Pin variable. More... | |
Pin (const Pin::Mask mask, const Pin::Dir direction) | |
void | set_mask (const Pin::Mask mask) |
void | set_pin_number (const uint8_t pinNum) |
Set a Pin's mask based on the pin number (an integer, 0 through 31) More... | |
uint_fast8_t | get_pin_number () const |
Get the pin's number (an integer, 0 through 31) | |
Pin::Mask | get_mask () const |
Channel | get_channel () const |
void | set_channel (const Channel channel) |
void | write (const bool value) const |
Set or clear the pin programmatically. More... | |
bool | read () const |
Read the value from a single pin and return its state. More... | |
void | wait_until_high () const |
Hold cog execution until an input pin goes high. More... | |
void | wait_until_low () const |
Hold cog execution until an input pin goes low. More... | |
void | wait_until_toggle () const |
Hold cog execution until an input pin toggles. More... | |
bool | is_switch_low (const uint16_t debounceDelayInMillis=3) const |
Allow easy switch-press detection of any pin; Includes de-bounce protection. More... | |
int | rc_time (const bool state, const uint32_t timeout=SECOND/4) |
Set to input and measure the time it takes a signal to transition from a start state to the opposite state. More... | |
void | start_hardware_pwm (const uint32_t frequency) const |
Output a PWM signal on this pin. More... | |
void | stop_hardware_pwm () const |
Stop the hardware counter. | |
void | set_dir (const PropWare::Port::Dir direction) const |
Set port as either input or output. More... | |
PropWare::Port::Dir | get_dir () const |
Determine the direction this port is currently set to. More... | |
void | set_dir_out () const |
Set the port for output. | |
void | set_dir_in () const |
Set the port for input. | |
void | set () const |
Set selected output port high (set all pins to 1) More... | |
void | high () const |
void | on () const |
void | clear () const |
Clear selected output port (set it to 0) More... | |
void | low () const |
void | off () const |
void | toggle () const |
Toggle the output value of a port. More... | |
void | write_fast (const uint32_t value) const |
Allow easy writing to a port w/o destroying data elsewhere in the port; No shift is performed to align data with the desired output pins. More... | |
Static Public Member Functions | |
static void | flash_pin (const Pin::Mask pinMask, const unsigned int iterations=10) |
Great for quick debugging to ensure a line of code is executed, this will quickly flash a given pin a specific number of times. More... | |
static uint8_t | from_mask (const Mask mask) |
Determine which pin number based on a pin mask. More... | |
static Mask | to_mask (const uint8_t pinNum) |
Return a Mask type based on a pin number. More... | |
static void | flash_port (const uint32_t pinMask, unsigned int iterations=10) |
Great for quick debugging to ensure a line of code is executed, this will quickly flash a given set of pins a specific number of times. More... | |
Utility class to handle general purpose I/O pins.
|
stronginherited |
|
inherited |
Bit-mask of GPIO pins
PropWare::Pin::Pin | ( | const PropWare::Pin::Mask | mask = NULL_PIN | ) |
Create a Pin variable.
[in] | mask | Bit-mask of pin; One of PropWare::Pin::Mask |
[in] | mask | Bit-mask of pin; One of PropWare::Pin::Mask |
[in] | direction | Direction to initialize pin; One of PropWare::Pin::Dir |
|
inherited |
|
static |
Great for quick debugging to ensure a line of code is executed, this will quickly flash a given pin a specific number of times.
[in] | pinMask | Pin that should be flashed |
[in] | iterations | Number of times that the pin should flicker on and back off again |
Definition at line 51 of file pin.h.
|
staticinherited |
Great for quick debugging to ensure a line of code is executed, this will quickly flash a given set of pins a specific number of times.
[in] | pinMask | Pins that should be flashed |
[in] | iterations | Number of times that the pins should flicker on and back off again |
Definition at line 129 of file port.h.
|
staticinherited |
Determine which pin number based on a pin mask.
[in] | mask | Value with only a single bit set high representing Propeller pin (i.e.: 0x80 would be pin 7) |
Definition at line 98 of file port.h.
|
inherited |
|
inherited |
Definition at line 233 of file port.h.
bool PropWare::Pin::is_switch_low | ( | const uint16_t | debounceDelayInMillis = 3 | ) | const |
Allow easy switch-press detection of any pin; Includes de-bounce protection.
[in] | debounceDelayInMillis | Set the de-bounce delay in units of milliseconds |
Definition at line 171 of file pin.h.
|
inherited |
Definition at line 256 of file port.h.
|
inherited |
Definition at line 263 of file port.h.
|
inherited |
Definition at line 240 of file port.h.
int PropWare::Pin::rc_time | ( | const bool | state, |
const uint32_t | timeout = SECOND / 4 |
||
) |
Set to input and measure the time it takes a signal to transition from a start state to the opposite state.
Named rc_time because it is often used to measure a resistor-capacitor circuit's tendency to "decay" to either ground or 5 V (depending on wiring). Default time increments are specified in 1 microsecond units. Unit size can be changed with a call to set_io_dt function. The pulse will be positive if the I/O pin is transmitting a low signal before the call.
[in] | state | Starting pin state; true for high, false for low |
[in] | timeout | Time to wait (in clock ticks) before canceling the function call [Default = 1/4 second] |
bool PropWare::Pin::read | ( | ) | const |
|
inherited |
|
inherited |
void PropWare::Pin::set_mask | ( | const Pin::Mask | mask | ) |
Definition at line 80 of file pin.h.
void PropWare::Pin::set_pin_number | ( | const uint8_t | pinNum | ) |
void PropWare::Pin::start_hardware_pwm | ( | const uint32_t | frequency | ) | const |
Output a PWM signal on this pin.
Use the Propeller's built-in hardware counters to generate a PWM signal on the pin. This method does not set the pin direction, so be sure to invoke PropWare::Pin::set_dir_out()
prior to invoking this method.
[in] | frequency | Frequency in Hertz (Hz) |
Definition at line 243 of file pin.h.
|
staticinherited |
|
inherited |
void PropWare::Pin::wait_until_high | ( | ) | const |
void PropWare::Pin::wait_until_low | ( | ) | const |
void PropWare::Pin::wait_until_toggle | ( | ) | const |
void PropWare::Pin::write | ( | const bool | value | ) | const |
|
inherited |