Home of www.RoboHobby.com Java robotics project
Home-made CNC machine
Our new project -
How to make home-made CNC router
PICkit2 - Tutorials, Experiments
PICkit 2 - Small size USB programmer
from Microchip.
How to use it as a demo device for
USB programming in C language




www.RoboHobby.com
Home of www.RoboHobby.com
Java robotics project


Portable Notebook Table
How to make Portable Notebook Table.
Do it yourself!

Experiments with PICkit 2
PICkit 2 is a Small size USB programmer
from Microchip.
How to use it as a demo device for
USB programming in C language






www.RoboHobby.com

Articles about PICkit 2

How to use PICkit 2 as USB demo board

Which PIC devices can be programmed by PICkit 2

CCS PIC C compiler.
Demo version from PICkit 2 box,
How to use it. What can be done by this version.




Next articles (not ready yet):

How to use 44-pin demo-board of PICkit 2 set
with PIC16F887
as a brain of small home-made robot.

How to use in robotics light/image sensor of cheap
optical mouse as a local position finder.

How to use cheap optical mouse instead of gyroscope.
Source code in C for PIC16F887 for this.


PICkit 2 - Small size USB programmer from Microchip Technology Inc.
How to re-program it and use as a demo board.



Ricently we bought PICkit 2 Development Programmer/Debugger with
44-pin demo board with PIC16F887 midrange PIC microcontroller.
And we did some experiments with PICkit 2.
PICkit 2 is a small size programmer with USB interface.
It is interesting, that after re-programming it is possible to use PICkit 2 as a demo board.
You can use PICkit 2 as a testing board with USB interface.
PICkit 2 has PIC18F2550 on a board and there is a way to remove pre-installed software
(they call it 'OS', he-he-he),
put your own software to it and use it (the PICkit 2) as an USB-compliant demo device.

In this article we will describe all steps how to do this - with pictures, screens and code examples
in C language.



Step-by-step instructions:


) Download and install MPLAB v7.60 (this was the most fresh version, when we did our experiments)

Note: There is MPLAB 7.5 on the PICkit 2 CD, but we downloaded fresh version (7.60) right from the
www.microchip.com.
MPLAB IDE 7.50 CD. Shipped with PICkit 2 programmer.
We do NOT use MPLAB 7.50 from this CD, we use v7.60.

) After the installation of downloaded MPLAB v7.60, normally you will see it's icon on your desktop.

It loks like:
MPLAB IDE 7.60 Icon.
MPLAB IDE 7.60 Icon.
) Download from www.microchip.com MPLAB C18 compiler ( file 'MPLAB-C18-StudentEdition-v3_12.exe'),
) Install it and tune it to work with MPLAB IDE.
Should be installed to C:\MCC18
Very useful file with installation and configuration instructions is 'MPLAB_C18_Getting_Started_51295f.pdf'.
Try to find if on www.microchip.com.


) Install PICkit 2 software on your PC. (You can find this soft on PICkit CD).
www.RoboHobby.com PICkit_2 Debug Express CD First Software.jpg
'Insert Firts CD'. Shipped with PICkit 2.
The directory and installation program: "CD:\Install\PICkit 2\setup.exe"

) After the installation the icon of PICkit software should appear on your desctop:
PICkit 2 v2.40 Icon.
PICkit 2 v2.40 Icon.

) Download our code example (it is MPLAB project).
www.RoboHobby.com_PICkit_2.zip
) Unzip the project to directory "c:\PICkit_2\www.RoboHobby.com_PICkit_2"
) Click on file 'c:\PICkit_2\www.RoboHobby.com_PICkit_2\PICkit_2.mcw'.
MPLAB will start to run with the project.
) Compile the project:
MPLAB IDE v7.60 Export HEX file (Compile).


) Then you should export your HEX file to special format, which can be used with PICkit 2 programmer.
MPLAB IDE v7.60 Export HEX file.



MPLAB IDE v7.60 Export HEX file for PICkit 2 - Settings for 'Memory Areas'
MPLAB IDE v7.60 Export HEX file for PICkit 2 - Settings for 'Memory Areas'.

