PIC: Verify failed

Gast #3949306
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
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
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
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
Gast
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
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
Gast
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
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
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
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
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
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.
Gast
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
Gast

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?

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

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.