NAME

Device::BusPirate::Mode::BB - use Device::BusPirate in bit-banging mode

SYNOPSIS

use Device::BusPirate;

my $pirate = Device::BusPirate->new;
my $bb = $pirate->enter_mode( "BB" )->get;

my $count = 0;
while(1) {
   $bb->write(
      miso => $count == 0,
      cs   => $count == 1,
      mosi => $count == 2,
      clk  => $count == 3,
      aux  => $count == 4,
   )->then( sub { $pirate->sleep( 0.5 ) })
    ->get;

  $count++;
  $count = 0 if $count >= 5;
}

DESCRIPTION

This object is returned by a Device::BusPirate instance when switching it into BB mode. It provides methods to configure the hardware, and interact with the five basic IO lines in bit-banging mode.

METHODS

configure

$bb->configure( %args )->get

Change configuration options. The following options exist; all of which are simple true/false booleans.

open_drain

If enabled, a "high" output pin will be set as an input; i.e. hi-Z. When disabled (default), a "high" output pin will be driven by 3.3V. A "low" output will be driven to GND in either case.

cs

miso

clk

mosi

aux

$bb->cs( $state )->get

$bb->miso( $state )->get

$bb->clk( $state )->get

$bb->mosi( $state )->get

$bb->aux( $state )->get

Set an output pin to the given logical state. Uses the open_drain configuration setting to determine whether high should be hi-Z or 3.3V.

write

$bb->write( %pins )->get

Sets the state of multiple output pins at the same time.

read_cs

read_miso

read_clk

read_mosi

read_aux

$state = $bb->read_cs->get

$state = $bb->read_miso->get

$state = $bb->read_clk->get

$state = $bb->read_mosi->get

$state = $bb->read_aux->get

Set a pin to input direction and read its current state.

read

$pins = $bbio->read->get

Returns a HASH containing the current state of all the pins currently configured as inputs. More efficient than calling multiple read_* methods when more than one pin is being read at the same time.

writeread

$in_pins = $bbio->writeread( %out_pins )->get

Combines the effects of write and read in a single operation; sets the output state of any pins in %out_pins then returns the input state of the pins currently set as inputs.

power

$bb->power( $power )->get

Enable or disable the VREG 5V and 3.3V power outputs.

pullup

$bb->pullup( $pullup )->get

Enable or disable the IO pin pullup resistors from Vpu. These are connected to the MISO, CLK, MOSI and CS pins.

AUTHOR

Paul Evans <leonerd@leonerd.org.uk>