Table of contents

  • Before you begin
  • Supported programmers
  • Application menu
  • Using ICSP
  • Tips and tricks
  • Frequently asked questions


Before you begin

  • About UP
  • Hardware and software requirements
  • Software installation

Table of contents


About UP

UP is unified software for controlling all programmers by ASIX s.r.o. It is designated for programming microcontrollers and some frequently used serial EEPROM memories. It runs on Windows 95/98/ME, Windows NT/2000/XP operating systems.


System requirements

  • PC compatible, CPU Pentium 100 MHz or better
  • Windows 95/98/ME/NT/2000/XP
  • Parallel port for connecting the programmer


Software installation

Notice: If you operating system is any of Windows NT/2000/XP, please read this chapter carefully to prevent possible problems when using the programmer.

Installation package is available at company webpages. During the installation process you will be prompted whether the installation program should create shortcuts on your desktop and associate files with .HEX extension (Intel HEX File Format) and .PPR extension (Project file) with UP. If the file association is used you will be able to open a file simply just by clicking it in the Explorer or other file manager. Further it is possible to program the part instantly using the context menu (accessible by right clicking a file).

For further information about batch processing see using UP from a command line
. The format of files used by UP is available in Intel HEX File Format description.

Information for Windows NT/2000/XP users:

  • The program requires a special software driver asixio.sys, which must be installed first. The driver is installed automatically upon running UP for the first time. Since administrator privileges are required to take this action, it is necessary to run UP as administrator for the first time.
  • The program is using a .INI file to save its settings, thus this file should have its write permission set.


Supported programmers

Programmers supported by UP

  • PRESTO
  • PICQUICK
  • PICCOLO
  • PICCOLO Grande
  • CAPR-PI
  • PVK Pro-P

Table of contents


PRESTO

  • Programmer description
  • Supported parts
  • Description of wiring of supported parts
  • Description of pins of the programmer
  • Recommended operational voltage of the programmer

Programmer description

PRESTO is a powerful, very fast and cost effective programmer for wide range of popular components - microcontrollers, serial EEPROMs and CPLDs.

PRESTO is optimized for speed and it is really very fast, for example the full PIC18F8720 is programmed and verified in 6 seconds! (3 seconds for programming and 3 seconds for verification). Complete eCOG1 in less than 3 seconds.

In-Circuit Serial Programming (ICSP) is a very useful and often used PIC feature. PRESTO directly supports this function using a dedicated connector and an included cable. In comparison to other ASIX' programmers, the ICSP connector is enhanced - there are two more pins allowing support of wider range of components.

The target application device can be either powered by PRESTO (5 V nominally) or can be powered by an application within a voltage range 3 to 5 V (with 10% tolerance).

GO button allows user to start device programming comfortably, without need of PC keyboard or mouse. LEDs indicate programmer status - green LED ON-LINE informs about USB connection and yellow LED ACTIVE indicates that PRESTO is just working (programming, reading, ...)

Overcurrent limitation of target supply and programming voltages remarkably reduces the risk of damaging the parts because of user mistakes. Target supply overvoltage detection is also implemented.

PRESTO is powered from the USB bus, so there is no need for any additional supply adaptor.

PRESTO is small, lightweight and compact.

The software upgrade is freely available for all users on the Internet. It contains new device support, new functions and algorithm updates when required.

Wide range of supported devices

  • Microchip PIC® MCUs
    Serially programmable (all Flash and the most popular OTP/JW)
  • Atmel AVR® and 8051 architecture MCUs
    Devices with SPI low voltage serial downloading - for example ATtiny12, AT90S8535, ATmega128 and AT89S51
  • Atmel AVR and 8051 ( ATmega128, ATtiny26...)
  • MSP430 and CCxxxx devices by Texas Instruments
  • most of the Cypress PSoC CY8C2xxxx devices
  • Cyan Technology eCOG1
    Including basic debug control via eICE interface (Run, Stop, Reset).
  • Components with JTAG interface - types which can be programmed using SVF or XSVF file - for example
    • CPLD - Xilinx (XC95xx, CoolRunner, ...), Altera and others
    • FPGA configuration Flash PROMs - Xilinx (XC18Vxx, XCFxxS)
    • Atmel ATmega128
  • Serial EEPROM and Flash memories
    • I2C (24LCxx)
    • Microwire (93LCxx)
    • SPI EEPROM (25Cxx)
    • SPI Flash EPROM (M25Pxx and M45PExx)


PRESTO

Description of wiring of supported parts

PIC microcontroller

Pin number | Signal | Programming connector
1 | -MCLR | VPP/-MCLR1)
2 |  | not used (key)
3 | VCC | VCC
4 | GND | GND
5 | RB7 | DATA
6 | RB6 | CLOCK
7 |  | not used
8 | RB3/RB4/RB5 | LVP1)

typapp
typapp
typapp
typapp
typapp
typapp

Notes:
  1. The PIC microcontrollers are programmed using either LVP or HVP method. To use HVP it is necessary to connect Vpp pin and ground LVP pin (may be connected to LVP pin of the programmer). Some part do not support LVP, in such cases the LVP pin of the programmer may be left unconnected. To use LVP it is necessary to connect both Vpp and LVP pins (Vpp is in log.0 and log.1 during the programming - not static).

AVR microcontrollers

Pin number | Signal | Programming connector
1 | -RESET | VPP1)
2 |  | not used (key)
3 | VCC | VCC
4 | GND | GND
5 | MOSI | MOSI
6 | SCK | CLOCK
7 | MISO | MISO
8 |  | not used

typapp

Notes:
  1. It is necessary to hold the microcontroller in reset state during the programming. PRESTO applies log.0 to VPP but reset may be also invoked by application circuitry.

I2C memories

Pin number | Signal | Programming connector
1 |  | not used
2 |  | not used (key)
3 | VCC | VCC
4 | GND | GND
5 | SDA | DATA1)
6 | SCK | CLOCK
7 |  | not used
8 |  | not used

Notes:
  1. The programmer is using internal pullup resistor of 2,2kΩ on data signal DATA when working with I2C bus.

SPI memories

Pin number | Signal | Programming connector
1 | #CS | VPP
2 |  | not used (key)
3 | VCC | VCC
4 | GND | GND
5 | DI | DATA
6 | CLK | CLOCK
7 | DO | MISO
8 |  | not used

Microwire memories

Pin number | Signal | Programming connector
1 | CS | VPP
2 |  | not used (key)
3 | VCC | VCC
4 | GND | GND
5 | DI | DATA
6 | CLK | CLOCK
7 | DO | MISO
8 | ORG | LVP1)

Notes:
  1. This pin selects organisation of memory in either 8-bit 16-bit words. The user selects desired organisation in the software and PRESTO then sets this pin to corresponding logical value. If the memory organisation is hard-wired in the application circuitry or it is not possible to choose it the LVP pin of the programmer will be left unconnected.

Cyan Technology eCOG1

Pin number | Signal | Programming connector
1 | CS | VPP1)
2 |  | not used (key)
3 | VCC | VCC2)
4 | GND | GND
5 | MOSI | MOSI
6 | CLK | CLOCK
7 | MISO | MISO
8 | LOADB | LVP

typapp

Notes:
  1. The CS signal os to be used only if it is necessary to access more than one processor using a single connector. In a typical case with only one processor the signal may be held in log.1 all the time even if the programmer / debugger is unconnected. It is not necessary to connect CS signal then.
  2. VCC must be 3.3V, the power must be supplied always from the application.
  3. To program an eCOG processor an application PreCOG can be downloaded at www.asix-tools.com free of charge. It is also available on supplied CD-ROM.

JTAG

Pin number | Signal | Programming connector
1 | selectable | VPP1)
2 |  | not used (key)
3 | VCC | VCC2)
4 | GND | GND
5 | TDI | MOSI
6 | TCK | CLOCK
7 | TDO | MISO
8 | TMS | LVP

Notes:
  1. The VPP signal may act as SCK or TRST described in SVF file or may be in user defined state (log.1, log.0, tristate, different during the programming and after it)
  2. The power supply is always taken from the application for JTAG applications often use voltage other than 5V.
  3. It is possible to program and test parts for which there is a software providing data in SVF or XSVF format. The XSVF format is recommended for CPLD Xilinx XC9500 only, while SVF is recommended for all other parts. The software for using JTAG with PRESTO is available for download at www.asix-tools.com and on supplied CD-ROM.

Description of pins of the programmer

Pin number | Labelling on the programmer | Function description
1 | VPP (13V) | bidirectional data pin, capable or supplying 13V maximal current drawn from 13V supply is 50mA, software overcurrent is set to 100mA 3)
2 | not used (key) |
3 | VDD | power supply for output buffers of PRESTO the power supply voltage must be 2.7V to 5.5V for PRESTO to function properly software overvoltage detection is set to cca 7.5V1) optional 5V power supply from USB, maximal drain of 100mA, software overvoltage protection set to cca 150mA3), assuming voltage of 5V±5%2) the current may be drawn by the programmed part only there is a 1kΩ pulldown resistor for faster discharge of filtering capacitors in the application4)
4 | GND | common data and power ground
5 | DATA/MOSI | bidirectional data pin, features selectable 100kΩ pulldown or 2.2kΩ pullup resistor
6 | CLOCK | tristate output data pin
7 | MISO | input data pin, 100kΩ pulldown
8 | LVP | bidirectional data pin

