NAME

Device::AVR::Info - load data from Atmel AVR Studio device files

SYNOPSIS

use Device::AVR::Info;

my $avr = Device::AVR::Info->new_from_file( "devices/ATtiny84.xml" );

printf "The signature of %s is %s\n",
   $avr->name, $avr->signature;

DESCRIPTION

This module loads an parses "part info" XML files as supplied with Atmel's AVR Studio, and provides convenient access to the data stored inside them.

CONSTRUCTORS

new_from_file

$avr = Device::AVR::Info->new_from_file( $filename )

Loads the device information from the given XML file.

ACCESSORS

name

$name = $avr->name

The device name (e.g. "ATtiny84")

architecture

$architecture = $avr->architecture

The device architecture (e.g. "AVR8")

family

$family = $avr->family

The device family (e.g. "tinyAVR")

interfaces

interface

@ifaces = $avr->interfaces

$iface = $avr->interface( $name )

Returns a list of interface instances, or a single one having the given name, representing the programming interfaces supported by the device.

Each is a structure of the following fields.

$iface->name
$iface->type

memories

memory

@memories = $avr->memories

$memory = $avr->memory( $name )

Returns a list of memory instances, or a single one having the given name, representing the available memories on the device.

Each is a structure of the following fields.

$memory->name
$memory->id
$memory->endianness
$memory->start # in bytes
$memory->size  # in bytes
@segments = $memory->segments
$segment = $memory->segment($name)

The segments field returns a list of structures of the following fields:

$seg->start
$seg->size
$seg->name
$seg->type
$seg->can_read
$seg->can_write
$seg->can_exec
$seg->pagesize

Note that all sizes are given in bytes; for memories of 16-bit word-size, divide this by 2 to obtain the size in words.

interrupts

interrupt

@ints = $avr->interrupts

$int = $avr->interrupt( $name )

Returns a list of interrupt instances, or a single one having the given name, representing the interrupt sources available on the device.

Each is a structure of the following fields.

$int->name
$int->index
$int->caption

peripherals

peripheral

@periphs = $avr->peripherals

$periph = $avr->peripheral( $name )

Returns a list of peripheral instances, or a single one having the given name, representing the peripherals or other miscellaneous information available on the device.

Each is a structure of the following fields.

$periph->name
$periph->module     # instance of Device::AVR::Info::Module
$periph->regname
$periph->regspace   # instance of $memory

@registers = $periph->registers
# instances of $register from Device::AVR::Info::Module

property_groups

@group_names = $avr->property_groups

Returns (in no particular order) the names of the defined property groups.

property_group

\%values = $avr->property_group( $group_name )

Returns a HASH reference of all the properties in the given property group.

property

$value = $avr->property( $group_name, $prop_name )

Returns a single value of a property in the given property group.

Any value given in the XML file in the form of a single hexadecimal numerical constant is automatically converted into the appropriate integer. Strings of multiple numbers (such as the HVSP and HVPP control stacks) are not converted.

DERIVED METHODS

These methods wrap information provided by the basic accessors.

signature

$sig = $avr->signature

Returns a 6-character hexadecimal string consisting of the three bytes of the device signature.

AUTHOR

Paul Evans <leonerd@leonerd.org.uk>