Arduino-Makefile/bin/ard-reset-arduino
Simon John c284ec93dd Add support for reseting "Micro" Arduino.
Micro can be reset using Leonardo reset functions itself. So call
Leonardo reset functions for Micro as well.

The reset function seems to have some issues for Micro and is not
100% reliable, like Leonardo. See comments in #30.

Fix #80
Fix #83
2013-06-21 08:37:11 +05:30

136 lines
2.5 KiB
Perl
Executable file

#!/usr/bin/env perl
use strict;
use warnings;
use Device::SerialPort;
use Getopt::Long;
use Pod::Usage;
my %Opt =
(
period => 0.1,
);
GetOptions(\%Opt,
"period=f", # width of reset pulse in seconds
"verbose!",
"help!",
"info!",
"leonardo!",
);
if ($Opt{help} || $Opt{info})
{
usage();
}
die "No Arduinos found!\n"
unless @ARGV;
foreach my $dev (@ARGV)
{
my $p = Device::SerialPort->new($dev)
or die "Unable to open $dev: $!\n";
if ($Opt{leonardo})
{
$p->baudrate(1200);
$p->write_settings;
$p->close;
print STDERR "Switching to 1200 baud on $dev\n"
if $Opt{verbose};
}
else
{
my $dt = $Opt{period};
print STDERR "Setting DTR high for ${dt}s on $dev\n"
if $Opt{verbose};
die "Invalid pulse width ($dt), "
unless $dt > 0.0;
$p->pulse_dtr_on($dt * 1000.0);
}
}
## here endeth the main
sub usage
{
pod2usage(-verbose => 2);
}
__END__
=head1 NAME
ard-reset-arduino - Reset an Arduino
=head1 USAGE
$ ard-reset-arduino /dev/cu.usb*
$ ard-reset-arduino --verbose --period=0.1 /dev/cu.usb*
$ ard-reset-arduino --verbose --leonardo /dev/ttyUSB0
=head1 DESCRIPTION
To reset (most) Arduinos, it's enough to just pulse the DTR line.
You can do that from the shell with stty, but there's an interesting
diversity of command flags. This little program gives a uniform interface
at the cost of requiring C<Device::SerialPort>.
=head1 OPTIONS
=over
=item --verbose
Watch what's going on on STDERR.
=item --period=0.25
Specify the DTR pulse width in seconds.
=item --leonardo
Reset a Leonardo or Micro.
=back
=head1 BUGS AND LIMITATIONS
There are no known bugs in this application.
Please report problems to the author.
Patches are welcome.
=head1 AUTHOR
Martin Oldfield, ex-atelier@mjo.tc
Support for Leonardo/Micro added by sej7278, https://github.com/sej7278
Thanks to Daniele Vergini who suggested this to me, and supplied
a command line version.
=head1 LICENCE AND COPYRIGHT
Copyright (c) 2012, Martin Oldfield. All rights reserved.
This file is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.