Notes:
  1. Software only alerts the user about detected overvoltage, but there is no way to automatically disconnect the power supply.
  2. To retain precise voltage of 5V±5% the programmer must be connected directly to the computer or a self powered hub.
  3. The programmer checks overcurrent after preset time period after applying the power and disconnects the power supply if necessary. Unless instructed by the software the programmer does not disconnect the power supply on its own. This provides the user with possibility to use large filtering capacitors. - the overcurrent may be checked after the capacitors are fully charged.
  4. Two options related to capacity of powered circuitry are available in the software: "Slower switching of voltage with ICSP - Switch on and discharge". The power up time can be approximately evaluated from charging current, which is 100mA, the discharge time from the discharging resistor in the programmer, which is 1kΩ.

Recommended operational voltage of the programmer

VDD from the application | 2.7V - 5.5V
I/O pins except of MISO | 0V - VDD, with exception of VPP=13V
MISO | 0V - 5.5V including the disconnected from application condition


PICQUICK

  • Description of the programmer
  • Supported parts

Description of the programmer

picquick PICQUICK is fast, reliable, yet cheap developmnent tool for PIC® microcontrollers and serial EEPROM memories (Microchip). On of the greatest advantages of this programmer is support for all types of PIC microcontrollers.

Choose any part suitable for your application and you can be sure that PICQUICK supports it. Moreover there id support for Microchip EEPROM memories (I2C and MicroWire). These memories are often used to extend internal memory of the microcontroller. PICQUICK is designed to be flexible to support future parts. Support for practically all new parts which came to the market after PICQUICK was added just by upgrading the software.

Hence there is no need to upgrade firmware nor any hardware changes are required which brings convenience and financial benefits to the user. The software upgrade is available for free to all users. It contains support for new parts, new feaures and possible changes to programming algorithms, if required by Microchip.

PICQUICK directly supports In-Circuit Serial Programming (ICSP) by dedicated connector and cable, which is included in the package. Current limitig circuitry for both power supply and programming voltage minimizes risk of damage to the part when handled incorrectly.

Supported parts

  • all recent PIC® microcontrollers
  • serial memories 93Cxx and 24Cxx


PICCOLO

  • Description of the programmer
  • Supported parts

Description of the programmer

piccolo PICCOLO is a low cost development programmer for 18-pin Microchip PIC® microcontrollers which are equipped by flash memory. Parts in larger packages (28 and 40) can be programmed using ICSP cable.

PICCOLO perfectly suits beginners, students and amateurs. The programmer conforms to Microchip programming specification (development category).

Supported parts

  • All recent PIC® microcontrollers equipped by flash memory, directly in the programmer 18-pin packages only.


PICCOLO Grande

  • Popis programátoru
  • Podporované typy součástek

Popis programátoru

piccolo grande PICCOLO GRANDE is a low cost development programmer for 18, 28 and 40-pin Microchip PIC® microcontrollers which are equipped by flash memory. It is possible to program standalone parts using a ZIF socket as well as parts alredy soldered in an application circuit using ICSP cable (In-Circuit Serial Programming).

PICCOLO perfectly suits beginners, students and amateurs needs. The programmer conforms to Microchip programming specification (development category).

Supported parts

  • All recent PIC® microcontrollers equiped by flash memory. Parts in 18, 28 and 40-pin paskages can be programmed directly in the programmer.


CAPR-PI

  • Description of the programmer
  • Supported parts

Description of the programmer

Supported parts

  • All recent PIC® microcontrollers with flash memory, which do not feature MCLR/Vpp and I/O function on a single pin.
    The restriction applies to e.g. PIC16F627/628.


PVK Pro

  • Description of the programmer
  • Supported parts

Description of the programmer

pvk pro PVKPro is development and educational kit with built-in programmer for PIC16F84A on a single board. It is designated for study and educational purposes and helps to get familiar with PIC mirocontrollers, realtime processing, I/O, display multiplexing, button scanning and more.

The board contains all the essentials for typical microcontroller applications.

  • power supply circuitry
  • oscillator
  • reset circuitry
  • 4-digit 7-segment LED display
  • 8 LEDs
  • 8 pushbuttons

All user pins can be configured by DIP switches to be connected to on board peripherals or to be used for external circuitry. The board connects to the PC using parallel port.

Supported parts

  • PIC16F83 / 84 / 84A
  • PIC16F627 / 628 with limitations
    The programmer PVK-Pro cannot comply with programming specifications for parts which feature I/O function on the MCLR pin.

PIC16F627/628 microcontrollers must not be programmed or tested in PVK-Pro with their MCLR pin configured as I/O. Doing so could cause damage to the part or the programmer.

Using the -MCLR pin as I/O ns PVK-Pro does not make any sense anyway thus the inability to program such parts is rather not much limiting.


Application menu overview

Application menu is a common part of most of the Windows applications. Using menu the application functions may be selected. Actions can be triggered either by a mouse click on corresponding menu item or using a keyboard by holding the <ALT> key and pressing a key corresponding to highlighted character of a menu item.

The menu is divided to following categories:

  • File
  • Edit
  • View
  • Part
  • Options
  • Help

Table of contents


File menu

The File menu contains following items:

  • New
  • Open...
  • Open next file
  • Reload
  • Save
  • Save as...
  • Import data memory...
  • Export data memory...
  • Open hex file with data automatically
  • New project
  • Open project...
  • Save project...
  • Close project...
  • Recent projects
  • Read calibration information...
  • Save calibration information...
  • Export to binary...
  • Exit

File -> New

Keyboard shortcut: Ctrl+N

Creates a new empty file. If the currently open file has not been saved, the user is prompted to save it first.

File -> Open...

Keyboard shortcut: Ctrl+O

Opens a file using standard Windows dialog. For supported file types see Description of Intel HEX file format. HEX and A43 files are loaded as HEX, the other are loaded as BIN.

File -> Open next file

Imports next HEX or BIN file with selectable offset. This function is useful if a user needs to load second file to the chip memory. HEX and A43 files are loaded as HEX, the other are loaded as BIN.

File -> Reload...

Keyboard shortcut: Ctrl+R

Reloads currently open file from the disk. This function is useful to reload a file updated by another application.

If the option "Check for HEX file updates" is turned on (see Options), the user is asked whether to reload the file whenever it is updated.

File -> Save

Keyboard shortcut: Ctrl+S

Saves the file to the disk. If you wish to save the file with a different name, use Save as... instead. Unused memory areas may be skipped during the saving process and thus may not get saved according to selected Options.

File -> Save as...

Saves the file with a new name using a standard Windows dialog. Unused memory areas may be skipped during the saving process and thus may not get saved according to selected Options.

File -> Import data memory...

