Introduction

IC-Prog is a Windows based software to control a development programmer for PIC microcontrollers. To operate this software, a basic knowledge about electronics and Windows is necessary.

In order for this software to operate you have to attach a programmerProgrammer_hardware to your computer and set up the hardware & software appropriately. Please note, that because of differences in programmers, the software might not work on some combinations of programmer hardware and PC’s.

IC-Prog requires Windows 95, 98, NT, or 2000 and an internal or external math coprocessor to operate. All processors that are upwardly compatible with 486 DX and Pentiums should work.

IC-Prog is copyrighted but free software. It is OK to copy and distribute this software as long as it is not modified in any way, being charged for, or used for illegal purposes.

IC-Prog has been designed as a universal programming application for all programmers. Please contact the author if you have a programmer that you would like to be supported by IC-Prog.

The author will not take any responsibility for direct or indirect damage caused by this software. If you use this software, you use it completely at your own risk.Background


New features in this release

· “Through Pic Programming” is now supported.


IC-Prog Prototype Programmer

Programs : 12C508, 16C84, 16F84, PIC 16F877, 24C16, 24C32, 93C46, 90S1200, 59C11, 89C2051, 89S53, PIC, AVR , 80C51 etc.

This software package allows you to program all types of serial Programmable Integrated Circuits (PIC’s).

The following programmers are supported:

· JDM Programmer for all serial PIC's, 24Cxx, 93Cxx, 59Cxx and 25xxx

MicroWire and 4-Wire are supported. The JDM programmer is LudiPiPo compatible, so every LudiPipo compatible programmer can be used like the SI Programmer or the MK13 from Maxking Interfaces.

· SI Programmer from ARTEK for all serial PIC's, 24Cxx, 93Cxx, 59Cxx and 25xxx and AVR devices.

· MK13 Programmer from Maxking Interfaces for all serial PIC's.

· Conquest Programmer for all serial PIC's.

· TAFE Programmer to program parallel devices: 89C1051, 89C2051, 89C4051 etc.

· TATE ‘classic’ programmer for all serial PIC's, 24Cxx, 93Cxx, 59Cxx and 25xxx.

· Parallel TAIT programmer for 16C54/55/56/57 etc. Only reading of 16C54 included.

· Fun-card programmer for all AVR devices 90S1200, 90S8515 etc.

· SCHAER Programmer.

"Through PIC Programming" is supported for all Smartcards with PIC+24C16 - enable the Smartcard option in the Settings menu and choose the 24C16 as the device. Then use read and write as normal.

Both driving the programmer hardware by Direct I/O or the Windows API is supported (the use of the Windows API option is required when running Windows NT).

Click here to see all successfully verified devices

Commandline parameters may be supplied in order to use IC-Prog from within your own program or external compiler etc.

Included devices:

· PIC 16/17 Processors

· 24Cxx

· 93Cxx

· 27C256 (Normal Eprom only read with additional hardware)

· 89Sxxxx

· 90Cxxxx

· 59Cxx

· 25xxx (None implemented)

· Smartcards, 16F84+12C16, Goldwafer, and COPcards.


Release History

Version Release date

.9a 01/01/2000


Install programmer hardware

Plug the programmerProgrammer_hardware into a port (serial or parallel). Ensure that any switches on the programming device are configured to the manufacturers recommendations for the interface to be used.

Insert chip or Smartcard

PIC’s are sensitive to ESD (electrostatic discharge), make sure that you have discharged yourself and your environment before you take the chip away from its protective foam or packaging.

Make sure that all pins go straight into the programming socket before you carefully insert the chip. Chip pins are easily broken. If you are doing development work that calls for frequent reprogramming, it may be a good idea to use a carrier socket to take the wear and tear out of the PIC. Ensure that any switches on the programming device are configured to the manufacturers recommendations for the device to be programmed.


How to install PicProg

Configure IC-Prog

IC-Prog has been designed to work with a number of programming devices (see Verified Devices).

The programming device and a number of settings may be selected using the Settings/Hardware menu option.

Interface

IC-Prog may drive the programming device using direct port access, or via the Windows API (Application Programming Interface).

Use of the API option is only supported for the serial port. Use the Windows API under Windows NT.

Use of the parallel port is currently not supported for NT and Windows 2000. Use of the parallel port under NT or Windows 2000 will probably give a "Permission" error.

Communication

The following signals may be inverted

  • Data Out
  • Data In
  • Clock
  • MCLR
  • VCC
  • VPP

Process Priority

  • Normal
  • High
  • Realtime

Process Priority enables IC-Prog to provide more accurate programming timing pulses. However, setting the Process Priority to High may make windows run slowly due to the CPU dedicating more processor time to IC-Prog instead of other processes.


Open File

This function loads the code and data buffers from the file selected. IC-Prog supports both 8-bit and 16-bit Intel hex files, object files, and binary files.

Note that some assemblers might generate hexfiles with nonstandard file extensions. In such cases, you have to select the “All Files” filter to be able to find the file. If the hex file does not include fuse information defaults for the appropriate device will be used.


Save File As

The Save File As command will save the buffer contents to a hex file. The file will include program and data memory, configuration fuses and ID locations.


Open Data File

This function loads the data buffer from the file selected.


Fill Buffer

This function will fill the code buffer with a single value. The value may be defined decimal, hexadecimal, or ascii.


Fill Data Buffer

