ICD3 + PIC + MPLAB: Die Zielgeräte-ID 0x0 stimmt nicht mit der erwarteten Geräte-ID überein

7

Wir haben ein Board mit einem Microchip PIC24HJ256GP610A entworfen . Wir haben erfolgreich einen ICD3 verwendet, um den PIC auf dem Explorer 16- Entwicklungsboard zu programmieren und zu debuggen . Wir glauben, dass wir die Designrichtlinien im Debugger-Benutzerhandbuch befolgt haben :

Geben Sie hier die Bildbeschreibung ein


Bearbeiten: Wir verwenden einen 4,6k Pullup-Widerstand zwischen MCLR und VDD.

Unsere PCEG / PGED-Schnittstelle sind die Pins 26/27 des PIC. Diese Leitungen sind ausschließlich mit dem Chip verbunden und werden für nichts anderes verwendet.


Wir versorgen unser Board extern mit Strom und der PIC ist an diesen Stromversorgungskreis angeschlossen (3,3 Volt, genügend Strom von dieser Quelle).

Bearbeiten: Wir verwenden einige Entkopplungskondensatoren auf unseren Versorgungsschienen (C2, C8, C9 und C16, C18):

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Wenn wir jedoch versuchen, eine Verbindung herzustellen und unser Programm auf den PIC hochzuladen, wird im Ausgabefenster von MPLAB X die folgende Meldung angezeigt :

Target detected
Target Device ID (0x0) does not match expected Device ID (0x77b0000).

Dies ist ein Auszug aus dem Layout unseres Boards:

Geben Sie hier die Bildbeschreibung ein

Kann jemand den Fehler sehen oder erklären, was schief gehen könnte?

Norbert
quelle
Hast du das herausgefunden?
Matt Young

Antworten:

3

Bearbeitet gemäß den aktualisierten Informationen.

0x0 bedeutet im Allgemeinen keine Kommunikation. Entweder ein schlechtes Gerät, schlechte Verbindungen auf dem ICSP oder Stromprobleme. Ich vertraue darauf, dass Ihre 3V3-Schiene vorerst funktioniert.

Ihr _MCLR-Widerstand und die Verwendung von ICSP-Port 1 sollten für den Debugger kein Problem darstellen.

Haben Sie eine ausreichende Entkopplung gemäß PIC24-Datenblatt? Entkopplungskondensatoren müssen so nahe am PIC24 installiert werden, wie es das Layout und die Pinbelegung zulassen:

Geben Sie hier die Bildbeschreibung ein

Sie können das für jeden sehen V.D.D. und V.S.S. Paar benötigen Sie eine 100nF Keramikkappe und eine 10 Mikrofarad Kappe bei V.C.EINP.. Was in Ihren Schaltplänen für die 3V3-Schiene angezeigt wird, scheint nicht ausreichend zu sein, und was noch wichtiger ist, Sie haben nichts anV.C.EINP. (was sehr schlecht ist.) Pro Seite 20 des Datenblattes:

Am VCAP-Pin ist ein Kondensator mit niedrigem ESR (<5 Ohm) erforderlich, mit dem die Ausgangsspannung des Spannungsreglers stabilisiert wird. Der VCAP-Pin darf nicht mit VDD verbunden sein und muss einen Kondensator zwischen 4,7 μF und 10 μF, 16 V, mit Masse verbunden haben. Der Typ kann Keramik oder Tantal sein. Weitere Informationen finden Sie in Abschnitt 24.0 „Elektrische Eigenschaften“.

Korrigieren Sie Ihre Entkopplung und lassen Sie uns wissen, was passiert.

Adam Lawrence
quelle
Bitte beachten Sie meine Änderungen, in denen ich auf Ihre Fragen verweise.
Norbert
3

Ich bin mit allem einverstanden, was @Madmanguruman gesagt hat. Hier sind einige weitere Dinge, die ich überprüfen würde.

1) Wie sicher sind Sie, dass der PIC24 richtig verlötet ist? Dies schließt alle Stifte ein, die eine Verbindung herstellen, keine kurzgeschlossen, die richtige Ausrichtung usw. Stellen Sie außerdem sicher, dass Ihr Programmierheader nicht invertiert ist (6-1 statt 1-6).

2) Können Sie PCEG / PGED mit einem Oszilloskop prüfen, um festzustellen, ob sie während der Programmierung hin und her wechseln? In diesem Fall können Sie Ihren Programmierer als Fehlerquelle entfernen. Wenn sie sich nicht ändern, kann es auch immer noch eine schlechte Verbindung auf Ihrem Board sein, die sie herunterzieht.

Matt
quelle
1

Setzen Sie eine 10μF. Kappe auf der V.reGStift (Stift 85). Der PIC24-Kern wird mit 1,8 V betrieben und ist intern geregelt. Diese Kappe ist erforderlich, damit das Teil funktioniert. Lesen Sie das Datenblatt.

Matt Young
quelle
0

Ich hatte den gleichen Fehlermeldungstyp, der sich als Software und nicht als Hardware herausstellte, wie die Fehlermeldung impliziert. Ich hatte Code kompiliert, der keine Fehler gab und korrekt in das Ziel geladen. Als ich die Baudrate in einer # Define-Berechnung für eine serielle Bit-Bang-Schnittstelle ohne Compilerfehler von 4800 Bit / s auf 1200 Bit / s änderte und versuchte, den Code über einen ICD3 in das Ziel zu laden, wurde die folgende Fehlermeldung angezeigt: „Zielgeräte-ID (0x2060 ) stimmt nicht mit der erwarteten Geräte-ID (0x2080) überein. ” Das Software-Design verwendet das vorzeichenlose 8-Bit-Timer-Register TMR0 zum Timing der seriellen Kommunikationsbitrate. Es stellte sich heraus, dass durch Ändern der Baudrate bei der Berechnung ein Wert über TMR0 generiert wurde, der beim Laden zu einer Fehlermeldung führte. Sobald ich den Prescaler für TMR0 eingestellt habe,

Ed Carr
quelle