ProProg(tm) User's Guide
                            6 November 2004

This document describes how to set up and operate a ProProg PIC
Programmer.

The purpose of the ProProg programmer is to "program" data into
Microchip PIC microcontrollers (PIC is a registered trademark of
Microchip Technology Inc).


Setup the Software

  Go to the web page http://www.embedinc.com/picprg/sw.htm and follow
  the directions for downloading and installing the software.


Setup the Hardware

  To set up the programmer hardware, do the following:

    1)   Connect power.

         There are three options for connecting power to the unit:

         1)   Supplied wall wart power supply.

              This power supply is for use with standard 110 - 125V
              60Hz power outlets as found in the United States.  Push
              the small round plug on the end of the power supply cord
              into the socket in the back left corner of the unit.

         2)   External AC power, 50-60Hz, sine wave, 18-22 volts RMS
              while supplying 0-5.5 watts.

              If the power is available via wires, strip about 1/4 inch
              or 5mm of insulation from the ends of the wires.  Loosen
              the two screws labeled "AC in" by the far left corner of
              the unit, insert one wire into each terminal block, then
              tighten the screws.

              If the power is available via a 1.3mm "wall wart" power
              supply plug, insert the plug into the jack labeled "P8"
              by the far left corner of the unit.

              Do not connect to both the 1.3mm power jack and the "AC
              in" terminals at the same time.

         3)   External DC power, 17-30 volts while supplying 0-5.5
              watts, via wires.

              Strip about 1/4 inch or 5mm of insulation from the ends
              of the wires.  Loosen the two screws labeled "GND" and
              "DC in" of the terminal block by the far left corner of
              the unit.  Insert the positive lead into the "DC in"
              terminal and the negative lead into the GND terminal.
              Tighten the screws.

         It is permissible to have one of the AC power inputs connected
         simultaneously with the DC power input.  The two power inputs
         are not connected internally such that one will attempt to
         drive the other.

    2)   Connect the ProProg to your computer with the serial cable.
         The cable can only be connected one way.  The female end of
         the cable connects to a 9 pin serial port (COM port on PC
         systems) on the computer, and the other end connects to the 9
         pin female port on the ProProg.

    3)   Connect to the target circuit.  The programming signals are
         available three different ways.  All programming connections
         are near the back of the right side of the ProProg:

         1)   The RJ-12 connector labeled "ICD2 Out" has the same
              pinout as the RJ-12 connector of a Microchip ICD-2.  Any
              means of connecting an ICD-2 via its RJ-12 connector can
              also be used with the ProProg.

         2)   Six bare pads.  These are directly behind the ICD2 Out
              connector.  Each pad is individually labeled Vpp, Vdd,
              GND, PGD, or PGC, indicating the specific programming
              line connected to that pad.  There are two GND pads, both
              connected to ground.  One of the GND pads is between the
              PGD and PGC pads.  If this line is connected in a flat
              cable, it will prevent crosstalk between the data (PGD)
              and clock (PGC) lines.  These pads are intended for
              permanently connecting a programming cable to the
              ProProg.  This is the most reliable connection, but is
              only recommended when the ProProg and cable are held in
              place within a larger fixture.

         3)   Six pin locking header.  This header is immediately to
              the left of the bare pads.  The labels for the bare pads
              also apply to the individual contacts of the header.
              This is a standard header with square pins .025 inches on
              a side with a pin pitch of .1 inches.


Verify the Setup

  The directions in this section assume that the software and hardware
  have been set up as described in the previous sections.

  The ProProg must be powered on before proceeding.  This means the
  wall wart (if used) must be plugged into a live outlet, or the
  external AC or DC power supplies turned on.  The "Status" LED will be
  dimly lit to indicate the ProProg is powered up.

  To verify the hardware and software setup, make sure you are running
  a command shell and enter:

  pic_prog

  at the command prompt.  This should report the firmware type as
  ProProg, its version number, and the name of the organization that
  created it.  If the ProProg is connected to a target system with one
  of the supported PIC types that contains an internal ID word, then
  the target PIC model and its silicon revision will be shown.
  Otherwise a message is shown indicating that the device ID of the
  target chip could not be read.

  If the ProProg is connected to a COM port other than COM 1, then the
  command "pic_prog" will fail with an error message after a few
  seconds.  In that case enter the command

  pic_prog -sio N

  where "N" is replaced with the number of the COM port the ProProg is
  connected to.