Provides with importing of EEPROM memory from separate file using a standard windows dialog. The file is read from the zero address regardless of its contents as if it was plain EEPROM data. A file generated by a compiler cannot be imported this way under normal circumstances.
This function is provided for compatibility with older software which saves EEPROM contents to a separate file. This function is considered to be obsolete since contents of all memories is saved to a single file by recent applications. (According to Microchip's recommendation)

File -> Export data memory...

This will save content of the data memory to the separate hex file. It's the only possibility how to export data memory for microcontrollers by Atmel. The data memory content of other microcontrollers can be exported together with the code memory content in one hex file using File/Save menu command.

File -> Open hex file with data automatically

If this choice is checked off the UP program will automatically load the hex file for the data memory with loading of the file for the code memory. This choice is active only if separate file for the data memory is opened.

File -> New project

Keyboard shortcut: Shift+Ctrl+N

Creation of a new project.
Usage of project files is recommended especially when using several different parts or using several programmers. A project file contains all necessary settings and thus provides with convenient way of loading them all at once.

File -> Open project

Keyboard shortcut: Shift+Ctrl+O

Opens already existing project file using a standard Windows dialog. If some other file was open within this project, it is loaded too.

File -> Save project

Keyboard shortcut: Shift+Ctrl+S

Saves a project using standard Windows dialog with a new name. Saving of the file with the same name is performed automatically likewise the program settings.

File -> Close project

Keyboard shortcut: Shift+Ctrl+W

Saves currently open project, closes it and restores the state of the program as it was before starting work on the project.

File -> Recent projects

Under this menu item there are remembered last 5 used projects. After clicking on the project name, the project will be loaded.

File -> Read calibration information...

Opens a file using standard Windows dialog and reads calibration information from it.

File -> Save calibration information...

Using standard Windows dialog creates a file with calibration information read from the part in the programmer. After the part is erased it is possible to load the calibration information back using the command Read calibration information.

For further information about support for calibration information see separate chapter about calibration memory.

File -> Export to binary...

Writes raw binary data from program or EEPROM memory to a selected file. Data alignment of 8 or 16 bits can be chosen.

File -> Exit

Standard Windows keyboard shortcut: Alt+F4
Keyboard shortcut: Alt+X

Exits the application.

Notice: If the currently open file has been changed, the application prompts the user with an option to save the changes. If the application termination is forced by computer shutdown and there is no user response Windows terminates the application without giving it a chance to save the file or settings after a while.
When operating with the hardware the application refuses any system request for shutdown and may be reported as an application which is not responding - this is normal.


Menu Edit

The Edit menu contains following items:

  • Fill with value...
  • Insert text...
  • Enclose by RETLW

Edit -> Fill with value...

Fills selected memory area with given value. This function is usually used to blank (all ones) or zero (all zeros) of selected areas, but may be also used for other purposes.

When this function is invoked, the memory type is preselected according to active window.

If there was a memory area selected it is automatically predefined for filling. A memory area can be selected by holding down the Shift key and clicking a mouse or moving by cursor keys. For further information see hex editors.

Edit -> Insert text...

Inserts a text encoded in ASCII into a memory. The end-of-line character can be encoded as NULL, CR, LF or CR+LF.
It is possible to fill in individual bytes or enclose data by RETLW instruction (applies to program memory only).

When this function is invoked the memory type and starting address is predefined according to active window and selected location.

Edit -> Enclose by RETLW

Encloses data in selected area by RETLW instruction.
This function can be invoked only if there a hex editor window active, it may be also invoked from the local menu (right mouse click in the hex editor).

A memory area can be selected by holding down the Shift key and clicking a mouse or moving by cursor keys. For further information see hex editors.


View menu

The View menu contains following items:

  • Code memory
  • EEPROM
  • Configuration memory
  • View code memory
  • View EEPROM
  • View configuration memory

View -> Code memory

Toggles visibility status of code memory editor. For further information on editors see separate chapter.

View -> EEPROM memory

Toggles visibility of EEPROM memory editor. For further information on editors see separate chapter.

View -> Configuration memory

Toggles visibility of configuration memory editor.

View -> Show code memory

Keyboard shortcut: F10

Shows code memory editor and brings its window to foreground. For further information on editors see separate chapter.

View -> Show EEPROM memory

Keyboard shortcut: F11

Shows EEPROM memory editor and bring its window to foreground. For further information on editors see separate chapter.

View -> Show configuration memory

Keyboard shortcut: F12

Shows configuration memory editor and brings its window to foreground.


Part menu

The Part menu contains following items:

  • Program
  • Read
  • Verify
  • Erase
  • Blank check
  • Select part

Part -> Program

Keyboard shortcut: Shift+F5

  • Program All
    Keyboard shortcut: F5
    Erases, blank checks, programs and verifies whole part. Before taking the action a check on Device ID, and Code/Data Protection is performed.
  • Program all but EEPROM
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Performs task similar to Program All, except of erasing, programming and verification of EEPROM memory. This function is not available for parts without EEPROM memory, Program All should be used instead.
    This function may not be available under certain circumstances of Code or Data protection of the part. In such situation the program offers complete erase and reprogramming of the part, including the EEPROM memory.
  • Program code memory
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Erases, blank checks, programs and verifies code memory.
  • Program EEPROM memory
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Erases, blank checks, programs and verifies EEPROM memory.
  • Program configuration memory
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Programs and verifies configuration memory.
  • Differential programming
    Keyboard shortcut: Ctrl+F5
    perform differential programming, i.e. reads the part and programs only memory cells value of which is different to desired one. If code or data protection is applied, it makes no sense to perform differential programming, and thus complete reprogramming will be performed.
    Since this function requires support by the programmed part, it may not be available for some of them.
  • Differential program EEPROM
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Perform differential programming of the EEPROM memory, it works same way as differential programming of the code memory. Since this function requires support by the programmed part, it may not be available for some of them. If code or data protection is applied, it makes no sense to perform differential programming, and thus complete reprogramming will be performed.
    This function must be used with AVR devices, if the user wants to program the EEPROM memory only and the memory were not erased before.
  • Mass production
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Provides with easy way of programming of several pieces of part with identical or similar content. (e.g. different serial number). See Mass production mode for details.

Some items may not be available for certain parts.

Part -> Read

Keyboard shortcut: Shift+F6

  • Read All
    Keyboard shortcut: F6
    Reads out the whole part.
  • Read all but EEPROM
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Reads out the whole part except of EEPROM memory.
  • Read code memory
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Reads out the code memory.
  • Read EEPROM
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Reads out EEPROM memory.
  • Read configuration memory
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Reads configuration memory.

Some items may not be available for some parts.

Part -> Verify

Keyboard shortcut: Shift+F7

  • Verify All
    Keyboard shortcut: F7
    Compares content of the whole part with contents of the editors.
  • Verify All but EEPROM
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Compares content of the part except of EEPROM with contents of the editors.
  • Verify code memory
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Compares content of code memory with content of the editor.
  • Verify EEPROM
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Compares content of EEPROM memory with content of the editor.
  • Verify configuration memory
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Compares content of configuration memory with content of the editor.

Some items may not be available for some parts.

Part -> Erase

Keyboard shortcut: Shift+F8

  • Erase All
    Keyboard shortcut: F8
    Erases the whole part.
  • Erase code memory
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Erases code memory. This function cannot be used if the part is code or data protected.
  • Erase EEPROM
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Erases EEPROM memory and blank checks it. This function cannot be used if the part is code or data protected.

Blank check is performed automatically after erasure. Since in most of the cases the erasure is performed without any problems, it is possible to turn this feature off (Option -> Settings -> Programming -> ...).

Part -> Blank check

Keyboard shortcut: Shift+F9

  • Blank check All
    Keyboard shortcut: F9
    Checks the whole part whether it is blank.
  • Blank check all but EEPROM
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Checks whether the part, except of EEPROM memory, is blank.
  • Blank check code memory
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Checks whether code memory is blank.
  • Blank check EEPROM
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Checks whether the EEPROM is blank.
  • Blank check configuration memory
    Keyboard shortcut can be assigned in Options -> Keyboard shortcuts
    Checks whether the configuration memory is blank.

Some items may not be available for some parts.

Part -> Select part...

Keyboard shortcut: F4

A dialog window for selection of a part pops up. In case of certain types of memories it is necessary to select also data organization after the part is selected.

The dialog window displays only parts supported by selected programmer. If the selected part cannot be programmed by ICSP, the ICSP mode is turned of automatically.
To select a part not supported by the programmer, select different programmer first.


Options menu

Options menu contains following items:

  • Settings
  • Equipment selection
  • Language selection
  • Keyboard shortcuts

Options -> Language selection

Keyboard shortcut: Ctrl+L

Select a language file using standard windows dialog. By this a single installation of the program can be used in several language mutations.

Options -> Keyboard shortcuts

Keyboard shortcut: Ctrl+K

A dialog window for assignment of keyboard shortcuts comes up after invoking this command.


Help menu

Help menu contains following items:

  • Help
  • Check Internet for an update
  • ASIX s.r.o. on the Internet
  • About

Help -> Help

Keyboard shortcut: F1

Invokes the help you are currently reading. The help may be invoked from various places, always by pressing F1.

Help -> Check Internet for an update

Will access the Internet and check if there is a new version of the program.

Help -> ASIX s.r.o. on the Internet

Opens company web pages ASIX s.r.o..

Help -> About

Shows a window with information about the program.


Configuring PRESTO

PRESTO options window

General options

Idle power supply

  • None / External: The programmer does not supply any power on VDD pin. It is possible to Run / Stop the application program only if external power supply is available.
  • Internal 5V: The programmer supplies 5V on VDD pin. The application may be powered from this pin.

Active power supply

  • External 3 to 5V: The programmer will not supply any power to application, on the contrary it will feed its input/output circuitry from the application.
  • Internal 5V: The programmer will supply 5V for the part on VDD pin.

Options related PIC microcontrollers

-MCLR pin control

The state of -MCLR pin in idle can be controlled using these buttons.

Programming method

  • HVP: Classical programming with 13V applied to -MCLR/VPP
  • LVP: LVP mode, only logical values 0 and 1 are applied to -MCLR/VPP.

Programming algorithm

  • Auto: Particular algorithm will be selected according to voltage present on the VDD pin.
  • Ucc=5V: Algorithm for fast 5V programming is selected.
  • Ucc=3 to 5V: Slow programming algorithm, though working with all voltages will be used.

PE

With PIC24 and dsPIC33 it's possible to choose programming method using PE CheckBox. The PE means “Programming Executive”, this method is usually faster then common method of the programming.

Options related to AVR and 8051 microcontrollers

Oscillator frequency

The AVR microcontroller require either external or internal oscillator running during the programming. The maximal communication speed between programmer and the microcontroller depends on the frequency of used oscillator.

Faster programming with slow clock

After the chip erasing its fuses are programmed so that maximal frequency of internal oscillator is used. Then the programmer can communicate faster with the part. The programmer can reach shorter programming times for parts what use slow clock. This function only works when all the chip programming is selected, because the required fuses values must be back programmed at the end of the process.

Inverse RESET

The programmer generates inverse reset signal compared to the part standard reset signal polarity.

Options related to I2C memories

I2C bus speed

Choose maximal speed of the I2C bus. PRESTO is using internal pullup resistor of 2.2kΩ. when working with I2C bus.

I2C Memory Address

Choose address of an I2C memory to be programmed.


Using ICSP

ICSP

ICSP (In-Circuit Serial Programming) is a programming mode of PIC microcontrollers, which provides with programming of parts soldered on printed circuit board. There are two different programming algorithms available: HVP (+13V applied to Vpp) or LVP (using the LVP pin). LVP programming can be disabled in the configuration word. New microcontrollers have the LVP mode enabled by default thus it is necessary to handle the LVP pin during first programming (The LVP pin must be held in log.0 during HVP programming).

Pins used during the programming

HVP algorithm (+13V applied to Vpp)
  • -MCLR/VPP pin must be separated from reset circuitry (e.g. by 10kΩ resistor). Programming voltage (VPP) of +13V is applied to this pin during the programming, rising slope and the voltage level must not be affected by the application circuitry.
  • LVP pin (if the part has any) must be held in log.0!!
  • RB6 and RB7 pins must not be affected by application circuitry during the programming.

LVP algorithm (without +13V)
  • RB6, RB7, LVP and -MCLR/VPP pins must not be affected by application circuitry during the programming. Other pins may be in either logical level.
LVP algorithm is supported only by PRESTO programmer so far.

Maximal ratings of the pins (current drawn from the programmer)
 | PRESTO | PICQUICK | PICCOLO | CAPR-PI
CLK & DATA, VPP @ 0V/5V | 24mA | 4mA | 4mA | 8mA
Vpp @ 13V | 50mA1) | 50mA1) | cca 1mA | cca 1mA