MPLAB IDE v7.60 Export HEX file for PICkit 2 - Settings for 'File Format'.
MPLAB IDE v7.60 Export HEX file for PICkit 2 - Settings for 'File Format'.

You should put this hex file of new 'OS' for PICkit 2 to file:

"c:\Program Files\Microchip\PICkit 2 v2\PK2V022000.hex"


) Turn Off you PICkit 2 device (disconnect it from PC).
) Hold power button (the red button on the device) and connect PICkit 2 device to the PC
) Red LED start to blink - means the device has no operation system, it is ready to load new OS.
) Run 'PICkit 2' program. (Click on it's icon):
PICkit 2 v2.40 Icon.
PICkit 2 v2.40 Icon.

) You will see screen with yellow info window:
www.RoboHobby.com PICkit_2 Program: Device is ready to receive new 'OS'.
PICkit_2 Program: Device is ready to receive new 'OS'.

www.RoboHobby.com PICkit_2 Program: Choose Tools/Download PICkit 2 Operation System
PICkit_2 Program: Choose Tools/Download PICkit 2 Operation System.

) Choose file "c:\Program Files\Microchip\PICkit 2 v2\PK2V022000.hex".
) PICkit 2 software will load new OS to the device and verify it. You will see two messages
on BLUE info screen:
a) 'Downloading New PICkit 2 Operation System.'
b) 'Verifing PICkit 2 Operation System.'
www.RoboHobby.com PICkit_2 Program: 'Verifying PICkit 2 Operation System.'

www.RoboHobby.com PICkit_2 Program: 'Verification Successfull. Waiting for PICkit 2 to reset...'
PICkit_2 Program:
Verification Successfull.
Waiting for PICkit 2 to reset...


www.RoboHobby.com PICkit_2 Program Message: 'PICkit 2 not found. Check USB connections and use Tools->Check Communication to retry.'
PICkit_2 Program Message:
'PICkit 2 not found. Check USB connections and use Tools->Check Communication to retry.

NOTE (!): This is NORMAL situation. Please, don't panic. All is OK.
Don't worry about red color of the screen message and so strange text.
You can always return your previous OS (the original OS from Microchip),
just disconnect your PICkit 2 from the PC, press and hold power button,
connect it to PC, run PICkit 2 PC program, download original file - PK2V021000.hex and program it to device.
The device becomes programmer anew.

) Yellow LED of the PICkit 2 will start to blink. This means the device runs under new OS (my program).

) Your Windos should found new USB device.
) Now you should install Microchip's USB driver. Point driver installation wizard to:
"c:\PICkit_2\www.RoboHobby.com_PICkit_2\MCHPUSB Driver\Release\pickit2genisoc.inf"

Note: Normally Windows should ask about driver installation only one time - when you connected
new USB device to the computer.

) Run PC Client for communication between PC and PICkit 2.
c:\PICkit_2\www.RoboHobby.com_PICkit_2\ConsoleCPP\console.exe
You will see it's screen:

www.RoboHobby.com: PC Client for PICkit 2 as a demo board.
PC Client - command line program for PICkit 2 as a demo board.

The main idea of the client program is very simple -
you press key on PC keyboard and the robot goes to predefined direction.
In reality in our example we don't have any real robot in our hands,
we just show LEDs on the PICkit 2 device. (See pictures below on this page).

==============
Select an option
[1] Get PC Client Version
[3] Summarize Instances
-----
[2] Go Backward
[4] Go Left
[6] Go Right
[8] Go Forward

[0] Quit
>>



PC client part of PC-to-PIC USB connection.
How to compile it.


Originally this code example was created for Borland C++ Builder 6.
It is really good C/C++ compiler. But it is not free.
And I will describe the way to compile the code with free GCC/GCJ open source compiler.


) Download and install MSYS (~2.8Mb)
http://sourceforge.net/projects/mingw/files/MSYS/BaseSystem/msys-core/msys-1.0.10/
Direct link is http://garr.dl.sourceforge.net/sourceforge/mingw/MSYS-1.0.10.exe
(!)It is supposed that it will be installed to 'c:\msys\1.0'

