There is no standard for in-system programming protocols for programming [[microcontroller]] devices. Almost all manufacturers of microcontrollers support ISP, but all have implemented their own protocols, which often differ even for differentvarious devices from the same manufacturer. Up to 4 pins may be required for implementing a [[JTAG]] standard interface. In general, modern protocols try to keep the number of pins used low, typically to 2 pins. Some ISP interfaces manage to achieve the same with just a single pin. Newer [[ATtiny]] microcontrollers with UPDI can even reuse that programming pin also as a [[general-purpose input/output]].<ref>{{Cite web |title=Unified Program and Debug Interface (UPDI) High-Voltage Activation Information - Developer Help |url=https://developerhelp.microchip.com/xwiki/bin/view/software-tools/programmers-and-debuggers/avr-updi-info/ |archive-url=https://web.archive.org/web/20241007021157/https://developerhelp.microchip.com/xwiki/bin/view/software-tools/programmers-and-debuggers/avr-updi-info/ |archive-date=2024-10-07 |access-date=2024-12-17 |website=developerhelp.microchip.com |quote=Shared UPDI pin. This implementation is generally used on devices with smaller packages. The UPDI pin can be re-configured into a GPIO or /RESET pin. In this case, the UPDI functionality is disabled, and a high-voltage source is required to re-enable it. Examples include tinyAVR 0-series, 1-series, and 2-series devices.}}</ref>
The primary advantage of in-system programming is that it allows manufacturers of electronic devices to integrate programming and testing into a single production phase, and save money, rather than requiring a separate programming stage prior to assembling the system. This may allow manufacturers to program the chips in their own system's production line instead of buying pre-programmed chips from a manufacturer or distributor, making it feasible to apply code or design changes in the middle of a production run. The other advantage is that production can always use the latest firmware, and new features as well as bug fixes can be implemented and put into production without the delay occurring when using pre-programmed microcontrollers.