1) For flash memory parts only. In case of OTP parts the application may draw only 1mA.

The frequency on data pins may reach several MHz during the programming and the application circuitry must not significantly affect the slopes of the signals.

Powering options

In all cases it is necessary to interconnect common ground (GND).
The microcontroller to be programmed can be powered either
  • externally from the application
  • internally from the programmer (5V)
External power supply from the applicationcannot be used for certain types of microcontrollers, which feature -MCLR/VPP pin configurable as I/O.
Internal power supply may be used only if the application circuitry does not draw too much power from Vcc pin of the programmer.
Programmer | Maximal current drawn from the programmer
PRESTO | 90mA1)
PICQUICK | 10mA1)
PICCOLO | 50mA

1) The programmer features software overcurrent protection. If the allowed current is significantly exceeded for certain amount of time (configurable) the programmer turns the power supply off. PICQUICK checks overcurrent upon turning on Vdd and Vpp only, while PRESTO checks overcurrent all the time the power supply is on.

  • PRESTO programmer features hardware support for external power supply. The programmer is capable of using voltage present on Vdd to power its I/O circuitry. This voltage may be even less than 5V. Please make sure whether the microcontroller you use in your application is not only able to run at voltage less than 5V but that it also can be programmed with such low voltage.
  • I case of PICQUICK and PICCOLO (GRANDE) it is possible to use external power supply if Vdd pin remains unconnected. Nevertheless the external power supply voltage must be the same as programmer's (that is 5V).
  • CAPR-PI programmer supports external power supply only, no other option is available. The operational voltage is 5V.
If the application contains capacitors which slow down power supply switching it may be necessary to set longer charge/discharge times in software.
Programmer | Charging current | Discharging current
PRESTO | corresponds to 50Ω | corresponds to 1kΩ
PICQUICK | corresponds to 50Ω | corresponds to 10kΩ
PICCOLO | corresponds to 50Ω | none
Approximate times to be set in the software t[µs] = 2.5 × C[µF] × R[Ω] .
E.g. for application containing capacitor of 33µF programmed using PRESTO 2.5×33×50=4125µs is needed to charge and 2.5×33×1000=82.5ms to discharge the capacitor.

Recommended wiring of -MCLR/VPP pin

Recommended wiring considering recommendations in Microchip datasheet. doporučené zapojení
Values of R and C determine time to hold the processor in reset state. The diode causes fast discharge of the capacitor when Vdd is disconnected. Zener diode limits programming voltage (+13V) supplied by the programmer.
The circuitry can be simplified by omitting R,C and diode. Such circuitry has no reset state hold time.

ICSP connector

All programmers by ASIX are using unified connector for ICSP programming with pin spacing of 2.54mm. This connector has 6 or 8 pins (depends on the programmer) with 5 (or 7) signals. Extended version of the connector (8 pins) features additional LVP pin, which is used for LVP programming.
Pin number | Signal | Programming connector
1 | -MCLR | VPP/-MCLR
2 |  | not used (key)
3 | VCC | VCC
4 | GND | GND
5 | RB7 | DATA
6 | RB6 | CLOCK
7 |  | not used
8 | RB3/RB4/RB5 | LVP

ICSP cables

ICSPCAB

6 pin <-> 5×1 pin

icspcab

ICSPCAB66

6 pin <-> 6 pin

icspcab66

ICSPCAB8

6 pin <-> 7×1 pin

icspcab8


Tips and tricks

This chapter contains various useful tips and guides to help you using UP efficiently.

  • Controling the program using messages
  • Running the program from command line
  • Using calibration memory
  • Mass production mode
  • Intel HEX File format
  • Using more than one instance of UP at a time

Table of contents


Using more than one instance of UP at a time

Running UP more than once

In a typical case only one instance of UP is running at a time: another execution of the application results in passing the command line parameters to already running instance.
UP can be run more than once with each instance having unique window class name. Instances with the same class name will communicate with each other. Windows class name can be specified on the command line using /w parameter. All command line parameters are described on separate page.

Example

First instance of UP can be run in common fashion from the start menu.
Another instance may be run from command line e.g. up /w "another up"

Access to a programmer by more than one instance

Only a single instance of UP can access a programmer at a time (in case of PRESTO this applies also to other utilities handling the programmer). It is up to the user to ensure that no more than one instance is accessing a programmer which connects to parallel port at a time. In case of USB programmer this is task of access right management of the operating system. The operating system will not allow multiple access to a programmer. UP does not allow other software to access PRESTO even if it is idle for it is continuously monitoring state of the button and voltage on the power supply pin.
It is possible to force UP to release the programmer for other application by using dialog for selection of a programmer. Navigate the menu to select a programmer. As long the dialog is displayed, the programmer is released and can be accessed by another application There will not be any loss of data after the dialog is canceled.


Mass production

To simplify programming of several parts with the same contents (except of fine distinctions, see serial numbers) mass production mode is provided.

Mass production mode

Menu: Part -> Program -> Mass production

The function is available also from tool panel under "Program" icon.

In the mass production dialog the programming can be started by clicking "Program" button, which is equivalent to "Program All" or "Program All but EEPROM" depending state of "No EEPROM programming" option.

Mass production counter, is also available in this dialog. According to Options it can be also displayed in the status panel. The counter displays total number of programmed parts in both mass production and standard mode.

Serial numbers

The "Serial numbers" function programs serial number or other data sequence into given memory area before or after the programming.

Serial numbers may be:

  • automatic
    Automatic numbers are always programmed to a single memory location of the part e.g. code memory, EEPROM memory or ID locations. The serial number can be either decimal or hexadecimal and may be encoded either as 4-bit combinations (up to 4 to a single word) or ASCII character (up to 2 to a single word). If code memory is used to store serial number it may be optionally enclosed in RETLW instruction.
  • read from a file
    In this case a number may be split into several memory areas (e.g. serial number itself in code memory, device address in the EEPROM and, the same serial number in the ID locations to allow reading it even from a protected part).
    See serial number file format.

Serial number file format

The serial number file is a text file which can be easily generated by other program. Recommended file extension is .SN or .TXT.

  • White space is a space, tab or end-of-line (CR+LF).
  • Comment is any line beginning with semicolon. ';'
  • Serial number record is a text in form
    label: data record, data record, ..., data record; Comment
  • Label is a string identifying serial number. Label is mandatory.
  • Data record is compound of address (hexadecimal) and data fields (hexadecimal) to be programmed to the memory starting at given address,
    e.g. 2100 05 55 54 causes the EEPROM to contain 05h, 55h, 54h at addresses 00 to 02.

    It can be specified memory where the serial number will be saved using word CODE. or PROG. or P. for program memory or DATA. or EE. or E. for data memory or ID. or I. for ID location. These words are followed by address in the specified memory.
    e.g. EE.00 05 55 54 causes the EEPROM to contain 05h, 55h, 54h at addresses 00 to 02.
    Notes:
      There is no specifier for fuses, it does not make much sense to place serial number there.
      For dsPIC parts the CODE address is the address of the 24 bit word, i.e. the internal dsPIC address divided by 2. In case of EEPROM, specify address of 16-bit word.
      Standalone (I2C, SPI) memories feature just one address space which is treated as CODE.

  • Comment following serial number record is optional.

Example of serial number file:

; comment at the beginning

sn1:          0000     34 45 56 67,
              2100     01 02 03 04;   this is serial number 1
sn2:          0000     45 56 67 78,      2100     02 02 03 04;
sn3:          0000     56 67 78 89,      2100     03 02 03 04;
; a note

sn4:          0000     67 78 89 9A,      2100     04 02 03 04;
sn5:          0000     78 89 9A AB,      2100     05 02 03 04;
sn6:          0000     78 89 9A AB,      2100     06 02 03 04;
sn7:          0000     78 89 9A AB,      2100     07 02 03 04;

