Component: PWM 16CH 12Bit (PCA9685) (General Output)

From Flowcode Help
Revision as of 13:40, 7 July 2021 by BenR (talk | contribs) (XML import)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search
Author Matrix TSL
Version 1.0 (Release)
Category General Output


Image 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

ULONG


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.