Component: PWM 16CH 12Bit (PCA9685) (General Output)
Author | Matrix TSL |
Version | 1.0 (Release) |
Category | General Output |
Contents
PWM 16CH 12Bit (PCA9685) component
The PCA9685 is an I²C-bus controlled 16-channel LED controller optimized for Red/Green/Blue/Amber (RGBA) color backlighting or Servo motor applications. Each output has its own 12-bit resolution (4096 steps) fixed frequency individual PWM controller that operates at a programmable frequency from a typical of 24 Hz to 1526 Hz. All outputs are set to the same PWM frequency. Up to 64 devices can be chained together on a single I²C-bus to provide up to 1024 individual PWM outputs.
Examples
No additional examples
Downloadable macro reference
Reset
Sends a reset command to the PCA9685 chip over I2C
Parameters
- This macro has no parameters
Return value
- This call does not return a value
SetPWMFrequency
Sets the PWM frequency for the entire chip, up to approx 1.6 KHz
Parameters
- FLOAT Frequency
- Floating point frequency that we will attempt to match
Return value
- This call does not return a value
SetOutputMode
Sets the output mode of the PCA9685 to either open drain or push pull.
Warning: LEDs with integrated zener diodes should only be driven in open drain mode.
Parameters
- BOOL Mode
- 0=OpenDrain, 1=Push/Pull
Return value
- This call does not return a value
Sleep
Puts the module into Sleep mode
Parameters
- This macro has no parameters
Return value
- This call does not return a value
SetExternalClock
Sets EXTCLK pin to use the external clock
Parameters
- BYTE Prescale
- External Clock Prescaler - Range: 3-255
Return value
- This call does not return a value
SetAddress
Allows a different I2C address to be specified allowing one component to control
multiple PCA9685 modules.
Parameters
- BYTE Address
- Range: 0x40 - 0x7F
Return value
- This call does not return a value
SetClockFrequency
Sets the current clock frequency, used for things like calculating the PWM frequency and Microsecond duty.
Parameters
- ULONG Clock
Return value
- This call does not return a value
GetClockFrequency
Returns the current clock frequency
Parameters
- This macro has no parameters
Return value
WriteMicroseconds
Sets the PWM output of one of the PCA9685 pins based on the input microseconds, output is not precise
Parameters
- BYTE Output
- One of the PWM output pins - Range: 0 to 15
- UINT Microseconds
- The number of Microseconds to turn the PWM output ON
Return value
- This call does not return a value
SetPWM
Sets the PWM output of one of the PCA9685 pins
Parameters
- BYTE Output
- One of the PWM output pins - Range: 0 to 15
- UINT On
- At what point in the 4096-part cycle to turn the PWM output ON
- UINT Off
- At what point in the 4096-part cycle to turn the PWM output OFF
Return value
- This call does not return a value
Initialise
Sets up the I2C ready for communications to begin
Parameters
- This macro has no parameters
Return value
- This call does not return a value
SetPin
Sets pin without having to deal with on/off tick placement and properly handles a zero value as completely off and 4095 as completely on.
Parameters
- BYTE Output
- One of the PWM output pins - Range: 0 to 15
- UINT Duty
- The number of ticks out of 4096 to be active
- BOOL Invert
- 0=Normal, 1=Inverted
Return value
- This call does not return a value
WakeUp
Wakes the module from Sleep mode
Parameters
- This macro has no parameters
Return value
- This call does not return a value
Simulation macro reference
This component does not contain any simulation macros
Property reference
Address
This property is of type Fixed list of ints and can be referenced with the variable name Address.
Module I2C Address.
This setting can be overridden using the SetAddress component macro.
Output Mode
This property is of type Fixed list of ints and can be referenced with the variable name OutputMode.
Sets the output mode of the PCA9685 to either open drain or push pull.
Warning: LEDs with integrated zener diodes should only be driven in open drain mode.
Can be overridden using the SetOutputMode component macro.
Clock Type
This property is of type Fixed list of ints and can be referenced with the variable name ClockType.
Configures the input clock source to the module.
Clock Frequency
This property is of type Unsigned integer and can be referenced with the variable name ClockFrequency.
Frequency of the module.
Internal oscillator defaults to 250000000 or 25MHz but can actually be anywhere from 23 to 27MHz.
External clock frequency can be specified here up to a max value of 50000000 or 50MHz.
This setting can be overridden using the SetClockFrequency component macro.
Prescaler
This property is of type Unsigned integer and can be referenced with the variable name Prescaler.
External Clock Prescaler
Range: 3 to 255
Target PWM Frequency
This property is of type Floating point and can be referenced with the variable name TargetPWMFreq.
The ideal PWM frequency we would like to generate on the output pins.
Servo motors require an output frequency around 50Hz.
LEDs require a mugh higher output frequency to avoid visible flicker.
Actual PWM Frequency
This property is of type Floating point and can be referenced with the variable name PWMFrequency.
The calculated actual PWM frequency available using the Clock Frequency and Prescaler
PWM Resolution
This property is of type Floating point and can be referenced with the variable name PWMResolution.
Number of microseconds the PWM output can resolve to
Channel
This property is of type Fixed list of ints and can be referenced with the variable name cal_i2c1::CHANNEL.
Channel selection
Baud Select
This property is of type Fixed list of ints and can be referenced with the variable name cal_i2c1::BAUD_LIST.
Baud rate option selector
Baud Rate
This property is of type Signed integer and can be referenced with the variable name cal_i2c1::BAUD.
Baud rate to be used
SDA
This property is of type Single digital pin and can be referenced with the variable name cal_i2c1::SDA.
Pin used for SDA (data signal)
SCL
This property is of type Single digital pin and can be referenced with the variable name cal_i2c1::SCL.
Pin used for SCL (clock signal)
Stop Delay
This property is of type True or false and can be referenced with the variable name cal_i2c1::StopDel.
On older microcontroller devices there is a potential for the I2C hardware channel to lock up if there is not
a 10ms delay between an I2C stop event and the next I2C start event.
Most modern microcontrollers will not have a problem so this property can be disabled to speed up the
I2C communications.
Simulate Comms
This property is of type True or false and can be referenced with the variable name SimComms.
No additional information
Scope Traces
This property is of type True or false and can be referenced with the variable name cal_i2c1::ScopeTraces.
Selects if the component pin connections are automatically generated on the data recorder window or not.
Yes: Automatically add the component pins to a group on the data recorder which will reflect the sim data during simultion.
No: Do not show the pin signals on the data recorder window.
Console Data
This property is of type True or false and can be referenced with the variable name cal_i2c1::ConsoleData.
Selects if the console data is automatically generated or not
API
This property is of type Fixed list of ints and can be referenced with the variable name cal_i2c1::Injector.
Specifies the API component on the panel to interact with to provide comms simulation.