sn8:	 code.0001 3F00 3F01 3F02 3F03,  data.0002 'x' '4' '2';
sn9:	 prog.0001 3F00 3F01 3F02 3F03,  e.0002 'x' '4' '3';


Using UP from the command line

The program itself ensures to be run in a single instance. If there is another instance being run, the command line parameters are handed over to the already running instance to be executed.

Parameter overview

up.exe [{/ask | /q}] [{/e eeprom_file.hex | [/noe]}] [{/p | [/pdiff] | [/o]} file.hex | file.ppr] [/eeonly] [/part part_name] [/erase] [/w[nd] up_window_class] [/cfg ] [/devid ] [/blank ] [/verify file] [/s programmer_SN]

Legend:
The text in bold is to be put on the command line as is.
The text in italic is to be replaced by real parameter, e.g. file_name is to be replaced by real name of the file to be opened.

Text in curly brackets separated by | (pipes) represents a single choice from the listed items. e.g. { A | B } means "choose just one of A or B".
Text in [braces] represents optional parameter which can be used, but can also be omitted.

  • /ask Ask. To be used with /p. If the parameter is used, the program always prompts the user whether to program the part, even if this was disabled in the Settings of the program. The confirmation dialog also shows selected part type.
  • /q /quiet Quiet mode. In this mode the program does not require any user intervention, but rather silently returns to an error code instead of displaying a dialog. See return error codes.
  • /e file EEPROM file. Name of a file containing EEPROM data. If the name contains spaces, it is necessary to enclose it by quotes. This parameter can be used together with /o or /p parameter only.
  • /noe No EEPROM. Causes the program to skip EEPROM programming. If used with the MSP430 devices, the program skip all operations with the information memory.
  • /p file Program. Programs given file to code memory. If the name contains spaces, it is necessary to enclose it by quotes.
  • /pdiff file Program differentially. Programs given file. If the name contains spaces, it is necessary to enclose it by quotes.
  • /o file Open. File with given name will be opened. Optional parameter. If the name contains spaces, it is necessary to enclose it by quotes.
  • /eeonly The programmer will do the selected operation for EEPROM memory only, with MSP430 for Information memory only.
  • /part name Selects the specified part in the UP.
  • /erase The part will be erased.
  • /wnd class name Select another window class name. Using this parameter you can open more than one instance of program UP. Each instance must have unique window class name.
  • /cfg If this parameter is used together with /p parameter, only configuration memory is programmed. It's useful for example for AVR devices programming, because the user can configure the chip for faster oscillator first and then to program it much faster.
  • /devid If this parameter is used together with /p parameter, only the Device ID of the chip is checked.
  • /blank The program will do Blank Check of the chip.
  • /verify file Does the part verification.
  • /s programmer_SN This parameter allows to select the programmer in accordance with its serial number. The serial number can be entered as it is displayed in the UP or printed on the programmer, e.g.016709 or A6016709.

When working on several different projects it is likely that the program is set to use a part or programmer other than the one the user assumed. In such case using project files (.PPR), which contain all necessary settings including the file path, is strongly recommended.

Opening a file

up.exe file name

up.exe file.hex
up.exe "C:\My Documents\Recent Projects\PIC\My latest project\flasher.hex"

Programming the part

up.exe /p file name

up.exe /p file.hex
up.exe /p "C:\My Documents\Recent Projects\PIC\My latest project\flasher.hex"

Return error codes

0 | - No errors.
1 | - File error, e.g. file not found, unrecognized file format.
2 | - Device error. Communication test failed, error in communication.
3 | - Programming preparation error, e.g. failed to erase part.
4 | - Programming error.
5 | - Verification failed.
6 | - User interaction needed.
7 | - Device ID error.

Controlling UP utilizing Windows messages

UP may be also controlled using Windows messages. Running instance of UP executes desired action instantly upon reception of a message.
The messages ought to be sent to Window of "up v1.x" class. Type of the message is always WM_USER. Particular commands are distinguished by wParam, the parameters are taken from lParam.

Commands overview

(* Messages to UP
 * These messages should be sent to Window identifiable by its class "up v1.x"
 * Almost all messages responses 0=false=failed=can't; 1=true=done=OK=can
 * WM_USER:
 *    wParam = 0   lParam = 0; does anything, only returns 1
 *                 lParam = 1; SetForegroundWindow()
 *                 lParam = 2; maximizes and SetForegroundWindow()
 *    wParam = 1   lParam = any; Does programming all contents of file; Result is same as on command line
 *    wParam = 2   lParam = any; Does programming without eeprom;       Result is same as on command line
 *    wParam = 3   Does programming (with erase)                        Result is same as on command line
 *                 lParam |= 1; of main code memory
 *                 lParam |= 2; of data eeprom memory
 *                 lParam |= 4; of configuration memory
 *    wParam = 4   Does reading                                         Result is 1 - ok
 *                 lParam |= 1; of main code memory                               0 - failed
 *                 lParam |= 2; of data eeprom memory
 *                 lParam |= 4; of configuration memory
 *    wParam = 5   Does differential programming                        Result is 1 - ok
 *                 lParam |= 1; of main code memory                               0 - failed
 *                 lParam |= 2; of data eeprom memory
 *                 lParam |= 4; of configuration memory
 *    wParam = 6   Does verification                                    Result is 1 - ok
 *                 lParam |= 1; of main code memory                               0 - failed
 *                 lParam |= 2; of data eeprom memory
 *                 lParam |= 4; of configuration memory
 *    wParam = 7   Does erasing                                         Result is same as on command line
 *                 lParam |= 1; of main code memory
 *                 lParam |= 2; of data eeprom memory
 *                      wParam = 1,2,3,4,5,6,7 are 'thread blocking'!
 *    wParam = 15  lParam = any;                                        Result is always 1
 *                 Does the same like Button GO was pressed
 *                 (even using another programmer than PRESTO)
 *    wParam = 16  query for capability
 *    wParam = 17  do requested action
 *        wParam = 16 and 17 has same lParam values:
 *                 lParam = 0; MCLRControl_Run
 *                 lParam = 1; MCLRControl_Stop
 *                 lParam = 2; MCLRControl_Reset
 *                 lParam = 8; Actual voltage on Presto
 *                              0 = Unknown
 *                              1 = 0V
 *                              2 = ~2V
 *                              3 = 5V
 *                              4 = >6V
 *    wParam = 32  reinitialization of UP
 *                 lParam |= 1; reload settings (=reload project/ini file or registry)
 *                 lParam |= 2; reload language file
 *                 lParam |= 4; recreate programmer        (like programmer was changed)
 *                 lParam |= 8; reload programmer settings (like port settings)
 *                 lParam |=16; reload selected part
 *                 lParam |=32; reload hex file
 *                 lParam |=64; recreate all dialog windows (adjust their size when reloading part)
 *                 lParam == 0x0100; refresh part specific windows
 *                 lParam == 0x0200; refresh all editors
 *                 lParam == 0x0300; refresh project captions
 *    wParam = 33  lParam |= 1; save all project settings
 *    wParam = 48  actual file save (like Ctrl+S is pressed)
 *                 lParam |= 1; main code memory will be saved
 *                 lParam |= 2; data eeprom memory will be saved
 *                 lParam |= 4; configuration memory
 *                     (for AVRs |=4 is not possible and (1+2) is not possible)
 *    wParam = 56, lParam = 0; will return the handle of the UP main form
 *)
{===================================================================================================}
(*
 * WM_CLOSE:      will close the program
 *)

Example

var
 window: HWND;
begin
 window := FindWindow('up v1.x', nil);
 Result := SendMessage(window, WM_USER, 0, 0);
end.

Usage of UP_DLL.DLL

String values may be sent to UP by using up_dll.dll library.
unit up_dll;

interface

Function UP_LoadFile   (FileName: PChar; style: integer): integer; stdcall;
(*
 *   Load File (with extension .hex or .ppr);
 *   Loading of .ppr file can result in loading .hex file too;
 *   Result codes are same like on command line.
 *
 *   Style |= 1; UP will be quiet on file load errors
 *   Style |= 2; UP will do no previous file saving
 *
 *)
Function UP_GetStrValue(ValueName: PChar; Value: PChar; Size: integer): integer; stdcall;
Function UP_GetIntValue(ValueName: PChar; var Value: integer): LongBool; stdcall;
Function UP_SetStrValue(ValueName: PChar; Value: PChar): LongBool; stdcall;
Function UP_SetIntValue(ValueName: PChar; Value: integer): LongBool; stdcall;

Function UP_LoadFile_Wnd(WndClass:PChar; FileName: PChar; style:integer):integer; stdcall;
Function UP_SetStrValue_Wnd(WndClass:PChar; ValueName: PChar; Value:PChar): BOOL; stdcall;
Function UP_SetIntValue_Wnd(WndClass:PChar; ValueName: PChar; Value:integer): BOOL; stdcall;
Function UP_GetStrValue_Wnd(WndClass:PChar; ValueName: PChar; Value: PChar; Size: integer): integer; stdcall;
Function UP_GetIntValue_Wnd(WndClass:PChar; ValueName: PChar; var Value: integer): LongBool; stdcall;
(*
 * All these functions are used for changing internal settings of UP in runtime.
 * UP_GetIntValue, UP_SetStrValue, UP_SetIntValue returns nonzero if successful
 * UP_GetStrValue returns amount of characters to copy into Value string including null terminator
 *       If Size is less than requied size, no characters are copied.
 *)
