PIC: Verify failed

Gast #3949306
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
Gast #3949380
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
Gast #3949445
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
Gast #3949534
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
#3949694
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
#3949749
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
Gast #3950499
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
Gast #3950830
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
#3951256
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.
Gast #7311434
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?

#7311744
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren