NAME
Device::Chip::AD5691R
- chip driver for AD5691R
SYNOPSIS
use Device::Chip::AD5691R;
use Future::AsyncAwait;
my $chip = Device::Chip::AD5691R->new;
await $chip->mount( Device::Chip::Adapter::...->new );
my $voltage = 1.23;
await $chip->write_dac( 4096 * $voltage / 2.5 );
print "Output is now set to 1.23V\n";
DESCRIPTION
This Device::Chip subclass provides specific communications to an Analog Devices AD5691R attached to the computer via an I²C adapter.
The reader is presumed to be familiar with the general operation of this chip; the documentation here will not attempt to explain or define chip-specific concepts or features, only the use of this module to access them.
MOUNT PARAMETERS
addr
The I²C address of the device. Can be specified in decimal, octal or hex with leading 0
or 0x
prefixes.
ACCESSORS
The following methods documented in an await
expression return Future instances.
read_config
$config = await $chip->read_config;
Returns a HASH
reference containing the chip's current configuration
GAIN => 1 | 2
REF => 0 | 1
PD => "normal" | "1k" | "100k" | "hiZ"
Note that since the chip does not itself allow reading of its configuration, this method simply returns the internally-cached values. This cache is initialised to power-on defaults, and tracked by the change_config
method.
change_config
await $chip->change_config( %changes );
Changes the configuration. Any field names not mentioned will be preserved at their existing values.
METHODS
write_dac
await $chip->write_dac( $dac, $update );
Writes a new value for the DAC output.
If $update
is true this will use the "update" form of write command, which writes both the DAC register and the input register. If false it only writes the input register, requiring a pulse on the LDAC pin to actually change the output voltage.
write_dac_voltage
await $chip->write_dac_voltage( $voltage );
Writes a new value for the DAC output immediately, converting the given voltage to the required raw value, taking into account the setting of the GAIN
config bit.
AUTHOR
Paul Evans <leonerd@leonerd.org.uk>