implementation

function UP_LoadFile;    external 'up_dll.dll';
function UP_GetStrValue; external 'up_dll.dll';
function UP_GetIntValue; external 'up_dll.dll';
function UP_SetStrValue; external 'up_dll.dll';
function UP_SetIntValue; external 'up_dll.dll';

function UP_LoadFile_Wnd; external 'up_dll.dll';
function UP_SetStrValue_Wnd; external 'up_dll.dll';
function UP_SetIntValue_Wnd; external 'up_dll.dll';
function UP_GetStrValue_Wnd; external 'up_dll.dll';
function UP_GetIntValue_Wnd; external 'up_dll.dll';
end.
Description of setting names and values is in separate file.


Description of Intel HEX File format

Intel HEX File Format used by UP

UP is using Intel HEX Files to read and write data (common extension of such files is .HEX).

Supported HEX file variants

  • "basic", also called Intel 8-bit HEX File, MPASMWIN produces this type of files when INHX8M parameter is issued
  • "extended", also called Intel 32-bit HEX File, MPASMWIN produces this type of files when INHX32 parameter is issued

Intel HEX File format description

Intel HEX Files are text file compound of lines (records) of following structure:
:LLAAAATTDDDD...CC

  • : Every line begins with colon (0x3A).
  • LL Length of the record (number of DD fields).
  • AAAA Address of first byte of the record.
  • TT Record type:
    • 00 - Data record.
    • 01 - End-of-file record. The file must end with this type of record.
    • 02 - Extended segment address. (32-bit HEX only)
    • 04 - Extended linear address. (32-bit HEX only)
    There are also other record types (03, 05) which UP ignores when reading a file and does not use when writing a file.
  • DD Record data. The number of bytes must be exactly LL.
  • CC Checksum. The checksum is binary complement of sum of all values on the line (8-bit byte by byte addition is used).

Data record

Example of a data record with configuration memory of a 14-bit part.
:02400E00413F30

  • Length of the record: 02 - Size of the configuration memory is one word = 14 bits = 2 bytes (aligned to whole bytes)
  • Record address: 400E - Address of the configuration memory is 2007h which, addressed by bytes, is 400Eh
  • Record type: 00 - Data record
  • Record data: 413F - Configuration word is 3F41h
  • Checksum: 30 = 02 + 40 + 0E + 00 + 41 + 3F = xxD0; neg D0 = 30

End of file

The only form of end of file record is:
:00000001FF

Extended addressing

This record types are used when more than 64 kB need to be addressed (e.g. for PIC18F microcontrollers the configuration information is stored at 0x30000000).

In such case it is necessary to use extended linear address record which contains upper 16 bits of the address. Lower 16 bits are stored in the data record.
:020000040030CA
This line sets upper 16 bits of address for configuration memory of PIC18F.

In case of extended segment address record, a segment address (i.e. bits 19-4) is stored. The segment address is then added to the addresses of forthcoming data records.

Saving of the part type identification tag to the .HEX file

Since confusion between selected part and the part a .HEX file was generated for is a common problem, UP offers a possibility to save part identification directly to the .HEX file. If Save part type to the file.
option is selected, the program appends after end of file record (see end of file record in Intel HEX Files) an identification of the part type: #PART=..... Most of the programs working with Intel HEX files ignore this line, however such file cannot be considered as fully complying to Intel HEX File format.


Storing calibration information

Support for calibration memory

Working with calibration information when using UV eraser.

Before erasing the part it is necessary to save calibration information. The function "Save calibration information..." can be used to perform this task.

Menu: File -> Save calibration information...
Menu: File -> Read calibration information...

The program also features function for blank checking the part. When this function is invoked, calibration information is displayed.

Working with calibration information of flash memory equipped parts

The calobration memory contents is preserved during common chip erasure.zachovává.

If it is desired to erase calibration information for any reason, function "Erase all, including calibration memory" can be used to perform this task. (Part -> Erase -> Erase all, including calibration memory).

Warning: New flash parts with calibration memory (e.g. PIC12F629) feature also bandgap bits, which are part of calibration memory. Thus these bits will get erased along with calibration memory once "Erase all, including calibration memory" function is used.


FAQ - frequently asked questions

Question list

Everything You Always Wanted to Know About PICs But Were Afraid to Ask

1. OTP parts (part numbers with JW or CL)
2. A/D converter - switching the channel
3. Pins with analog peripherals after reset
4. Behaviour of TRISE in 40+ pin parts

Problems with programming and possible solutions

5. Programming / reading / erasing using ICSP is not reliable
6. The software reports mismatch of Device ID
7. The software reports overcurrent

Using ICSP and connector of PRESTO

8. How to connect part to be programmed to an ASIX programmer
9. What is the difference between programming in socket and using ICSP cable?

Programming of PICs

10. What is the difference between HVP and LVP?
11. Is it possible to program PICs in LVP mode using a programmer by ASIX?
12. Is it possible to program PICs using power supply voltage lower than 5V using a programmer by ASIX?
13. Why cannot some parts be programmed using ICSP?
14. Why does not PICCOLO support some parts, e.g. PIC12C508?
15. Why cannot CAPR-PI program some parts?
16. Is it possible to use PVKPro with parts other than PIC16F84?

Advanced usage of UP

17. Is there a possibility to automate serial number/hardware address programming?
18. How does one control basic UP functions from other software (e.g. editor)?

Answers

1. OTP parts (part numbers with JW or CL)

Do not activate Code Protection fuse for these parts for in most of these parts it cannot be erased by UV light and the part cannot be reprogrammed any more.

2. A/D converter - switching the channel

If you use A/D converter multiplexed to measure several channels, don't forget to wait long enough for the capacitor of A/D converter to charge before you trigger the conversion (e.g. BSF ADGO). More information about A/D Converter can be found in the corresponding datasheet.

3. Pins with analog peripherals after reset

Pins which are used as inputs to A/D converter or analog comparator are set to analog mode after reset. The digital value obtained from these pins is always log.0. Commonly made mistake is forgetting about this feature ("I don't use the comparator in PIC16F628, why should I care?") This often happens when migrating from a part without analog peripherals to a part which do feature them (e.g PIC16F84 to PIC16F628).

4. Behaviour of TRISE in 40+ pin parts

The TRISE register in parts containing Parallel slave port affects also functionality of port D (e.g. PIC16F874 or PIC16F877) Forgetting this often results in unpredictable behaviour of port D or E.

5. Programming / reading / erasing using ICSP is not reliable

This often occurring problem may be caused by filtering capacitors on the power supply. It is necessary to reset the part during the programming disconnecting also the power supply for some part types. If the filtering capacitors are used it may take long time to discharge them and thus it is necessary to specify appropriate delay for switching the power supply in UP configuration.
Even filtering capacitors of only 100nF need charging/discharging delay!

6. The software reports mismatch of Device ID

More recent PICs feature Device ID - identification of the part type. This word is compound of two parts, part type identification, (e.g. PIC16F876A) and revision of the part. The word can be read using a programmer. It is located at address 2006h for PIC12F and PIC16F parts (configuration word is at 2007h), while it is at 3FFFFEh in case of PIC18F family. The software checks whether the device ID matches the assumed identification of selected part. The user is notified in case of mismatch (i.e. possible wrong insertion of a part or wrong part type is selected). The Device ID identifies the part type and cannot be reprogrammed nor erased.

7. The software reports overcurrent

PICQUICK and PRESTO programmers feature software overcurrent protection of power supply pins. The software checks whether the current through power supply pins is higher than allowed one after specified time period and if it is so, it turns of the power instantly. If your application contains filtering capacitors, it may be necessary to adequately prolong the delay to charge the capacitors. More about timing options can be found in chapter dealing withprogramming using ICSP connector.

8. How to connect part to be programmed to an ASIX programmer

Comprehensive description of wiring for ICSP programming using programmers by ASIX and using the signals designated for programming can be found in separate chapter dealing with this topic.
PRESTO programmer features multi purpose programming connector for ICSP (Microchip PIC), ISP (Atmel AVR), JTAG, SPI (serial Flash EPROMs and EEPROMs), Microwire and I2C bus. Description of wiring for particular parts can be found inchapter about PRESTO programmer.

9. What is the difference between programming in socket and using ICSP cable?

ICSP connector enables connections between programmer and application to program part directly in the circuitry eliminating handling of the part.
Using ICSP connector is useful also during programming and debugging: the programmer may control the -MCLR signal and reset the application circuitry / program without handing the processor (PRESTO and CAPR-PI programmers only).
If the programmer features both programming modes (features both socket and ICSP connector) it is necessary to set desired mode in the software.

10. What is the difference between HVP and LVP?

Classical HVP method switches the microcontroller to its programming mode by applying +13V to -MCLR/VPP pin. This results in certain difficulties e.g. necessity to have protection of application circuitry when using ICSP.

LVP method (particular part types only) dedicated LVP pin to enter programming mode. This disallows usage of this pin in the application and necessity to have one extra pin on the programmer. However -MCLR/VPP must still be handled though only as a data pin.

