modm API documentation
|
#include <modm/driver/pwm/pca9685.hpp>
Public Member Functions | |
Pca9685 (uint8_t address) | |
modm::ResumableResult< bool > | initialize (uint8_t mode1=0, uint8_t mode2=0) |
modm::ResumableResult< bool > | setChannel (uint8_t channel, uint16_t value) |
modm::ResumableResult< bool > | setAllChannels (uint16_t value) |
void | attachConfigurationHandler (I2c::ConfigurationHandler handler) |
modm::ResumableResult< bool > | ping () |
modm::ResumableResult< bool > | read (uint8_t *buffer, std::size_t size) |
Starts a write transaction and waits until finished. | |
void | setAddress (uint8_t address) |
modm::ResumableResult< bool > | write (const uint8_t *buffer, std::size_t size) |
Starts a write transaction and waits until finished. | |
modm::ResumableResult< bool > | writeRead (const uint8_t *writeBuffer, std::size_t writeSize, uint8_t *readBuffer, std::size_t readSize) |
Starts a write-read transaction and waits until finished. | |
Protected Member Functions | |
int8_t | getResumableDepth () const |
bool | isResumableRunning () const |
bool | isTransactionRunning () |
modm::ResumableResult< bool > | runTransaction () |
Starts our own transaction and waits until finished. | |
bool | startRead (uint8_t *buffer, std::size_t size) |
Configures the transaction with a read operation and starts it. | |
bool | startTransaction () |
Starts the transaction with our own transaction object. | |
bool | startTransaction (modm::I2cTransaction *transaction) |
Starts the transaction with a separate transaction object. | |
bool | startWrite (const uint8_t *buffer, std::size_t size) |
Configures the transaction with a write operation and starts it. | |
bool | startWriteRead (const uint8_t *writeBuffer, std::size_t writeSize, uint8_t *readBuffer, std::size_t readSize) |
Configures the transaction with a write/read operation and starts it. | |
void | stopResumable () |
bool | wasTransactionSuccessful () |
Protected Attributes | |
I2cWriteTransaction | transaction |
PCA9685 16-channel, 12-bit PWM LED controller, I2C-bus
This class allows for basic (and for most use cases sufficient) control of a PCA9685. It implements initialization (setting of MODE1 and MODE2 registers), writing values for single channels, and writing a value for all channels.
This driver has the following limitations:
|
inheritedinline |
Attaches a configuration handler, which is called before a transaction, whenever the configuration has to be changed.
modm::ResumableResult<bool> modm::pca9685< I2cMaster >::initialize | ( | uint8_t | mode1 = 0 , |
uint8_t | mode2 = 0 |
||
) |
Initialize the device.
Note: The bit AI (Auto Increment) in MODE2 register will always be set as it is essential for correct operation of this driver.
mode1 | value to be written to MODE1 register |
mode2 | value to be written to MODE2 register |
|
inheritedinlineprotected |
true
when transaction is busy. modm::pca9685< I2cMaster >::Pca9685 | ( | uint8_t | address | ) |
Constructor.
address | I2C address |
|
inheritedinline |
true | device responds to address |
false | no device with address found |
|
inheritedinline |
Sets a new address of the slave device.
address | the slave address not yet shifted left (address < 128). |
modm::ResumableResult<bool> modm::pca9685< I2cMaster >::setAllChannels | ( | uint16_t | value | ) |
Set all 16 12-bit PWM channels to the same value.
The upper 4 bits of value are masked out to ensure that always a 12-bit value is written.
value | 12-bit PWM value to be written |
modm::ResumableResult<bool> modm::pca9685< I2cMaster >::setChannel | ( | uint8_t | channel, |
uint16_t | value | ||
) |
Set the 12-bit PWM value of a single channel.
Checks if the specified channel is valid (return false otherwise) and masks out the upper 4 bits of value to ensure that always a 12-bit value is written.
channel | one of the 16 channels (0-15) |
value | 12-bit PWM value to be written |
|
inheritedinlineprotected |
true
when transaction did not return an error.