If you want to know more details about this open source project,
see: 'MinGW - Minimalist GNU for Windows'

After the installation the icon of MSYS software should appear on your desctop:
MSYS Icon
MSYS Icon.

) Download and install GCC/GCJ for Windows (~46Mb)

If you want to know more details about this open source project,
see: 'MingW build of GCC/GCJ for Windows'
) Copy file gcc34-20040607.tar.bz2 to c:\msys\1.0\home\user\

) Unzip it to c:\msys\1.0\home\user\thisiscool-gcc:
To do this - type in MSYS command line:

tar xvfj gcc34-20040607.tar.bz2

www.RoboHobby.com MSYS MINGW32 window
MSYS MINGW32 window.

) Rename file
c:\msys\1.0\home\user\thisiscool-gcc\examples\Makefile
to
c:\msys\1.0\home\user\thisiscool-gcc\examples\Makefile_old


) Copy file 'Makefile' from c:\PICkit_2\www.RoboHobby.com_PICkit_2\Makefile
to
c:\msys\1.0\home\user\thisiscool-gcc\examples\Makefile


) Copy directory 'c:\PICkit_2\www.RoboHobby.com_PICkit_2\ConsoleCPP'
to directory 'c:\msys\1.0\home\user\thisiscool-gcc34\examples\ConsoleCPP'.

) Delete file c:\msys\1.0\home\user\thisiscool-gcc\examples\ConsoleCPP\console.exe
(old version of our USB client program).

) In the MSYS environment go to directory 'thisiscool-gcc/examples/:
cd ./thisiscool-gcc/examples/

HINT(!): MSYS is Unix emulation, that means you can use Unix-like usefull things, for exampe,
you may type omly some first letters of the long file name, and then press 'Tab' key, in our case:
cd ./t <TAB>
and you will see all the name 'thisiscool-gcc'. Then you can type 'e and you will see 'examples'.
One more hint: instead of DOS command 'dir, you can use 'ls' command (or ls with some options. I like to use 'ls -l')

) Run compilation - type word 'make' in the command line of MSYS program:

www.RoboHobby.com MSYS make console application
MSYS make console application.

) Normally you will see new EXE file 'console.exe' and you can run it.
c:\msys\1.0\home\user\thisiscool-gcc\examples\ConsoleCPP\console.exe

Note: Always delete old version of console.exe before re-compilation.

Code fragment in C language:

----------------------
    
void blinkYellowLed( void )
{
if ( isStarted == 0 )
{
TRISB = 0;

if ( yellowLedCount == 0 )
{
if ( yellowLedStatus == 0 )
{
PORTB = 0;
yellowLedStatus = 1;
}
else
{
PORTB = 0x32;
yellowLedStatus = 0;
}
}


if ( yellowLedCount < 65000 ) //300000 )
{
yellowLedCount++;
}
else
{
yellowLedCount = 0;
}
}

} //end blinkYellowLed
//www.RoboHobby.com.


