NAME Device::Chip::AD9833 - chip driver for AD9833 SYNOPSIS use Device::Chip::AD9833; use Future::AsyncAwait; my $chip = Device::Chip::AD9833->new; await $chip->mount( Device::Chip::Adapter::...->new ); await $chip->init; my $freq = 440; # in Hz await $chip->write_FREQ0( ( $freq << 28 ) / 25E6 ); # presuming 25MHz reference DESCRIPTION This Device::Chip subclass provides specific communication to an Analog Devices AD9833 attached to a computer via an SPI 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. METHODS The following methods documented in an await expression return Future instances. init await $chip->init; Resets the chip to a working configuration, including setting the B28 bit appropriately for the way this module writes the frequency registers. This method must be called before setting the frequency using "write_FREQ0" or "write_FREQ1". read_config $config = await $chip->read_config; Returns a HASH reference containing the current chip configuration. Note that since the chip does not support querying the configuration, this is just an in-memory copy maintained by the object instance, updated by calls to "change_config". The hash will contain the following named fields, all booleans. B28 HLB FSELECT PSELECT SLEEP1 SLEEP12 OPBITEN DIV2 MODE In addition, a new value wave will be created combining the current settings of MODE, OPBITEN and DIV2 to explain the waveform generated wave => "sine" | "triangle" | "square" | "square/2" change_config await $chip->change_config( %changes ); Writes updates to the chip configuration. Takes named arguments of the same form as returned by "read_config", including the synthesized wave setting. write_FREQ0 write_FREQ1 await $chip->write_FREQ0( $freq ); await $chip->write_FREQ1( $freq ); Writes the FREQ0 or FREQ1 frequency control register. $freq should be a 28bit integer value. write_PHASE0 write_PHASE1 await $chip->write_PHASE0( $phase ); await $chip->write_PHASE1( $phase ); Writes the PHASE0 or PHASE1 phase control register. $phase should be a 12bit integer value. AUTHOR Paul Evans <leonerd@leonerd.org.uk>