Forum: Mikrocontroller und Digitale Elektronik PIC: Verify failed


von Gerhard (Gast)


Lesenswert?

Hallo µC-Experten,

eine grundsätzliche Frage zum Flashen mit folgendem Setup:

PICkit3, MPLAB IPE v2.10

Das flashen funktioniert und wird mit

Programming...
Programming/Verify complete
2015-01-03T11:43:12+0100- Programming complete
Pass Count: 16

bestätigt.

Führe ich aber "Verify" durch, kommt die Meldung

Verifying...
User Id Memory
Address: 8005c2 Expected Value: ffff Received Value: ffffff
Verify failed
2015-01-03T11:43:42+0100- Verify failed

Warum? Vorher bestätigt er Verify complete, danach Verify failed???

Läuft der PIC dennoch?

Wer weiß mehr?

Gruß Gerhard

von TK (Gast)


Lesenswert?

Hallo,
was ist den MPLAB IPE v2.1 (kenne ich nicht)?
Meistens kommt der Verify-Fehler, wenn Du:
- den Chip mit Code-Protection programmiert hast,
- den falschen Chip für das Lesen eingestellt hast,
- die Spannungsversorgung nicht stimme.

Ob der PIC läuft, läßt sich ja ganz einfach prüfen - nämlich 
Anschliessen und schauen, was der tut.
Wenn der Fehler NUR bei der ID liegt, dann ist das sowieso unkritisch.

Gruß
TK

von Gerhard (Gast)


Lesenswert?

Hallo TK,

danke für die Hinweise. MPLAB IPE v2.1 ist im Prinzip ein 
Stand-Alone-Programm zum flashen von PIC, welches mit MPLAB X IDE v2.10 
installiert wird. Damit musst du nicht das mächtige MPLAB X IDE v2.10 
starten.

Zu deinen Hinweisen kann ich jetzt schon mal was sagen:

Spannung:
Diese sollte stimmen. Ich hatte am Anfang eine Fehlermeldung, musste 
dazu von 5V auf <5V einstellen und dann funktionierte es auch. Also 
Probleme mit der Spannung schließe ich aus.

Chip-Auswahl:
Die Einstellungen des Chip für das Auslesen ist unverändert.

Protection:
Muss ich erst mal prüfen.

Wenn du schreibst

TK schrieb:
> Wenn der Fehler NUR bei der ID liegt

und ich die Meldung

Gerhard schrieb:
> User Id Memory
> Address: 8005c2 Expected Value: ffff Received Value: ffffff
> Verify failed

dann ist ja nur die Adresse ID betroffen und somit wäre das nach deine 
Aussage unkritisch.

Bzgl. Einbau: Ich flashe für einen Bekannten den PIC und habe seine 
Schaltung nicht zur Hand.

Gruß Gerhard

von Gerhard (Gast)


Lesenswert?

Hallo TK,

ich habe nochmal bzgl. Code-Protection geschaut. Wenn ich richtig liege? 
dann ist Code-Protection disabled,zumindest kann ich das so aus der 
Config Memory auslesen.

Aber wenn dem so ist, dass die Adresse User-ID unkritisch ist, dann 
schicke ich meinem Bekannten mal den PIC zu.

Gruß
Gerhard

von Gerhard (Gast)


Lesenswert?

Hallo,

kann es sein, dass ggf. ein Quarz angeschlossen werden muss, da die 
Zielschlatung einen Quarz enthält? Geht daher "Verify" nicht beim 
direkten flashen des Pic?

Gruß
Gerhard

von Dominic A. (neo123)


Lesenswert?

Hast du beim Verify das richtige Hex File noch geladen?

Gerhard schrieb:
> Hallo,
>
> kann es sein, dass ggf. ein Quarz angeschlossen werden muss, da die
> Zielschlatung einen Quarz enthält? Geht daher "Verify" nicht beim
> direkten flashen des Pic?
>
> Gruß
> Gerhard

Das sollte eigentlich keine Rolle spielen, da der PIC während dem 
Programmieren/Verifizieren immer mit dem internen Takt läuft

von Volker S. (vloki)


Lesenswert?

