Programming
Debugging USB-to-UART Configuration Speed ICSP Cable Software for NSDSP Source Code SDK Supported DevicesNSDSP Programming
To program PIC device, NSDSP uses programming protocols outlined in Microchip Flash Programming Specifications. It uses 6-pin Microchip ICSP® connector.
LVP Programming
NSDSP uses low voltage programming - LVP. This method involves only logic level voltages on MCLR pin.
Most PIC microcontroller supprt LVP.
LVP is generally safer because it doesn't apply high voltage to the target PIC device, but unfortunately, it requires the MCLR pin (and also PGM pin on older PIC devices) to be dedicated to programming. When LVP is enabled, MCLR pin cannot be used as a regular input. This may be a problem if you cannot afford losing a pin. In such cases, an HVP programming must be used.
HVP Programming
High voltage programming (HVP) requires elevated voltages on MCLR (between 8 and 13 V).
NSDSP-2 can generate such voltages internally. Therefore, NSDSP-2 can do high voltage programming natively.
NSDSP-1 cannot generate high voltages internally. However, an HVP extension - NSHVX - may be used to transform NSDSP-1 into an HVP programmer. It is also possible to build custom HVP circuit to do HVP programming through NSDSP-1, however such circuit will require a source of high voltage.
HVP programming is optional for most PIC microcontrollers, however some of the PIC devices can only be programming through HVP. For such devices, either NSDSP-2 or NSDSP-1 with NSHVX (or an external HVP circuit) is necessary.
NSDSP can program nearly any PIC device, but there are exceptions. To see if your PIC microcontroller is supported, and whether it requires NSHVX, refer to the list of supported devices.
Programming operations
NSDSP can perform the following programming operations.
Operation | Description |
---|---|
Bulk Erase | Erases the entire content of the target device. This may not be available for some PIC devices running at lower voltages. |
Programming | Erases the entire content of the target device and then programs the specified data. This can be applied to protected devices. |
Verification | Verifies that the contents of the chip memory matches the specified data. NSDSP does not use checksums because they may be unreliable. It reads the entire contents back and verifies every byte. On most PIC devices, programming and verification can be executed simultaneously, which may lead to shorter programming times. |
Read | Reads the entire contents of the target PIC memory and saves it as a hex file. Read operation may fail if the device is code protected, programmed for debugging and for other similar reasons. In such cases, reading may be possible with nsread |
Other | Since NSDSP supports hundreds of diverse PIC devices, it is difficult to provide common interface to all devices. Therefore, operations provided by the standard NSDSP software are limited. If you want to perform programming operations not covered by the standard software, please contact us and we will build custom software to meet your needs. |
Code Protection
Many PIC devices support code protection. When a device is code protected it cannot be read. If you try to read it, the operaton may fail or it may read all zeros,
If PIC device is code protected, the only way to remove the protection is bulk erase. This operation erases everything. Therefore, all memory areas will be erased, even if software settings may have requested preservation of some areas such as EEPROM.
On many PIC devices, bulk erase is only possible at VDD voltages above certain level. If the voltage is below this level, it is impossible to remove protection from code protected device. Please refer to the device support list to see if this applies to your particular device.
Bulk Erase Threshold
To program chips, NSDSP uses bulk erase. Bulk erase is a fast and efficient way to fully erase chip memory and the only way to remove code protection. However, bulk erase requires a minimum voltage level, which depends on the PIC device, and is usually around 2.7V.
NSDSP assumes that the target voltage is above the bulk erase threshold and attempts to use bulk erase. This ensures the fast and most efficient programming. However, if the actual target voltage is below the bulk erase threshold, the programming will fail. Therefore, if you want to program PIC devices below their bulk erase threshold voltage you must specify the actual voltage.
When programming at voltages below bulk erase threashold, NSDSP uses special programming algorithms. However, some of the PIC devices cannot be fully programmed in such conditions. For example, most PIC16 devices do not allow erasing their configuration bits. Other PIC devices can be fully programmed, but since the bulk erase cannot be used, the programming may take longer.
Please refer to the device support list to find out if programming of your PIC device is affected by the voltage level.
Voltage
NSDSP cannot automatically detect the target voltage. Usually, it is not the problem. However, if you want to program your device at voltages below bulk erase threshold, you must specify the target voltage, so that NSDSP could use special algorithms which avoid bulk erase.
If NSDSP chip always works at the same voltage, as is the case with pre-built programmers such as NSDSP-1-3V3 or NSDSP-1-5V, the voltage setting may be stored inside the chip.
If the same NSDSP can be used with target devices running at different voltages, the voltage should be specified with programming software each time you perform the programming.
Variable speed
During programming, NSDSP can communicate with target PIC devices at signaling rates up to 6MHz. In most cases, this works, but if the ICSP cable is long, or there's parasitic capacitance, the high speed may not work. In this case, you can reduce the speed. This will allow programming, but will increase programming times.
The table below shows the list of available speeds:
Frequency | KBytes/sec |
---|---|
50kHz | 6 |
100kHz | 12 |
250kHz | 30 |
500kHz | 59 |
1MHz | 113 |
1.5MHz | 163 |
2MHz | 209 |
2.5MHz | 244 |
3MHz | 293 |
4MHz | 366 |
6MHz | 488 |
The speed is set by the programming software
Firmware
NSDSP does not require firmware updates to program different PIC devices. The same firmware is installed in all NSDSP and it works for all supported devices.
© 2007-2023 Northern Software Inc. All Rights Reserved.