Code fragment:

    
void ServiceRequests(void)
{
byte index;

if(USBGenRead((byte*)&dataPacket,sizeof(dataPacket)))
{
counter = 0;
isStarted = 1;

TRISB = 0;
TRISC = 0;

switch( dataPacket.CMD )
{

case READ_VERSION:
//dataPacket._byte[1] is len

//www.RoboHobby.com:
//For PICkit 2 as a demo board:
TRISB = 0;
TRISC = 0;
//www.RoboHobby.com:
//Tips (!):
//PORTC = 1; lights yellow LED of PICkit_2 on
//PORTB = 0x32; turns red LED of PICkit_2 off
//PORTB = 0; turns red LED of PICkit_2 on
if ( current_circle % 4 == 0 )
{
PORTB = 0;
PORTC = 0;
}
else if ( current_circle % 4 == 1 )
{
PORTB = 0x32;
PORTC = 0;
}
else if ( current_circle % 4 == 2 )
{
PORTB = 0x32;
PORTC = 1;
}
else if ( current_circle % 4 == 3 )
{
PORTB = 0;
PORTC = 1;
}


dataPacket._byte[2] = current_circle;
dataPacket._byte[3] = 0;

current_circle++;
counter= 0x04;

break;
case GO_BACKWARD:
PORTB = 0x32;
PORTC = 0;
dataPacket._byte[2] = dataPacket.CMD;
dataPacket._byte[3] = 1; //Just to say to PC 'Operation was OK'
counter= 0x04;
break;

case GO_LEFT:
PORTB = 0;
PORTC = 0;
dataPacket._byte[2] = dataPacket.CMD;
dataPacket._byte[3] = 1; //Just to say to PC 'Operation was OK'
counter= 0x04;
break;
case GO_RIGHT:
PORTB = 0x32;
PORTC = 1;
dataPacket._byte[2] = dataPacket.CMD;
dataPacket._byte[3] = 1; //Just to say to PC 'Operation was OK'
counter= 0x04;
break;
case GO_FORWARD:
PORTB = 0;
PORTC = 1;
dataPacket._byte[2] = dataPacket.CMD;
dataPacket._byte[3] = 1; //Just to say to PC 'Operation was OK'
counter= 0x04;
break;


case RESET:
Reset();
break;

default:
break;
}//end switch()
if(counter != 0)
{
if(!mUSBGenTxIsBusy())
USBGenWrite((byte*)&dataPacket,counter);
}//end if
}//end if

}//end ServiceRequests


www.RoboHobby.com PICkit_2 Debug Express - Small Size Programmer www.RoboHobby.com PICkit_2 Debug Express - Both LEDs.
PICkit_2 Debug Express - Both LEDs.
Means - Robot Command 'Go Forward'.
www.RoboHobby.com PICkit_2 Debug Express - Yellow LED.
PICkit_2 Debug Express - Yellow LED.
Means - Robot Command 'Go Left'.
www.RoboHobby.com PICkit_2 Debug Express - Red LED.
PICkit_2 Debug Express - Red LED.
Means - Robot Command 'Go Right'.


TO BE CONTINUED...

Next topics:

Comparison of several C compilers for PIC processors.
Is it possible to write C programs for PIC16F628, using soft from the box of PICkit 2?
Is it posible to use Java language for programming PIC microchips?

How to made your own USB device, based on PIC18F4550.
www.RoboHobby.com - USB board, based on PIC18F4550. Front View.



--------------------------------------------
List of devices, supported by PICkit 2:


* Indicates new parts supported with v1.40 of the device file.

+ Indicates parts that require 4.75V minimum VDD for programming.
PICkit 2 may not be able to generate sufficiently high VDD,
so an external 5.0v power supply may be required.

# indicates Midrange parts that support low Vdd programming


Baseline Devices
----------------
PIC10F200 PIC10F202 PIC10F204 PIC10F206
PIC10F220 PIC10F222
PIC12F508 PIC12F509 PIC12F510 PIC12F519
PIC16F505 PIC16F506
PIC16F54 PIC16F57 PIC16F59


Midrange Devices
----------------
PIC12F609 PIC12HV609
PIC12F615 PIC12HV615
PIC12F629 PIC12F635# PIC12F675 PIC12F683#
PIC16F610 PIC16HV610 PIC16F616 PIC16HV616
PIC16F627 PIC16F628 PIC16F639
PIC16F627A PIC16F628A PIC16F648A
PIC16F630 PIC16F631 PIC16F636# PIC16F676
PIC16F677 PIC16F684# PIC16F685# PIC16F687#
PIC16F688# PIC16F689# PIC16F690#
PIC16F72+
PIC16F73+ PIC16F74+ PIC16F76+ PIC16F77+
PIC16F716
PIC16F737+ PIC16F747+ PIC16F767+ PIC16F777+
PIC16F785 PIC16HV785
PIC16F84A PIC16F87# PIC16F88#
PIC16F818# PIC16F819#
PIC16F870 PIC16F871 PIC16F872
PIC16F873 PIC16F874 PIC16F876 PIC16F877
PIC16F873A PIC16F874A PIC16F876A PIC16F877A
PIC16F882#
PIC16F883# PIC16F884# PIC16F886# PIC16F887#
PIC16F913# PIC16F914# PIC16F916# PIC16F917#
PIC16F946#