Was für ein PIC ist es denn ?
Sieht aus als erwartet das Programm 2 Byte und bekommt aber 3 ...

von Gerhard (Gast)


Lesenswert?

Hallo Dominic,

ja, der PIC ist unverändert. Ich kann mir auch nicht vorstellen, warum 
sich die Einstellung plötzlich ändern sollte. Ich nehme an du kennst die 
MPLAB IPE?

Gruß
Gerhard

von Dominic A. (neo123)


Lesenswert?

Gerhard schrieb:
> Ich nehme an du kennst die MPLAB IPE?
Auch nur vom ein bisschen herumspielen.

Benutzt du zufällig lange Programmierleitungen?

Was du noch probieren könntest wäre folgende Dinge:
*Den Programmiertakt reduzieren(Geht nicht bei allen Typen)
*Den Flashmemory anschauen ob da alles auf 0xFFFF steht oder Daten drin 
sind
*Direkt mit dem MPLAB versuchen

von TK (Gast)


Lesenswert?

Hallo Gerhard,

zwei Dinge machen mich stutzig:
1) Du mußt die Spannung von 5V auf <5V stellen, damit das Programmieren 
geht.
Benutzt Du dann einen 3V-Typ? (Um welchen Chip handelt es sich denn 
überhaupt?)
Wie sind die Einstellungen im MPLAB bzgl. Programmieren. Wird die 
Zielanwendung über das PICKit (also USB) versorgt, oder legst Du externe 
Versorgung an die Baugruppe?

2) Der Fehler besagt, dass
> User Id Memory
> Address: 8005c2 Expected Value: ffff Received Value: ffffff
> Verify failed
(also der received value hat eine andere Datenbreite als der expected 
value)
Dies läßt mich vermuten, dass der falsche Chip eingestellt ist, oder 
beim expected value die führenden Nullen unterdrückt werden.

Gruß
TK

von Hammerpreis (Gast)


Lesenswert?

Ich habe mittlerweile aufgegeben den Fehler zu suchen.

Die Pic's mx150/170/250 werden aber immer richtig gebrannt und laufen.

von Gerhard (Gast)


Lesenswert?

Hallo TK und Mitleser,

ich habe hier einen dsPIC30F2010 und ein PICkit3. Der PIC wird über das 
PICkit gespeist.

Bei MPLAP IPE wird ja ganz oben der zu programmierende PIC ausgewählt, 
dann der PICkit3 connected. Es ist somit ausgeschlossen, dass sich die 
Einstellung bzgl. der Auswahl des PIC ändert. Ich müsste ja dann schon 
vorsätzlich die PIC-Auswahl ändern.

Ich hatte vorher die empfohlene (recommended) Spannung 5V eingestellt. 
Da meckerte aber die IPE. Stellte dann auf 4,75V und dann war alles 
völlig ok. Meine Erfahrung ist auch, dass bzgl. Spannung die PIC sehr 
großzügig sind. Also ein 5V-Typhabe ich versuchsweise mal mit 4V und 
3,5V programmiert, ging auch.

Gruß
Gerhard

von Dieter W. (dds5)


Lesenswert?

Volker SchK schrieb:
> Sieht aus als erwartet das Programm 2 Byte und bekommt aber 3 ...

Ja, danach sieht es tatsächlich aus.
So was kann aber IMHO nur eine Macke in MPLAB IPE sein.

von Michael L. (michaelx)


Lesenswert?

Ein paar Möglichkeiten wurden ja schon genannt.

Weitere mögliche Ursachen für dein Problem können sein:

LVP-Modus beim Programmieren aktiviert, und der LVP-Pin ist offen bzw. 
wird nicht auf Low gezogen.

Externes MCLR abgeschaltet, und der Programmer verwendet aus 
irgendwelchen Gründen nicht die richtige Power-On-Sequenz.

von Dann (Gast)


Lesenswert?

Mein PIC-Progger macht Probleme, wenn ich die Config bits mit flashe.

Flashe ich alles ausgenommen der Config bits, ist Verify ok.

Deshalb flashe ich die config bits in einem Extraschritt.

von X4U (Gast)


Lesenswert?

Gerhard schrieb:
> PICkit3, MPLAB IPE v2.10

Aus dem Microchip Forum