HVP method is always available. LVP programming may be disabled by programming the configuration word, but not using LVP programming itself. After the part is erased and upon shipping the LVP is always enabled.
Because of this the LVP pin should be handled as an input and held in log.0. during programming even if HVP is to be used

11. Is it possible to program PICs in LVP mode using a programmer by ASIX?

Yes, it is. PRESTO features LVP signal on its extended ICSP connector. The programming method can be chosen in the software: classical HVP using +13V or LVP. It is still necessary to connect -MCLR/VPP when using LVP though only log.0 and 1 will be sent to this pin during programming.

12. Is it possible to program PICs using power supply voltage lower than 5V using a programmer by ASIX?

Yes, some types of PIC microcontrollers do support programming of FLASH memory using power supply voltage lower than 5V. In general these are the ones which can read and program FLASH memory directly from the program running in the microcontroller. Nevertheless no PIC microcontroller can be erased with power supply voltage lower than 5V if its protection fuses are active (CodeProtection or DataProtection) so far.
PRESTO programmer allows for programming with power supply lower than 5V, the corresponding programming algorithm may be chosen in software.

13. Why cannot some parts be programmed using ICSP?

Some older parts e.g. PIC16C5x are programmed using parallel method (likewise 27Cxxx EPROM memories) and are not able to communicate serially during programming, thus the cannot be programmed using ICSP.

14. Why does not PICCOLO support some parts, e.g. PIC12C508?

PICCOLO is simple and cost effective programmer. Parts which do not feature FLASH memory demand precise VPP voltage and consume a lot of current of this voltage which PICCOLO cannot deliver.

15. Why cannot CAPR-PI program some parts?

CAPR-PI is a programmer designated to program microcontrollers using ICSP and it takes power from the application circuitry. This implies that the programmer cannot affect power supply delivered to the microcontroller in any way. That is why CAPR-PI cannot program such parts which require applying power supply after the programming voltage. These include e.g. PIC16F627/628.

16. Is it possible to use PVKPro with parts other than PIC16F84?

Yes, but with certain restrictions. The microcontroller must not be configured to use -MCLR/RA5 pin in mode other than -MCLR. If some other function of this pin is selected it will not be possible to reset the microcontroller (which itself is problem only when debugging) and moreover a short-circuit may occur during the programming of the part.
The part must be switched to programming mode from reset but since PVKPro cannot disconnect power supply, the only way to reset part is using -MCLR.
Even if these restrictions are applied, PVKPro cannot conform to programming specifications of such microcontrollers.

17. Is there a possibility to automate serial number/hardware address programming?

Yes, it is, using "Serial numbers" function. The numbering sequence need not to be of any logical order: it can be defined in a text file. Such file can be created in a few moments. The serial number need not to be placed in single location - it may be placed in several locations at once, e.g. both program memory and data EEPROM memory. If the numbers to be used follow some logical order (hexadecimal or decimal (=BCD), wrapped in ASCII characters, retlw instructions etc...), they may be generated directly in the software using predefined rules. More on this topic can be found in a chapter about serial numbers.

18. How does one control basic UP functions from other software (e.g. editor)?

  • To simply program a microcontroller it is possible to run UP with parameters given on the command line. The application executes, programmes the microcontroller and returns result code. For further information have a look at "Tips and tricks" section.
  • The application may be left running in the background or minimized and it is still able to receive commands given on the command line.
  • In case of PRESTO programmer the GO button can be used to trigger an action. e.g. programming of a part. The UP application must be running, though it may be minimized to taskbar. Appropriate options should be selected in the software for convenient usage, e.g. automatic closing of status window, automatic reloading of a file before programming.
  • The software is also able to receive messages to control basic operations. More can be found in "Tips and tricks" section.

Table of contents


==========================================================================================
 Look into some example batch files to see how to work with these settings.
==========================================================================================
==========================================================================================
 This information is provided only for expert users and without any warranty.
==========================================================================================

types are
  string = is string
  integer = signed 32bit value
  boolean = accessed like integers; 0 is false, other value is true

==========================================================================================

Prog.LoadFileBfgProg
    boolean
    If true, hex file is reloaded every time part is programmed

File.AutoCheck
    boolean
    If true, hex file is periodically tested for changes

File.LoadOnModify
    boolean
    If true, when change is detected, question pops up

FileLoad.ClearData
FileLoad.ClearCfg
FileLoad.ClearID
FileLoad.ClearCode
    boolean
    If true, contents of code memory are erased (in UP memory) before new file is loaded;
    all cells not stored in hex file will have its default (blank) state

Part.Name
    string
    Selected part name

Prog.Name
    string
    Selected programmer name
        values are PICCOLO, PICCOLOG, CAPRPI, PVKPROP, PICQUICK, PREST

Prog.BusSpeed
    integer
    Communication speed
        1 = Accelerated
        2 = Fast
        3 = Medium
        5 = Slow

Prog.ICSP
    boolean
    ICSP settings

Prog.PortBase
    integer
    Base address of used LPT port or serial number of device

LanguageFile
    string
    Relative path to used languange file

Project.File
    string
    Project file path

Project.Present
    boolean

Project.Template
    boolean
    If true, user is asked for project name before its saving

HexFile.File
    string
    Opened hex file path

HexFile.Present
    boolean

HexFile.Template
    boolean
    If true, user is asked for name before saving

HexFile.SaveVoid
    boolean
    If true, empty cells are saved too

Prog.QBfrEraseFlash
    boolean
    Question before erasing flash parts

Prog.QBfrProgFlash
    boolean
    Question before programming flash parts

Prog.QBfrProg
    boolean
    Question before programming OTP parts

Prog.QBfrDiffProg
    boolean
    Question before differential programming (of flash parts)

Prog.QBfrProgCP
    boolean
    Warning before programming part with some kind of protection

Prog.CloseStatOnGoodAct
    boolean
    If true, status window is automatically closed after read/verify etc... without errors

Prog.CloseStatOnGoodProg
    boolean
    If true, status window is automatically closed after programming without errors

Prog.SkipBlankForCfg
    boolean
    If true, no blank check of part is performed before programming configuration space

Prog.SkipBlankCheck
    boolean
    If true, no blank check of part is performed before programming

Serial
    integer
    0 = no serial numbers
    1 = serial numbers are from external file
    2 = serial numbers are computed

Serial.Step
    integer
    Stepping of serial numbers

Serial.File
    string
    File name of external file with serial numbers

Serial.File.Next
    string
    Label of serial number

Serial.Length
    integer
    If serial number is computed, serial number length (digits)

Serial.Actual
    (unsigned) integer
    If serial number is computed, actual computed serial number (if decimal, coded as BCD)

Serial.ASCII
    boolean
    If serial number is computed, If true, serial number is stored to part as ASCII characters

Serial.SaveTo
    integer
    1 = code memory
    2 = data memory

Serial.Retlw
    boolean
    If serial number is computed, If true, memory cells are filled with retlw instructions

Serial.Addr
    integer
    If serial number is computed, address where to save

Serial.CPW
    integer
    If serial number is computed, chars per word

Serial.Base
    integer
    If serial number is computer, base of serial number, can be only 10 or 16

Serial.Succ
    integer
    next serial number is
    0 = same
    1 = incremented
    2 = decremented
    3 = random (LSFR)

Serial.Order
    integer
    0 = HiLo hilo
    1 = hilo HiLo
    2 = LoHi lohi
    3 = lohi LoHi

Serial.Write.BeforeProg
    boolean
    If true, current serial number is "written" into opened hex editors just before programming the part.

Serial.Write.AfterProg
    boolean
    If true, current serial number is "written" into opened hex editors after successful programming.

Serial.Succ.AfterProg
    boolean
    If true, next serial number is generated after successful programming

ICSP.LongTime
    boolean
    If true, longer times for switching Vcc are taken

ICSP.LongTime.Time.SwOn
    integer
    Time to wait after Vcc is switched on in microseconds.

ICSP.LongTime.Time.SwOff
    integer
    Time to wait after Vcc is switched off in microseconds.

SpecSettings.PREST.Power
    integer
    0 = idle power supply is None / External
    1 = idle power supply is Internal 5V

SpecSettings.PREST.ProgPower
    integer
    0 = power supply during programming is External 2 to 5V
    1 = power supply during programming is Internal 5V

SpecSettings.PREST.i2cSpeed
    integer
    0 = 100kHz
    1 = 500kHz
    2 = 1MHz
    3 = Maximal

SpecSettings.PREST.i2cAddr
    integer
    0 = first suitable address or N/A
    1 = second suitable address
    etc...

SpecSettings.PREST.LVP
    integer
    0 = HVP method
    1 = LVP method

SpecSettings.PREST.PICAlg
    integer
    0 = automatic selection
    1 = assume VDD = 5V
    2 = assume VDD < 5V

SpecSettings.PREST.AVRXTAL.CLK
SpecSettings.PREST.AVRXTAL.RPT
    integers
    represent maximum AVR oscillator frequency
    values can be found in *.lng files at item
           MainForm.PRESTSpecForm.ComboAVRXTAL.xxx.Items where xxx is minimum
           divisor of system clock of selected AVR's SPI module. This is 2 for
           new AVRs, 3 and 4 for older AVRs and 24 for Atmel's 8051 arch.
           processors.
    These settings can be found in ini file too at
           [SpecSettings.PREST], XTALRpt and XTALClk


