Warum sind einige ICs im Schaltkreis programmierbar, andere jedoch nicht?

Warum sind einige ICs programmierbar, während sie noch in einem System / einer Schaltung verbunden sind, andere jedoch nicht? Was ist der entscheidende Faktor dafür, ob ein Chip kann oder nicht?

Diese Frage ergibt sich aus meiner Recherche zu ICSP-Headern und insbesondere aus einer Aussage, dass „in den meisten Fällen die MCU nicht einmal zuerst aus ihrer Schaltung entfernt werden muss [um über einen ICSP-Header programmiert zu werden]“.

Quelle

Bearbeiten: Dies bezieht sich auf AVR ISP/ISCP.

Ich musste die MCU nie aus dem System entfernen, wenn ich über ICSP oder über Tx/Rx-Pins programmierte; Ich persönlich habe nicht geübt, die MCU vor dem Programmieren aus dem System zu entfernen.
Wenn Sie beispielsweise den RX-Pin mit Masse verbinden, wird es schwierig, ihn im Schaltkreis zu programmieren.

Antworten (2)

Kommt auf die Schaltung an. Wenn die ISP-Pins nicht ausgebrochen oder zugänglich sind, müssen Sie den Chip entfernen. Wenn die ISP-Pins, im Wesentlichen SPI, für etwas verwendet werden, das die Programmierung durcheinander bringt, muss der Chip entfernt werden. Wenn die ISP-Pins als GPIO verwendet und hoch oder niedrig gebunden werden, könnte dies die Programmierung durcheinander bringen.

Wenn Sie irgendwie eine Schaltung durcheinander gebracht und einen ISP-Pin an vcc / Masse gebunden haben, müsste der Chip sicherlich entfernt werden.

Wenn Sie eine Sicherung vermasseln, die der Niederspannungs-ISP nicht reparieren kann, müssen Sie auf den Hochspannungs-Programmiermodus zurückgreifen, der bei 12 V einige Schaltkreise zerstören könnte. Sie sollten den Chip entfernen.

Der ISP erfordert, dass der Ziel-AVR-Chip mindestens viermal schneller läuft als die ISP-Uhr. Ist dies nicht der Fall, kann der ISP nicht verwendet werden.

In den PIC-Datenblättern wird die Verwendung eines Widerstands von 10 k? vorgeschlagen, dann kann der ISP den Widerstand "übersteuern".
@Spoon, ein Reihen- oder Pull-Up / Down-Widerstand, aber direkte Verbindungen zu vcc oder gnd können nicht überschrieben werden.
Ja, das wollte ich damit sagen, aber vermasselt.

Einige Chips verwenden zum Programmieren Spannungen außerhalb der normalen Betriebsparameter, entweder weil die Programmierschaltung höhere Spannungen als beim normalen Betrieb benötigt oder weil ein solches Design die Möglichkeit vermeidet, dass ein Teil versehentlich während des Betriebs in den Programmiermodus wechselt. Ein solches Design kann die In-Circuit-Programmierung erschweren.

Einige Chips erfordern die Verwendung vieler Pins zum Programmieren. Um beispielsweise einen 18-poligen PIC 16C54 zu programmieren, müssen VDD und VSS (offensichtlich) verwendet werden, MCLR, um den Programmiermodus zu aktivieren (auf 12 Volt zu bringen), alle 12 E / A-Pins, um Daten einzugeben, der RTCC-Pin, um als zu fungieren ein Lese-/Schreib-Strobe, der Takteingang zum Vorrücken von Adressen. Der einzige Pin, der nicht zum Programmieren verwendet wird, ist der Taktausgang. Das Programmieren eines solchen Geräts im Schaltkreis würde im Allgemeinen das Trennen so vieler seiner Pins von anderen Funktionen erfordern, dass sich der Aufwand im Allgemeinen nicht lohnt.

Ein Gerät, das In-Circuit-Programmierung unterstützt, erfordert im Allgemeinen zumindest, dass es eine Möglichkeit zum Isolieren eines internen programmierbaren Speichers von jeder Schaltung enthält, die normalerweise versuchen würde, ihn zu verwenden. Dies muss nicht übermäßig kompliziert sein, kann aber bei Geräten schwierig sein, die versuchen, während des normalen Betriebs so schnell wie möglich zu sein. In etwas wie dem PICC 16C54 benötigte der Codespeicher keine spezielle Adressierungsschaltung zum Programmieren; Wenn MCLR stattdessen auf 12 Volt erhöht wurde, zwang dies den Prozessor effektiv, NOP-Befehle auszuführen, und so konnte sein Programmzähler zum Liefern von Adressen verwendet werden. Ein schaltbarer bidirektionaler Pfad musste zwischen den E/A-Pins und den Codespeicher-Datenleitungen hinzugefügt werden, aber das müsste die normalen Pfade dieser Signale nicht deaktivieren (da die E/A-Pins standardmäßig schwebend sind, und das "Force NOP"-Verhalten (das auch von Skip-Befehlen verwendet wird) bedeutete, dass jeder Code, der am Befehls-Latch ankommt, ignoriert würde. Das Zulassen von In-Circuit-Programmierung würde erfordern, dass der Programmiermodus die Funktionalität von mehr Schaltungen beeinflusst.