PIC18F Devices
--------------
PIC18F242 PIC18F252 PIC18F442 PIC18F452
PIC18F248 PIC18F258 PIC18F448 PIC18F458
PIC18F1220 PIC18F1320 PIC18F2220
PIC18F1230 PIC18F1330
PIC18F2221 PIC18F2320 PIC18F2321 PIC18F2331
PIC18F2410 PIC18F2420 PIC18F2423 PIC18F2431
PIC18F2450 PIC18F2455 PIC18F2458* PIC18F2480
PIC18F2510 PIC18F2515 PIC18F2520 PIC18F2523
PIC18F2525 PIC18F2550 PIC18F2553* PIC18F2580
PIC18F2585
PIC18F2610 PIC18F2620 PIC18F2680 PIC18F2682
PIC18F2685
PIC18F4220 PIC18F4221 PIC18F4320 PIC18F4321
PIC18F4331 PIC18F4410 PIC18F4420 PIC18F4423
PIC18F4431 PIC18F4450 PIC18F4455 PIC18F4458*
PIC18F4480
PIC18F4510 PIC18F4515 PIC18F4520 PIC18F4523
PIC18F4525 PIC18F4550 PIC18F4553* PIC18F4580
PIC18F4585
PIC18F4610 PIC18F4620 PIC18F4680 PIC18F4682
PIC18F4685 PIC18F6310 PIC18F6390 PIC18F6410
PIC18F6490 PIC18F6520 PIC18F6525 PIC18F6527
PIC18F6585 PIC18F6620 PIC18F6621 PIC18F6622
PIC18F6627 PIC18F6628* PIC18F6680 PIC18F6720
PIC18F6722 PIC18F6723*
PIC18F8310 PIC18F8390 PIC18F8410 PIC18F8490
PIC18F8520 PIC18F8525 PIC18F8527 PIC18F8585
PIC18F8620 PIC18F8621 PIC18F8622 PIC18F8627
PIC18F8628*
PIC18F8680 PIC18F8720 PIC18F8722 PIC18F8723*


PIC18F_J_ Devices
-----------------
PIC18F24J10 PIC18F25J10 PIC18F44J10 PIC18F45J10
PIC18LF24J10 PIC18LF25J10 PIC18LF44J10 PIC18LF45J10
PIC18F63J11* PIC18F63J90* PIC18F64J11* PIC18F64J90*
PIC18F65J10 PIC18F65J11 PIC18F65J15 PIC18F65J50*
PIC18F65J90
PIC18F66J10 PIC18F66J11 PIC18F66J15 PIC18F66J16
PIC18F66J50* PIC18F66J55* PIC18F66J60 PIC18F66J65
PIC18F67J10 PIC18F67J11 PIC18F67J50* PIC18F67J60
PIC18F83J11 PIC18F83J90 PIC18F84J11 PIC18F84J90
PIC18F85J10 PIC18F85J11 PIC18F85J15 PIC18F85J50*
PIC18F85J90
PIC18F86J10 PIC18F86J11 PIC18F86J15 PIC18F86J16
PIC18F86J50* PIC18F86J55* PIC18F86J60 PIC18F86J65
PIC18F87J10 PIC18F87J11 PIC18F87J50* PIC18F87J60
PIC18F96J60 PIC18F96J65 PIC18F97J60


PIC18F_K_ Devices
-----------------
PIC18F25K20 PIC18F45K20


PIC24 Devices
-------------
PIC24FJ16GA002 PIC24FJ16GA004
PIC24FJ32GA002 PIC24FJ32GA004
PIC24FJ48GA002 PIC24FJ48GA004
PIC24FJ64GA002 PIC24FJ64GA004
PIC24FJ64GA006 PIC24FJ64GA008 PIC24FJ64GA010
PIC24FJ96GA006 PIC24FJ96GA008 PIC24FJ96GA010
PIC24FJ128GA006 PIC24FJ128GA008 PIC24FJ128GA010

