[Piklab-svn] SF.net SVN: piklab:[2942] trunk/piklab_kde4
IDE for PIC microcontrollers
Brought to you by:
azhyd
|
From: <az...@us...> - 2012-08-05 19:43:35
|
Revision: 2942
http://piklab.svn.sourceforge.net/piklab/?rev=2942&view=rev
Author: azhyd
Date: 2012-08-05 19:43:29 +0000 (Sun, 05 Aug 2012)
Log Message:
-----------
finish pickit3 support for command-line
Modified Paths:
--------------
trunk/piklab_kde4/Changelog
trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp
trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h
trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp
Modified: trunk/piklab_kde4/Changelog
===================================================================
--- trunk/piklab_kde4/Changelog 2012-08-05 19:14:42 UTC (rev 2941)
+++ trunk/piklab_kde4/Changelog 2012-08-05 19:43:29 UTC (rev 2942)
@@ -1,4 +1,4 @@
-0.16.2 (4 August 2012)
+0.16.2 (5 August 2012)
* fixed toolchain output when executable cannot be found
* fixed parsing for jalv2
* fixed template generator for jalv2
@@ -6,6 +6,7 @@
* add menu entries to configure editor, to toggle/enable breakpoints, to switch editors, and
to toggle read-only mode for hex editor
* fixed crash when changing watched variable value [reported by Luca]
+* added pickit3 support for 18F452 (command-line only)
0.16.1 (1 July 2012)
* fixed command-line utilities compilation with Qt only
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp 2012-08-05 19:14:42 UTC (rev 2941)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp 2012-08-05 19:43:29 UTC (rev 2942)
@@ -418,12 +418,33 @@
return commandWithSimpleResponse(0x40, in, &data) && sendBulk(out);
}
-bool Pickit3::Hardware::setPower(PowerOptions options, uint vdd)
+bool Pickit3::Hardware::setPower(bool on)
{
+ PowerOptions options = on ? PowerOn : NoPowerOption;
+ options |= HoldReset;
+ return setPower(options);
+}
+
+bool Pickit3::Hardware::setTargetPower(bool on)
+{
+ PowerOptions options = on ? PowerOn | UseProgrammerPower : NoPowerOption;
+ options |= HoldReset;
+ return setPower(options);
+}
+
+bool Pickit3::Hardware::setTargetReset(Device::ResetMode mode)
+{
+ PowerOptions options = mode == Device::ResetMode::Held ? HoldReset : NoPowerOption;
+ return setPower(options);
+}
+
+bool Pickit3::Hardware::setPower(PowerOptions options)
+{
ByteArray in;
ByteArray out(6, 0x0, PrintEscapeAll);
out.setValue(0x04, 0, 2);
out.setValue(uint(options), 2, 2);
+ double vdd = device().architecture().data().nominalVdd;
out.setValue((vdd * 8) / 1000, 4, 2);
return commandWithComplexResponse(0x63, in, &out);
}
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h 2012-08-05 19:14:42 UTC (rev 2941)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h 2012-08-05 19:43:29 UTC (rev 2942)
@@ -143,9 +143,9 @@
enum PowerOption {
NoPowerOption = 0,
- UseEmulatorPower = 1,
- KeepPowerOn = 2,
- KeepMasterClearActive = 4,
+ UseProgrammerPower = 1,
+ PowerOn = 2,
+ HoldReset = 4,
UsePic24HighVoltageEntry = 8
};
Q_DECLARE_FLAGS(PowerOptions, PowerOption)
@@ -197,12 +197,14 @@
public:
Hardware(::Programmer::Base &base);
- bool setPower(PowerOptions, uint vdd); // mV
bool connectToDevice(BitValue& deviceId);
bool eraseRange(Pic::MemoryRangeType type);
bool eraseAll();
bool read(Pic::MemoryRangeType type, uint wordOffset, Device::Array& in, const ::Programmer::VerifyData *vdata);
bool write(Pic::MemoryRangeType type, uint wordOffset, const Device::Array& data);
+ bool setPower(bool on);
+ bool setTargetPower(bool on);
+ virtual bool setTargetReset(Device::ResetMode mode);
private:
virtual bool internalConnectHardware();
@@ -223,6 +225,7 @@
void addMemRangeToOpDescriptor(Pic::MemoryRangeType type, ByteArray& data);
bool getMem(Pic::MemoryRangeType type, uint offset, uint size, ByteArray& in);
bool setMem(Pic::MemoryRangeType type, uint offset, const ByteArray& out);
+ bool setPower(PowerOptions options);
bool command(uchar cmd, const ByteArray* out = NULL);
bool commandWithSimpleResponse(uchar cmd, ByteArray& in, const ByteArray* out = NULL);
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp 2012-08-05 19:14:42 UTC (rev 2941)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp 2012-08-05 19:43:29 UTC (rev 2942)
@@ -22,21 +22,17 @@
//-----------------------------------------------------------------------------
bool Pickit3::DeviceSpecific::setPowerOn()
{
- const double vdd = device().architecture().data().nominalVdd;
- return hardware().setPower(Pickit3::KeepPowerOn, vdd * 1000);
+ return hardware().setPower(true);
}
bool Pickit3::DeviceSpecific::setPowerOff()
{
- const double vdd = device().architecture().data().nominalVdd;
- return hardware().setPower(Pickit3::NoPowerOption, vdd * 1000);
+ return hardware().setPower(false);
}
bool Pickit3::DeviceSpecific::setTargetPowerOn(bool on)
{
- PowerOptions options = (on ? Pickit3::KeepPowerOn | Pickit3::UseEmulatorPower : NoPowerOption);
- const double vdd = device().architecture().data().nominalVdd;
- return hardware().setPower(options, vdd * 1000);
+ return hardware().setTargetPower(on);
}
bool Pickit3::DeviceSpecific::doEraseRange(Pic::MemoryRangeType type)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|