Normal Operation

  Three programs are included in the standard software for using the
  ProProg.  Each program has a separate documentation file in the DOC
  directory within the software installation directory.  See the DOC
  files for details on how to use these programs.  Briefly, the three
  programs are:

  PIC_PROG

       The main purpose is to program or verify the target PIC from the
       data in a HEX file, such as produced by MPLAB.  This program
       also has other capabilities and various options.  See the
       documentation file for details.

  PIC_READ

       Read the data from the target PIC into a HEX file.

  TEST_PICPRG

       This is a low level test program not intended for end users.  It
       is not fully documented.  This program can be useful when
       developing your own software, or you may be asked to run it in
       an attempt to diagnose a problem.  Type HELP at the ": " prompt
       to get a brief list of commands.


Status Light

  The status light is the green LED labeled "Status" at the near edge
  of the unit.  It indicates 5 different states:

    Unlit

         No power is applied to the unit.  The target system may be
         connected or disconnected in this state.

    Dimly but solidly lit

         Idle state.  The unit is powered on, but otherwise inactive.
         The target system may be connected or disconnected in this
         state.

    Flashing at 4 Herz, brightness is low.

         The host is communicating with the unit, but the target system
         is not powered from the ProProg.  Do not connect or disconnect
         the target system in this state.

    Flashing at 2 Herz, brightness is medium.

         The target system is powered up.  Communication with the
         target may be in progress, but the target is not being written
         to (no permanent target state changes are being made).  This
         is the normal display during verification or data readback.
         Do not connect or disconnect the target system in this state.

    Flashing at 1 Herz, brightness is high.

         The target chip is being actively written to.  This is the
         normal display during a "programming" operation.  Do not
         connect or disconnect the target system in this state.

  The status diplays have been deliberately selected so that obvious
  flashing indicates the target system should not be connected to or
  disconnected from the ProProg.  Doing so while the status light is
  flashing may permanently damage the target system.

  The target system may be connected or disconnected when the status
  light is solid, including completely off.


App light and OK button

  The light labeled "App" and the button labeled "OK" are at the near
  edge of the unit by the right corner.  These have no dedicated
  function within the ProProg and are under control of the host
  application.  Consult the documentation for each application as to
  the meaning, if any, of these features.  For applications that do not
  use these features, the App light will remain off and the OK button
  is ignored.

  The PIC_PROG program uses the App light and OK button with the -WAIT
  command line option.  See the PIC_PROG documentation for details.


Software Updates

  New software is made available from time to time.  Go to the web page
  http://www.embedinc.com/picprg/sw.htm to check on the latest released
  version.


Firmware Updates

  New firmware is made available from time to time.  Go to the web page
  http://www.embedinc.com/picprg/sw.htm to check on the latest released
  version.  The PIC_PROG program can be used to determine the current
  firmware version loaded into the ProProg.

  ProProg firmware is stored in files named PPRGxx.HEX in the
  SRC/PICPRG directory within the software installation directory,
  where XX is the firmware version number.  To change to a new firmware
  version, perform the following steps:

    1)   Disconnect power from the ProProg.  The Status LED must be
         completely off.

    2)   Create a cable that connects to the 5 pin locking header
         labeled "PCTRL" by the near left corner of the ProProg.  Do
         not connect to the header labeled PPWR.  The PPWR header is
         used during manufacture of the ProProg.  Connecting to it can
         cause permanent damage to the unit.

         The pins of the PCTRL connector are numbered 1-5 starting with
         1 at the near pin.  Pin 1 is also identified with a square pad
         on the bottom of the board.  The pinout of the PCTRL connector
         is:

           1  -  Vpp
           2  -  Vdd
           3  -  GND
           4  -  PGD
           5  -  PGC

         Connect the other end of the cable to a PIC programmer, such
         as another ProProg, an EasyProg, or a Microchip ICD-2.

    3)   Program and verify the new PPRGxx.HEX file into the ProProg
         using the second programmer.

    4)   Disconnect the ProProg from the second programmer.

    5)   Power up the ProProg.

    6)   Run the PIC_PROG program and verify that the firmware is the
         expected version.