Hex editors

Hex editor windows

To display contents of memories of to be programmed so called hex editors are used. Different colors are used to display hex editor cells according to origin of the data, and their status, thus it can be easily told which cells were really loaded from the file, which were successfully programmed etc. The colors can be adjusted according to user's taste or needs. (especially recommended on workstations with low color displays), see settings, colors.

Selecting an area

An area in a hex editor can be selected by holding down the shift key and moving the cursor. After desired area is selected it is possible to perform filling with a value and enclose to RETLW instruction which are accessible from context menu (by right clicking the mouse).

Code memory editor

Menu: View -> Code memory

Keyboard shortcut to show the window: | F10
Keyboard shortcut to close the window: | Esc

Code memory editor shows contents of main code memory or, in case of serial EEPROM parts (24xx, 93xx, ...), the contents of the memory itself.

EEPROM editor

Menu: View -> EEPROM memory

Keyboard shortcut to show the window: | F11
Keyboard shortcut to close the window: | Esc

EEPROM (data memory) editor is used to show content of additional memory of some parts, typically an EEPROM memory. Since not all of the parts are equipped by such memory, this editor may not be accessible for some parts.

Configuration memory editor

Menu: View -> Configuration memory

Keyboard shortcut to show the window: | F12
Keyboard shortcut to close the window: | Esc

Configuration memory editor shows settings to be programmed to the part but do not reside in any of previously mentioned memories. Since not all of the parts need configuration data, this editor may not be accessible for some parts.

Tips for advanced users:

Although this configuration memory can be represented as set of options in fact it is nothing more but a memory, which can be also handled cell by cell, thus it is possible to view this memory also this way. This can be achieved by turning on Options -> Settings -> Editors -> Show configuration memory as raw data, or by double clicking the configuration memory window.

ID locations of the part (not to be confused with Device ID) can be also found in the configuration memory window. ID locations can be programmed with a value to identify the part, e.g. serial number. The ID locations are always available for reading, even if code or data protection is applied to the part.

According to recommendation of Microchip the ID locaitons should not be programmed with any value, only certain number of bits (typically 4) of each position should be used to carry identification data while other bits should be programmed with a default value. This can be achieved by turning on Options -> Settings -> Editors -> Mask ID locations ....

Table of contents


Program settings

Menu: Options -> Settings...

Keyboard shortcut: Shift+F10

Programming

Menu: Options -> Settings...; Programming tab

Keyboard shortcut: Shift+F10

All generic options can be set in this window.

Settings related to particular programmer (e.g. communication port, ICSP mode) are available in equipment configuration; To select type of part to be programmed, memory organization, etc. use separate window, see selecting part type.

  • Always reread the .HEX file before programming
    If this option is selected the file is reread any time programming is invoked. If mass production is active, the file is read first and then following serial number is issued.
  • Confirm erasure / programming / OTP programming/ differential programming / Code/Data protection programming
    Set of options determining which actions require user confirmation to be taken. If the program has to prompt the user confirmation it does so just once, except of the programming Code/Data protection, for which additional confirmation may be required. If the program prompts the user to announce some additional information (e.g. The part to be programmed has Code protection active already, erase whole part?), and the answer is positive, no further confirmation is required.
  • Automatically close status window
    Causes status window to be closed automatically unless there was a warning or an error has occurred during the erasure / programming / verification.
  • Audible warning
    Causes to program to use standard system "exclamation" sound when there is warning or error.
  • ICSP programming
    ICSP programming cannot be used for all parts, on the other hand some programmers require programming of certain parts in ICSP mode only.
    When ICSP cable is used to program microcontroller directly in the application circuitry, the "ISCP power up delay" causes a delay after applying power to the microcontroller, e.g to charge filtering capacitors in application circuitry. PICQUICK has built-in overcurrent protection, which measures the current shortly after applying power to the microcontroller. In ISCP mode the actual delay depends on this option, thus increasing this value unnecessarily increases the probability of possible damage to the part when handled incorrectly. For shorter delays the programmer's circuitry can detect the overcurrent soon enough to prevent the damage to the part. The overcurrent limit is about 100 mA for both power supply and programming voltage.
  • No blank check
    Most of the rewritable parts are able to overwrite configuration memory without erasing the whole part. To take the advantage of this, blank checking of configuration memory can be disabled. This does not apply to programming of the whole part when complete erasure is performed. Skipping the blank check after erasure slightly speeds up the programming process which is useful especially during development. Improperly erased part will not be programmed correctly, which shows up a bit later during verification process, on the other hand improper erasure happens during one in several hundreds attempts only.
  • Don't verify unprogrammed words at the end of the memory
    If there is some clear region at the end of the programmed memory, it will not be verified. This function makes the verification faster, the user usually do not mind the content of the clear region at the end of the memory.
  • Do not verify
    This function allows to skip the verification step during programming. It can be useful for development, but this function must not be used for production programming! If the verification is skipped, we cannot be sure that the chip has been programmed correctly.

Panel settings - toolbar and status bar

Menu: Options -> Settings...; Panels tab

Keyboard shortcut: Shift+F10

  • Toolbar is a bar with speed buttons just under the application menu. If you desire to hide the tool bar completely, turn off both Show captions and Show icons in toolbar options
  • Status bar (in the bottom of main application window) the status bar can be also disabled, otherwise it is used to displays information about selected programmer, ISCP mode, selected part, file modification status etc. The status bar reacts to doubleclick and right click of the mouse.
  • Mass production counter is displayed on the status panel and shows total number of successfully programmed parts.

Settings for reading and writing of files

Menu: Options -> Settings...; Files tab

Keyboard shortcut: Shift+F10

  • Writing of files
    This option can be used to inhibit writing of particular parts of memory to .HEX file.
  • Monitor .HEX file for updates
    Useful especially during software development - the file will be reread when its creation/modification time changes.
  • Save part type identification tag to .HEX file
    Part type identification tag will be appended at the end of the file if this option is selected Most of the programs working with Intel HEX files ignore this line, however such file cannot be considered as fully complying with Intel HEX File format. See Intel HEX files for more information.
  • Check part type upon reading .HEX file
    Causes part type identification tag in the .HEX (if any) to be compared with selected part and asserts a warning if they do not match.
  • Save blank positions to .HEX file
    If this option is turned off the resulting file may be shorter, however this may also cause confusion since memory cell is considered to be blank if all its bits are set (i.e. FFFh, 3FFFh etc.) which may also be valid instruction (e.g. 3FFFh represents addlw -1)
    The file is saved in blocks of 8 or 16 bytes, thus the probability of omitting of such instruction is pretty low.
  • Initialize code / EEPROM / Cfg / ID locations before reading.
    All bits in corresponding memory area are set upon reading the file. This will cause all positions not saved in the file to be clear.
  • Read EEPROM / ID from the part
    Causes EEPROM / ID to be read from the part inserted in the programmer rather than a file, which prevents this information to be overwritten during programming.
    Warning! This function may cause spontaneous access to the programmer e.g. upon starting the program.

Hex editor colors

Menu: Options -> Settings...; Colors tab

Keyboard shortcut: Shift+F10

Colors of hex editors can be change to meet users needs and aesthetic feeling.

Hex editor and configuration memory editor settings

Menu: Options -> Settings...; Editors tab

Keyboard shortcut: Shift+F10

  • Narrow code memory editor
    Causes the code memory editor to display 8 instead of 16 cells per a line. This is useful especially for low resolution displays. This option may change spontaneously when different part is selected.
  • Mask ID locations
    According to specification the ID locations should be masked with leaving (typically) only 4 bits for user data. If this option is selected, program will handle this automatically.
  • Raw fuses editing
    Recommended for advanced users only.
    This option provides with direct editing of configuration word.

Serial numbers

Menu: Options -> Settings...; Serial numbers tab

Keyboard shortcut: Shift+F10

For information on serial numbers and concerning features, see separate chapter.


Programmer selection

Menu: Options -> Select programmer...

Keyboard shortcut: Shift+F4

This dialog can be also invoked by doubleclicking the status bar at the bottom of main application window.

Programmer / port selection

Select desired programmer and its communication port. If the desired port is not listed in the drop box, it is possible to enter its base address manually.

ICSP mode

Sets the programmer to use ICSP programming mode. Some programmers may not support ICSP mode or on contrary may support ISCP mode only, thus this option may not be available for certain programmers.

The ISCP mode can be also selected from context menu accessible by Right clicking the status bar in the bottom of the main application window.

Communication speed

By default the communication speed is set to "Fast". If longer communication cable is used, it may be necessary to lower the speed for reliable operation.

The "Accelerated" communication speed may be 1.5x higher than "Fast" but this may not work for some computers or may not be reliable.


Keyboard shortcuts definition

Modifying keyboard shortcuts

Menu: Options -> Keyboard shortcuts...

Keyboard shortcut: Ctrl+K

This dialog can be used to modify existing keyboard shortcuts or to add shortcuts for actions which do not have a shortcut associated by default, e.g. "Program all but EEPROM".

Table of contents