PIC18F44K22: MCLR/RE3-Pin kann nicht als Eingang verwendet werden. Die MCU wird zurückgesetzt, wenn RE3 gedrückt gehalten wird

Ich versuche, den 4-Bit breiten PORTE auf einer PIC18F44K22-MCU zu verwenden. Dieser Port enthält den RE3/MCLR-Pin, der als Reset-Pin oder als Eingangspin konfiguriert werden kann, indem das MCLRE-Bit auf CONFIG3H gesetzt/gelöscht wird.

Unabhängig davon, welcher Wert auf dem MCLRE-Bit gesetzt ist, weigert sich die MCU, einen Befehl auszuführen, wenn der RE3/MCLR-Pin auf LOW gehalten wird. Wenn Sie den RB3 / MCLR-Pin einrichten, funktioniert die MCU wie erwartet (mit einem Eingangspin weniger).

Dies wurde mit einem Pickit 2-Programmierer und einem Multimeter getestet, wobei die MCU mit dem Programmierer selbst mit Strom versorgt wurde. Power-Pins auf der MCU sind mit 1pF-Kondensatoren und einem zusätzlichen 22uF-Kondensator am Board-Stromeingang entkoppelt.

BOR ist deaktiviert und das geladene Programm ist so einfach wie möglich (RB3 UP setzen). Getestet mit 5V und 3,2V

Ich habe gelesen, dass ESD gelegentlich Resets auslöst, aber in diesem Fall ist es ein niedriger Wert , der das Gerät auf Reset hält .


Lösung:
Damit MCLRE wirksam wird, muss das LVP-Bit deaktiviert werden. Im gpasm:

    CONFIG MCLRE  = INTMCLR
    CONFIG LVP    = OFF
Schon mal ein separates Netzteil probiert? Dieser Teil hat ein Problem, das unter bestimmten Bedingungen eine Menge Strom beim Start erfordert - die Errata ist schwach genug, dass sie zutreffen könnte.
1pF Entkopplungskappen? ... 100nF ist eher typisch. Vermutlich ein Tippfehler, denke ich.
Haben Sie "Single-Supply ICSP Programming" in Ihren Konfigurationsbits (CONFIG4L.LVP) deaktiviert?

Antworten (2)

Wenn Sie "Single-Supply ICSP Programming" in Ihren Konfigurationsbits (CONFIG4L.LVP) nicht deaktiviert haben, würde dies das beobachtete Verhalten erklären.

Abschnitt 24.9 des Datenblatts lautet: „Im Low-Voltage-ICSP-Modus ist MCLR immer aktiviert, unabhängig vom MCLRE-Bit, und der RE3-Pin kann nicht mehr als Allzweckeingang verwendet werden.“

Scheint jetzt zu funktionieren. Panzer!

Das riecht so, als würden Ihre Konfigurationsbiteinstellungen nicht wirklich in den Chip gelangen. Einige mögliche Gründe dafür:

  1. Sie haben MPLAB so konfiguriert, dass die Konfigurationsbits von der GUI statt von Ihrem Code kommen.

  2. Der Programmierer ist möglicherweise nicht so eingerichtet, dass er die Konfigurationsbits überschreibt. Überprüfen Sie den "Programmierbereich" (oder so ähnlich) im Setup.

  3. Sie müssen den Code erneut importieren. Ich habe selbst bemerkt, dass nach dem Ändern von Konfigurationsbits im Quellcode, dem Neuaufbau, dem erneuten Ausführen von MPLAB und dem Programmieren des Chips die neuen Konfigurationseinstellungen nicht in den Chip gelangen. Ich weiß nicht, ob dies ein Fehler oder ein Feature ist, aber die Lösung besteht darin, die HEX- oder COFF-Datei erneut zu IMPORTIEREN und dann neu zu programmieren.

Verwenden Sie die Konfigurationsbits-GUI in MPLAB, um zu sehen, wie die Konfigurationsbits gesetzt sind. Oder noch besser, programmieren Sie das Teil und überprüfen Sie dann die tatsächlichen Konfigurationsbits im Chip mit dem Debugger, um zu sehen, wie sie tatsächlich gesetzt sind.