Advanced Features

  This section describes advanced features of the ProProg.  These are
  not necessary for basic operation, but may aid general understanding
  for advanced users and can be useful for embedding the ProProg within
  a larger system.  The descriptions below are intended for electrical
  engineers.

  Test points

       There are nine test points near the center of the right edge of
       the unit.  These are primarily for use during manufacture of the
       unit, but some of these signals may be of limited external use
       in an embedded environment.

       Each test point is a standard square post .025 inch on a side.
       The pin pitch of the test points is .1 inch.  The various test
       points are:

       25V

            This is the unregulated internal DC power supply voltage
            directly out of the full wave bridge from the AC inputs or
            after a single diode from the DC input.  The voltage is
            usually close to 25 volts when powered from the supplied
            wall wart.  The voltage must at all times be from 17.0 to
            29.5 volts for correct operation.

            It is permissible to draw up to 500mA from this pin
            provided the power supply is capable of delivering
            sufficient power to keep the voltage within specifications
            when doing so.  The supplied wall wart power supply has no
            excess power capacity, and no power should be drawn from
            this pin when the wall wart is used to power the unit.

       7V

            Nominal 7V internal DC supply voltage created from the 25V
            supply by a switching regulator.  This supply has a current
            capacity of 500mA beyond that needed to power the ProProg
            internal circuits when the AC or DC input power is within
            specifications.  This supply only has 250mA external
            current capacity when the unit is powered by the supplied
            wall wart.

            Current may be drawn from this pin to the extent of the
            available excess current capacity.  Note however that the
            target system Vdd current is also taken from this same
            excess current capacity.  The total drawn from this pin
            plus the maximum target system Vdd current must not exceed
            the current capacity described above.

            For example, assume the unit is being powered by the
            supplied wall wart.  This means the total available
            external 7V current is 250mA.  If the target system can
            draw up to 100mA when Vdd is driven at the maximum
            verification voltage of 5.5V, then it is permissible to
            draw 150mA directly from this pin.  If the target system
            can draw up to 250mA maximum for any of the Vdd voltages
            for the particular target chip, then this pin can not be
            used to power additional external circuitry.

            Many target systems do not require the maximum possible Vdd
            current the ProProg can deliver, and the 7V line can be
            useful for powering limited additional circuitry in a
            dedicated installation.  The 7V supply is produced by a
            switching regulator and is therefore rather noisy.

       5V

            Internal 5V supply powering the control processor of the
            ProProg.  This is really just a test point, and we don't
            recommend using this pin to power any external circuitry.
            If you must, don't draw more than 10mA, including any
            inrush.  Glitching this line below 4.5 volts even briefly
            may cause all manner of strange behaviour.  We really
            rather you didn't mess with this pin.

            If you need a 5V supply to power a small amount of external
            circuitry, we strongly recommend using a linear regulator
            from the 7V pin (see above).

       5VP

            This is a different nominal 5V internal supply with even
            less current capacity.  This is a test point used during
            the manufacturing process and not intended as a power
            source.  Leave this pin alone.

       2.5Vref

            Raw internal 2.5 volt reference.  This is a direct line to
            the internal 2.5 volt reference voltage.  This is really
            another test point, but you can use it as a 2.5 volt
            reference voltage only.  This pin must not source or sink
            more than 50uA.  We strongly recommend to use the 2.5VBuf
            pin (below) for a 2.5 volt reference.

       2.5VBuf

            Buffered 2.5 volt reference voltage.  This pin can source
            or sink up to 1mA and remain at the reference voltage.  It
            can be driven externally from 0 volts to 10 volts without
            damaging the ProProg or causing abnormal operation.

       -1.4V

            Internal nominal -1.4 volt supply.  This is not intended to
            supply external power.  You can draw up to 1mA from this
            pin if you must.

       GND

            Both these pins are connected to the ProProg ground, and
            are the 0 reference voltage for all the other pins.  These
            pins are also connected directly to the ground plane bottom
            layer of the circuit board, and may be useful for EMI
            purposes.

  PPWR connector

       This connector is a 5 pin locking header at the near end of the
       left edge of the unit.  This header is stricly for use during
       manufacturing.  Any connection to this header can cause erratic
       behaviour and permanent damage to the unit.

  Debug jumper

       This is two posts labeled "J1" and "Debug" near the center of
       the unit.  These pins should be left unconnected for normal
       operation.

       A jumper may be installed over these pins to short them
       together.  This disables the 5 second host command stream
       timeout.  The host timeout is described in detail in the
       protocol specification, which is in the PICPRG_PROT
       documentation file in the DOC directory within the software
       installation directory.

       The host timeout is an important feature which allows the unit
       to recover if the host program is aborted or the host connection
       broken during a command.  With the host timeout disabled, the
       unit must be powered down and back up to resume normal operation
       in such a case.  We therefore recommend that the debug jumper
       not be connected during normal operation.

       The debug pins are provided to aid in debugging host software.
       More than 5 second gaps can easily occur in the host command
       stream while single stepping the host application with a
       debugger.  In such cases it would be indesirable for the unit to
       abort the current command and reset, and installing the debug
       jumper can prevent this.  Remember to remove the jumper when
       done debugging because normal operation is less robust with the
       jumper installed.