Den in-system programmering ( In-System Programming eller ISP ) er en funksjon som gjør at elektroniske komponenter ( mikrokontrollere spesielt) å være (re) programmert når de er allerede på plass i systemelektronikk de må kjøre.
Dette eliminerer behovet for å programmere komponenten utenfor hele forsamlingen ved hjelp av en dedikert programmerer.
For produsenter av elektronisk utstyr er den viktigste fordelen med en slik teknikk å kunne kombinere programmerings- og testfasene i en enkelt, mens det først var nødvendig å gå gjennom en programmeringsfase før man selv kunne montere systemet. På denne måten kan produsenter programmere komponentene i sin egen produksjonslinje, og eliminere behovet for å kjøpe forhåndsprogrammerte komponenter. Produsenter av elektronisk utstyr kan også endre koden som skal sendes til den programmerbare komponenten, selv etter at produksjonsprosessen har startet.
Vanligvis har komponentene som tillater in-situ programmering en intern krets som gjør det mulig å generere de spesifikke programmeringsspenningene fra forsyningsspenningen. Det tillater også kommunikasjon med programmereren via en seriell lenke. De fleste ISP-programmerbare komponenter bruker en variant av JTAG- protokollen dedikert til programmering; dette gjør det således mulig å legge til rette for integrering av slike enheter med automatiserte testprosedyrer.
Andre komponenter bruker proprietære protokoller eller protokoller definert av eldre standarder. I systemer som er kompliserte nok til å kreve ekstra logikk, er det mulig å integrere et programmeringssystem styrt av JTAG for komponenter uten ( Flash-minne , mikrokontrollere ). Dette systemet lar en enkelt protokoll brukes til komponentprogrammering og testing.