This function will fill the data buffer with a single value. The value may be defined decimal, hexadecimal, or ascii.


Read All

This command will read the chips data into memory. The fuses will be set from the chip. If the chip is copy protected (indicated by CP being ticked on the screen), you will end up with garbage values in the buffer.

When you read a code protected chip (CP) you may read different values. The 16C84 reads all 7F's. Other devices read 00's and AVR read 11,22,33, etc. It's not possible to detect that an AVR (90xxx) or 89xxx is code protected. You can only detect that by the values read. So the fuse bits for 90xxx are NOT reset when reading a device.


Program All

The Program All command will program the chip with the contents of the buffer. The buffer may have been filled through the Open File function or through the reading of an already programmed chip. This function also programs the chip with the configuration displayed on the screen.


Program Config

The Program Config command will program the chip with the configuration displayed on the screen.


Read Signature

The Read Signature command will read the signature held in the chip.

This function is not currently available.


Erase All

This command will erase the contents of the chip.


Blank Check

The Blank Check command will read the contents of the chip and confirm that it is blank.

n.b a blank device will read all FFFF's, when a device is filled with all 0000's it is NOT blank.


Verify

This command will verify that the contents of the chip correspond to the contents of buffer held in IC-Prog.

Verify currently only verifies the Code and the Data parts. The Configuration part is not verified at this release.


Command Line Options

Start IC-Prog with the following command line:

IC-Prog <FileName> Option1 Option2 etc.

<FileName> First command has to be a filename (*.hex)

Options:

-p Program device

-v Verify device

-i Mainform invisible

-q Quit after last command

-fxxxx Fuse word = xxxxh

Example: IC-Prog test1.hex -p -v -i -f3EEA -q

test1.hex will be loaded, and then programmed. You will still get the message 'Do you want to program?'.

Afterwards the device will be verified, you should get the message box 'Verified successfully'.

When IC-Prog has finished it automatically exits.


PIC Information

The best source of information on the PIC is the Internet. On the Internet you will be able to find FAQ:s (Frequently Asked Questions), specifications, application notes, assemblers, simulators, programs, experiment boards and much more.

Some links are detailed below. Should these links be outdated try using one of the search engines that are available on the Internet.

Home of IC-Prog:

IC-Prog Software

Email : bgijzen@wanadoo.nl

David Tait´s Pic Links:

http://www.man.ac.uk/~mbhstdj/piclinks.html

Microchip Technology:

http://www.microchip.com/

WinPhoenix:

http://www.thoic.com/decrypt/


Smartcards

Smartcards (Wafercards)

Original Smartcards were based upon a single PIC, newer cards are based upon at least one PIC and an Eeprom to provide additional memory.

A typically a Gold card contains a 16x84 + 24LC16.

The 16x84 PIC may either be a 16C84 or the newer 16F84.

The 16x84 is the processor, the 24LC16 is the Eeprom.

· The 26LC16 is a 16K bit (2K Byte) EeProm (256x8x8 bits).

· The 16x84 has 1024 bytes of code and 64 bytes of data area.

MultiMac II

The MultiMac card contains two circuits: A PIC microcontroller (16x84) and an Eeprom memory (24C16). The software originally written by Michael Stegen, is divided into two hexfiles, one containing the program running in the PIC controller, and one containing additional data, placed in the eeprom. These additional data includes the idents, keys and information used for decoding D2Mac channels.

Oscillator selection

XT Crystal oscillator mode (standard)

The full list is:

· LP Low power oscillator mode

· XT Crystal oscillator mode (standard)

· HS High Speed oscillator mode

· RC Resistor/Capacitor mode

WDT (Watchdog timer)

Always off

PWRT (Power on reset)

ON for 16C84

OFF for 16F84

The PWRT bit meaning is inverted for 16C84 vs 16F84 devices. Therefore if you declare a chip to be a 16C84 in IC-Prog and load a hex image (from a file or chip), then declare it to be a 16F84 and reload you will see that the PWRT status inverts.

RB6 vs RB7

RB6/RB7 identifies the pin of the PIC that is used to communicate to the Smartcard pad (MultiMac Gold Cards typically use RB7). Hex files for the PIC may come in two flavours (RB6, RB7, or both) it is important to select the correct Hex code to match the Smartcard.

Gold Smartcard (Wafer Card)

Single PIC Card Connections

Single PIC with EEProm Card Connections

Through PIC Programming

Direct programming of the Eeprom is not possible with some Smartcards as the Eeprom chip is not connected directly to the pads on the Smartcard. Programming the Eeprom through the PIC is used in this case. IC-Prog supports “Through PIC Programming” providing the programmer used has the capability to program Eeproms. If this is not the case a Phoenix or Smartmouse programmer will be required to program the Eeprom.


Succesfully programmed devices:

JDM Programmer

- 24C01, 24C02, 24C04, 24C08, 24C16

- 24C32, 24C64/65

- 59C11

- 93C46

- PIC 16C84, 16F84

- PIC 12C508, 12C508A

- PIC 16F877 (Only code part, data part not 100%)

Tafe Programmer

- AT89C2051

Tait Serial Programmer

- 24C16, 24C32, 24C64/65

- PIC 16C84

Fun-Carc Programmer

- AT90S1200

- AT90S8515

Please send an email to bgijzen@wanadoo.nl if you have programmed a device not on the list, or had an error with a device on the list.