"Sorry, the latest IPE version as of now is 2.25. You may use that."

von Gerhard (Gast)


Lesenswert?

X4U schrieb:
> "Sorry, the latest IPE version as of now is 2.25. You may use that."

Das stimmt leider nicht, die aktuelle Version ist 2.26. Auch diese 
Version bringt keine Verbesserung. Trotzdem Danke für den Hinweis.

Gerhard

von uu92 (Gast)


Lesenswert?

Hallo,

ich habe genau dieses Problem und wollte deswegen diesen Beitrag 
auffrischen.

MPLAB IPE v6.05
ICD 3 (Scheint noch kompatible mit neueren MPLAB IPEs zu sein)
dsPIC30F5011

für genaue Version-Info:
1
Connecting to MPLAB ICD 3...
2
3
Currently loaded firmware on ICD 3
4
Firmware Suite Version.....01.56.10
5
Firmware type..............dsPIC30F
6
Target voltage detected
7
Target device dsPIC30F5011 found.
8
Device Revision ID = 1005

Programming ist erfolgreich mit der folgender Meldung
1
The following memory area(s) will be programmed:
2
program memory: start address = 0x0, end address = 0x1bff
3
configuration memory
4
Programming/Verify complete
5
2023-01-10 09:42:33 +0100 - Programming complete

Ich gehe davon aus, dass kein Verify durchgeführt wird, denn nur 
"Programming complete". Wenn ich anschließend Verify durchführen will, 
dann bekomme ich den folgenden Fehler:
1
Verifying...
2
3
The following memory areas(s) will be verified:
4
program memory: start address = 0x0, end address = 0xafff
5
configuration memory
6
EEData memory
7
User Id Memory
8
9
User Id Memory
10
Address: 8005c2 Expected Value: ffff Received Value: ffffff
11
Verify failed

Dass MPLAB IPE eine 3-Byte Memory-Adresse erwartet, macht mir eigentlich 
Sorgen. Ist jemand schlauer mit diesen Fehlermeldungen? Mir scheine alle 
meiner Einstellungen richtig zu sein aber ich übersehe vllt. etwas. Wo 
soll ich denn Fehler suchen?

von Frank K. (fchk)


Lesenswert?

uu92 schrieb:

>
1
> Verifying...
2
> 
3
> The following memory areas(s) will be verified:
4
> program memory: start address = 0x0, end address = 0xafff
5
> configuration memory
6
> EEData memory
7
> User Id Memory
8
> 
9
> User Id Memory
10
> Address: 8005c2 Expected Value: ffff Received Value: ffffff
11
> Verify failed
12
>
>
> Dass MPLAB IPE eine 3-Byte Memory-Adresse erwartet, macht mir eigentlich
> Sorgen. Ist jemand schlauer mit diesen Fehlermeldungen? Mir scheine alle
> meiner Einstellungen richtig zu sein aber ich übersehe vllt. etwas. Wo
> soll ich denn Fehler suchen?
Daten, nicht Adresse. Der Flash-Adressraum im PIC24 und dsPIC ist 24 Bit 
breit, der Daten-Adressraum 16 Bit breit. In Deinem Fall ist das oberste 
Byte auf 0, soll aber ff sein.

Ich gehe mal davon aus, dass es irgend ein Problem mit Deinem Hex-File 
gibt. Ältere Tool-Versionen haben das oberste Byte in der User ID wohl 
ignoriert, aktuelle berücksichtigen es, und die Hardware hat es schon 
immer implementiert. Am besten compilierst Du Deinen Code mal ganz neu 
mit der aktuellen XC16-Version (oder besser nicht der ganz aktuellen 
2.00, sondern der 1.70) und probierst das so erzeugte Hex-File mal aus. 
Wenn Du den Quellcode nicht hast, hast Du mehr oder weniger verloren. 
Hex-Files per Hand im Editor zu reparieren geht zwar prinzipiell, macht 
aber keinen Spaß, zumal jede Zeile durch eine Prüfsumme gesichert ist.

fchk

von Teo D. (teoderix)


Lesenswert?

Könnte auch ein simples Verbindungsproblem sein.
Zeig doch mal den Aufbau.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.