PIC24HJ12GP201* PIC24HJ12GP202*
PIC24HJ64GP206 PIC24HJ64GP210 PIC24HJ64GP506
PIC24HJ64GP510
PIC24HJ128GP206 PIC24HJ128GP210 PIC24HJ128GP306
PIC24HJ128GP310 PIC24HJ128GP506 PIC24HJ128GP510
PIC24HJ256GP206 PIC24HJ256GP210 PIC24HJ256GP610


dsPIC33 Devices
---------------
dsPIC33FJ12GP201* dsPIC33FJ12GP202*
dsPIC33FJ64GP206 dsPIC33FJ64GP306 dsPIC33FJ64GP310
dsPIC33FJ64GP706 dsPIC33FJ64GP708 dsPIC33FJ64GP710
dsPIC33FJ128GP206 dsPIC33FJ128GP306 dsPIC33FJ128GP310
dsPIC33FJ128GP706 dsPIC33FJ128GP708 dsPIC33FJ128GP710
dsPIC33FJ256GP506 dsPIC33FJ256GP510 dsPIC33FJ256GP710

dsPIC33FJ12MC201* dsPIC33FJ12MC202*
dsPIC33FJ64MC506 dsPIC33FJ64MC508 dsPIC33FJ64MC510
dsPIC33FJ64MC706 dsPIC33FJ64MC710
dsPIC33FJ128MC506 dsPIC33FJ128MC510 dsPIC33FJ128MC706
dsPIC33FJ128MC708 dsPIC33FJ128MC710
dsPIC33FJ256MC510 dsPIC33FJ256MC710


dsPIC30 Devices
---------------
dsPIC30F2010 dsPIC30F2011 dsPIC30F2012
dsPIC30F3010 dsPIC30F3011 dsPIC30F3012
dsPIC30F3013 dsPIC30F3014
dsPIC30F4011 dsPIC30F4012 dsPIC30F4013
dsPIC30F5011 dsPIC30F5013 dsPIC30F5015
dsPIC30F5016
dsPIC30F6010A dsPIC30F6011A dsPIC30F6012A
dsPIC30F6013A dsPIC30F6014A dsPIC30F6015


dsPIC30 SMPS Devices
--------------------
dsPIC30F1010
dsPIC30F2020 dsPIC30F2023


KEELOQ HCS Devices
------------------
HCS200* HCS201* HCS300* HCS301* HCS320*
HCS360* HCS361* HCS362*

See Release Notes V2.40.00 for more information.

Serial EEPROM Devices
---------------------
NOTE: Other supported voltage grades are listed in paratheses
next to the device. Select the "LC" part number to program
these other voltage grades.

24LC00 (AA)(C)* 25LC010A (AA)*
24LC01B (AA)* 25LC020A (AA)*
24LC02B (AA)* 25LC040A (AA)*
24LC04B (AA)* 25LC080A (AA)*
24LC08B (AA)* 25LC080B (AA)*
24LC16B (AA)* 25LC160A (AA)*
24LC32A (AA)* 25LC160B (AA)*
24LC64 (AA)(FC)* 25LC320A (AA)*
24LC128 (AA)(FC)*
24LC256 (AA)(FC)* 25LC256 (AA)*
24LC512 (AA)(FC)*
24LC1025 (AA)(FC)* 25LC1024 (AA)*


93LC46A/B/C (AA)(C)*
93LC56A/B/C (AA)(C)*
93LC66A/B/C (AA)(C)*
93LC76A/B/C (AA)(C)*
93LC86A/B/C (AA)(C)*








Google
 



Contact us:


My Skype name is oleg_skp
Start Skype text chatStart Skype text chat
View Skype profileView Skype profile
Start Skype voice callStart Skype voice call
Add me to your Skype contact listAdd to Skype contact list
Leave voicemail using SkypeLeave voicemail using Skype
Send a file using SkypeSend a file using Skype
Note: To use these links
the Skype program should
be installed on your computer.
You can load it for free from
their official site:
Contact via Skypewww.Skype.com
------------------