Forum: Mikrocontroller und Digitale Elektronik Hex aus PIC12F629 mit PICKit 3 auslesen


von Daniel (atvilar)



Lesenswert?

Hallo Genies des Internet!
Ich bin neu in dem Forum und auch in Sachen PIC Programmierung.

Mein Problem:
Ich habe eine kleine Platine für eine Modelleisenban (Weichendecoder 
Weich-Ei / Zwei) mit einem PIC12F629. Ich möchte gerne die Hex-Datei (?) 
des PICs auslesen, ein paar Parameter ändern (Hab ne Liste) und sie dann 
wieder auf den PIC spielen.

Dazu habe ich mir jetzt ein PICKit 3 gekauft und auch ein passendes 
Poard mit Zange:
https://www.amazon.de/dp/B09FK56625?psc=1&ref=ppx_yo2ov_dt_b_product_details
https://www.amazon.de/dp/B08HQB1VL8?psc=1&ref=ppx_yo2ov_dt_b_product_details
Als Programm wird MPLAB X IPE V6.00 auf Win 10 Pro verwendet. 
Anschschlossen an einem USB3.0

Ich habe alles wie auf den Photos gezeigt angeschlossen, roter Draht (1) 
der Klemme ist links oben beim Punkt des PICs.
Klemme Position 1 ist auf dem Programmiersockel auf Pos. 11, Hebel ist 
runter gedrückt.
Jumper am Programmiersockel:
J1: 2
J2 - J7: 2-3
PICkit3 Stecker des Pfeiles zeigt zu UPP/MCLR am Sockel.

Einstellungen im Programm:
Power: Power target circuit from PICkit 3
Voltage Level: 5.0
Programming Method: Apply Vdd before Vpp
Family: Mid-Range 8-bit MCUs (PIC10/12/1...
Device: PIC12F629
Tool: PICkit3 S.No: BUR....

Nach dem Druck auf "Connect" ca. 5 sec laden, dann die Warnung, dass 5V 
und nicht 3,3V eingestellt ist -> OK

Dann aber die Warnung:
Target Device ID (0x0) is an Invalid Device ID. Please check your 
connections to the Target Device.
-> OK
Target has invalid calibration data (0x00).

Könnt ihr mir sagen, was ich falsch mache?
vielen lieben Dank für eure Hilfe,
Atvilar

von Dirk F. (dirkf)


Lesenswert?

Evtl. ist der Pic gegen Auslesen geschützt worden....

von Daniel (atvilar)


Lesenswert?

Hi, Danke für die schnelle Antwort!
Denke nicht, da er selbst auf seiner Shopseite / Anleitung die Hex 
veröffentlicht hat und auch eben dazu anrät für gewisse 
Verhaltensänderungen die Hex selbst zu editieren. Sonst wär ich auch gar 
nicht auf die idee gekommen, das man so etwas überhaupt machen kann.

von Motopick (motopick)


Lesenswert?

Steck den PIC in ein Brotbrett und schliess den Brogrammer
nach Datenblatt an. Also:
GND - 8
VCC - 1
VPP/MCLR - 4
ICSPDAT - 7
ICSPCLK - 6

Kontrolliere die Versorgung des PIC.
Wenn du ein Oszi hast, teste ob ICSPDAT/ICSPCLK beim PIC "wackeln".
Das PICKIT2 mit seinem Standaloneutilty hatte einen Testmodus.
Da konnte man statisch an diesen Signalen togglen und ein
Multimeter reichte...

von Christian M. (christian_m280)


Lesenswert?

Am ehesten würde ich auf schlechte/falsche Kontaktierung tippen. Da sind 
so vielfältige Möglichkeiten zum verwechseln. Darum am besten:

Motopick schrieb:
> Steck den PIC in ein Brotbrett

Oder direkt Drähte/Litzen anlöten.

Gruss Chregu

von Harald K. (kirnbichler)


Lesenswert?

Daniel schrieb:
> Denke nicht, da er selbst auf seiner Shopseite / Anleitung die Hex
> veröffentlicht hat und auch eben dazu anrät für gewisse
> Verhaltensänderungen die Hex selbst zu editieren.

Dann musst Du sie ja gar nicht auslesen, sondern kannst die 
veröffentlichte Fassung verwenden.

von Christian M. (christian_m280)


Lesenswert?

Ja das dachte ich auch zuerst, da gibt es ja diesen HEX-Manipulator 
dazu. Ob der aber ein ausgelesenes HEX richtig interpretieren kann, 
ist eine andere Frage. Jedenfalls hat er ja gar keinen Zugriff auf den 
PIC, darum wird das Schreiben auch scheitern...

Gruss Chregu

von Andras H. (kyrk)


Lesenswert?

Wenn das nicht funktioniert, dann hol dir erstmal einen PIC in DIL 
Gehäuse aus dem Werk. Versuche erstmal den so kurz wie möglich an dem 
PICkit anzubinden und schaue ob das tut. Wenn ja dann weist du, dass 
dein Setup prinzipiell OK ist. Danach kannst du weiterdenken wie man am 
besten weiterhing vorgeht.

PICs In Circuit zu flashen funktioniert theoretisch, praktisch können da 
Probleme entstehen. Der PICkit leifert zwar Spannung, kann aber den PCB 
nicht immer komplett versorgen. Dann bricht die Spannung ein. Eventuell 
muss man dann von aussen helfen. Sonst gucke mal auch an den MCLR. Der 
kann noch Probleme machen. Ist da ein Kondensator da? Weg damit. Es gibt 
auch etliche MCLR beschaltungen, von Pull Ups bis zu Diode,Pullup mit 
Kondensator, oder auch watchdog (wird hier nicht der Fall sein). Wenn da 
ein Kondi hängt, wird der MCLAR zu langsam. Das passt dann nicht.

Norfallt PIC runterlöten, und alleine Programmieren.

von Daniel (atvilar)


Lesenswert?

Hallo!
So, ich bin jetzt einfach mal her gegangen und habe mit einem Multimeter 
die Kontakte nachgemessen. -> Verbindung PICkit3 - Sockel war richtig 
angesteckt, der Sockel ist richtig konfiguriert, Die Verbindung Sockel 
-> Klemme passt, nur die Klammer / PIC ist Schrott. Habt ihr eine 
Empfehlung für eine preisgünstige, aber vernünftige Klammer?

@ Motopick Danke für die Pinbelegung. Ich muss gestehen, dass ich von 
dem Manual des PIC derart eingeschüchtert war, dass ich nichtmal auf den 
Pinout geschaut habe.


Heute Abend löte ich mal Kabel an den PIC an und versuche es erneut. Vor 
dem auslöten des PIC habe ich Respekt, da ich keine Reflowplatte oder 
eine Feine Lötspitze habe. Gottseidank hat der Hersteller genau an den 
Pins (...) freie Lötkontakte gelassen...

@Harald:Nein, muss ich nicht. Aber ich möchte bevor ich was verhau den 
PIC auslesen, die Hex mit der Herstellerhex vergleichen um zu sehen, 
dass ich alles Richtig gemacht habe, dann verändern und dann brennen. 
Also reiner Lern- / Testprozess.

@ Christian: Ja, Der Hersteller liefert sogar einen Hex Maipulator, aber 
ohen Schrib / Lese fuktion. ALso nur: Hex, rein, manupulierter Hex raus. 
Wie du dann auf den PIC gebetet bekommst, ist deine Sache.

@Andreas: Ja, das wird meine letzte Chance werden. Mal schauen was der 
heutige Abend bringt.

von Daniel (atvilar)


Lesenswert?

Edit: Ich schaffe es nicht mal, an den Lötstellen Kabel anzulöten, ohne 
2 Beinchen des PICs kurzzuschließen. Darauß wird also momentan nix.

von Stephan S. (uxdx)


Angehängte Dateien:

Lesenswert?

Daniel schrieb:
> Edit: Ich schaffe es nicht mal, an den Lötstellen Kabel anzulöten, ohne
> 2 Beinchen des PICs kurzzuschließen. Darauß wird also momentan nix.

Wenn Du das geschafft hast, ist es am besten, Du verbindest den PIC mit 
kurzen Leitungen <15 cm wie im Bild beschrieben mit dem PICKIT.

von Daniel (atvilar)


Lesenswert?

So, PIC wurde ausgelötet und laut Schema von Stephan S. verkabelt. 
Identer Fehler:
Target Device ID (0x0) is an Invalid Device ID. Please check your
connections to the Target Device.
-> OK
Target has invalid calibration data (0x00).

Wirklich Danke für eure Hilfe!

von Stephan S. (uxdx)


Lesenswert?

Daniel schrieb:
> Target Device ID (0x0) is an Invalid Device ID. Please check your
> connections to the Target Device.

Das heisst nur dass die Kommunikation zwischen PICKIT und PIC nicht 
geht. Checke nochmal alle Verbindungen.

> Target has invalid calibration data (0x00).

Auch das deutet auf einen Verbindungsfehler hin.

von Xanthippos (xanthippos)


Lesenswert?

Wenn du das Hex-File herunterladen kannst, wäre der nächste Versuch - 
einen neuen PIC kaufen und das geänderte File auf den neuen brennen.

Vielleicht auch einen PIC im DIL Gehäuse mit bestellen. Da kannst du 
wenigstes sicher sein, die Lötstellen hauen hin.
https://www.sprut.de/electronic/pic/icsp/icsp.htm#dil8

von Stephan S. (uxdx)


Lesenswert?

Ist schon etwas her - bist Du denn weiter gekommen?

von Daniel (atvilar)


Lesenswert?

Hi,
Nein, ich hab mehr von den Platinchen gekauft und sie funktionieren, hab 
von denen auch Versucht mit der Klammer (ohne auslöten) auszulesen, mit 
den gleichen Errors.
Habs momentan verworfen, da im Moment andere Sachen wichtiger sind, und 
befass mich mit dem Problem vielleicht im Herbst wieder, wenn ich Platz 
habe die Modellbahn wieder aufzubauen.
Schade nur, hätte gehofft dass ich was neues Lern.

Danke der Nachfrage!

von Motopick (motopick)


Lesenswert?

> von den Platinchen gekauft

Iffenbar ist bei den "Platinchen" die Schaltung fuer die
Programmierung auf dem "Platinchen" etwas unguenstig geraten.

Du solltest dem Rat, einen oer mehrere 12F629 im DIL-Gehaeuse
zu kaufen, vielleicht einmal folgen.
Damit koenntest du dann naemlich sicherstellen, dass dein
Programmieradapter funktioniert, und dein Verstaendnis vom
Programmiervorgang als solchen, richtig ist. :)

Das geht auch ohne Eisenbahn.

von Johannes U. (kampfradler)


Lesenswert?

Daniel schrieb:

> Vor
> dem auslöten des PIC habe ich Respekt, da ich keine Reflowplatte oder
> eine Feine Lötspitze habe.

Nicht mit Tauben auf Spatzen schiessen :)
Feine Loetspitze brauchts da nicht, die ist sogar hinderlich.
'Reflowplatte'? Brauchts auch nicht.

Alles nicht so schwierig:
Kuperdraht einmal im Rechteck um den 8-Beiner herumlegen, so dass der 
Draht an den Beinchen an bzw besser aufliegt.
Dann erstmal den Draht rundum mit ordentlich Loetzinn an allen Beinchen 
anloeten.
Sobald das getan ist, verteilt der Draht die Hitze der Loetspitze, so 
dass ganz fix alle Beinchen simultan im Loetzinn schwimmen und der IC 
weggeschoben / mit der Pinzette abgehoben werden kann.

Anschauen kannste Dir diese Methode dort:
>https://www.youtube.com/watch?v=Vou2xlJkuoU

Hat er da wohl hauptsaechlich an THT-Bauteilen vorgefuehrt, funktioniert 
aber mit SMD genausogut (letztens mit ein paar SMD-NE555ern so gemacht, 
hat prima geklappt).

von Ottmar K. (wil1)


Lesenswert?

Hi
Wenn das Programmierkabel zu lang ist und/oder die Leitung PGC (Clock) 
dabei parallel zur Leitung PGD (Data) geführt ist, tritt genau auch 
dieser Fehler auf:

Daniel schrieb:
> Please check your connections to the Target Device.
> -> OK
> Target has invalid calibration data (0x00).

mfg Ottmar

von Stephan S. (uxdx)


Lesenswert?

Wie viele dieser Platinen möchtest Du denn umprogrammieren?

VG Stephan

Beitrag #7474865 wurde vom Autor gelöscht.
von Daniel (atvilar)


Lesenswert?

... 12F629 im DIL-Gehaeuse zu kaufen...

werd ich macven, wenn ich das nächstw mal was von conrad, rs und co 
brauche.

... Kuperdraht einmal im Rechteck ...

aha, das schaut spannend aus, muss mal Probieren. Danke für den Rat!

... Programmierkabel zu lang ist ...

Ca 20cm, denk also nicht. Parallel geführt auf alle Fälle, da alle Kabel 
vom Programmierer als Flachbandleiter wegführen. nichts einfacher wie 
die CLCK vom Band Abzutrennen

... Wie viele dieser Platinen ...

Eigentlich nur 2~5, werde in der Anlage über 100 verbauen. Es geht mir 
aber um was andres:
Diese Platinen werden nur von einem Kleinunternehmer hergestellt. Wenn 
dieser aufhört, dann sitze ich mit einer halbfertigen Anlage da und muss 
wieder alles umpudern. Außerdem schlägt er ja selbst vor, hat sogar eine 
Anleitung geschrieben, dass man bestimmte Parameter (Schaltzeit, 
Anschlussart, ...) im Programm ändern kann, falls es man mal brauchen 
sollte.

von Stephan S. (uxdx)


Lesenswert?

Daniel schrieb:
> ... Wie viele dieser Platinen ...
>
> Eigentlich nur 2~5, werde in der Anlage über 100 verbauen. Es geht mir
> aber um was andres:
> Diese Platinen werden nur von einem Kleinunternehmer hergestellt. Wenn
> dieser aufhört, dann sitze ich mit einer halbfertigen Anlage da und muss
> wieder alles umpudern. Außerdem schlägt er ja selbst vor, hat sogar eine
> Anleitung geschrieben, dass man bestimmte Parameter (Schaltzeit,
> Anschlussart, ...) im Programm ändern kann, falls es man mal brauchen
> sollte.

Dann solltest Du gleich dazu übergehen, eigene Platinen herzustellen, 
die einen ICSP-Anschluss haben. Das habe ich seit Jahren bei meinen PICs 
immer gemacht, 5 kleine Durchkontaktierugenn im 1,27-mm-Raster. Wenn Du 
Hilfe bei der Platinenerstellung brauchst, kann ich Dir gerne helfen, 
dann schick mir eine PN.

von Johannes U. (kampfradler)


Lesenswert?

Daniel schrieb:

> ... Kuperdraht einmal im Rechteck ...
>
> aha, das schaut spannend aus, muss mal Probieren. Danke für den Rat!

Ja, versuch das mal.

Hab mir frueher auch immer einen abgebrochen, wenn was auszuloeten war.
Sehr gerne endete das in Zerstoerung des betreffenden Bauteils oder der 
Platine...
Dann die Methode mit dem angeloeteten Draht gefunden...und nun ist der 
Horror vor dem Ausloeten von Bauteilen verschwunden.

Im Uebrigen:
Auch beim wieder Einloeten brauchst Du keine besonders feine Loetspitze, 
um Bruecken zu vermeiden.
Es reicht eine 'normal grosse' Hufeisenspitze, die mit ein wenig 
Loetzinn ueber die mit Flussmittel benetzten Pads/Beinchen gezogen wird.
Die Oberflaechenspannung des Zinns sorgt schon dafuer, dass es 
hinfliesst, wo es hin soll:
>https://www.youtube.com/watch?v=6PB0u8irn-4

von Motopick (motopick)


Lesenswert?

> nur von einem Kleinunternehmer hergestellt

Moeglicherweise programmiert er seine PICs vor dem Einloeten
in einem ZIF-Sockel. :)

Du solltest einmal nachfragen, ob und wie ICSP mit seinen
"Platinchen" ueberhaupt funktioniert. Mitunter muss man an
einem bestehenden Design einige Aenderungen, wie z.B. das
Einfuegen von Widerstaenden, vornehmen.

von Stephan S. (uxdx)


Lesenswert?

Laut Beschreibung ist ICSP möglich 
https://www.digital-bahn.de/bau_weiche/weichzwei.htm ganz unten. Ich 
hätte da noch eine Diode zwischen MCLR und +5V gemacht, es müsste aber 
auch ohne gehen.

von Ottmar K. (wil1)


Lesenswert?

Hi,

Empfohlene Länge des ICSP-Kabels ca. 10cm.
Siehe: http://www.sprut.de/electronic/pic/icsp/icsp.htm#kabel

mfG Ottmar

von Stephan S. (uxdx)


Angehängte Dateien:

Lesenswert?

Ottmar K. schrieb:
> Empfohlene Länge des ICSP-Kabels ca. 10cm.
> Siehe: http://www.sprut.de/electronic/pic/icsp/icsp.htm#kabel

ACK. Und es gehört eigentlich eine Diode zwischen R2 und MCLR oder VPP 
und R2

: Bearbeitet durch User
von Motopick (motopick)


Lesenswert?

> eine Diode zwischen R2 und MCLR oder VPP und R2

Man sollte die Spannung die an MCLR beim Programmieren anliegt,
vielleicht einfach einmal messen. Die kann von einer Ladungspumpe
erzeugt werden, da es keine Programmierspannung im eigentlichen
Sinne ist, sondern nur ein Schaltsignal.

Testweise koennte man auch R2 einfach mal entfernen.

von Stephan S. (uxdx)


Lesenswert?

Motopick schrieb:
> Testweise koennte man auch R2 einfach mal entfernen.

Das sicher nicht. Die Programmierspannung an MCLR beträgt beim 12F629 um 
die 12 Volt, das darf nicht an VDD ran. Deswegen gehört da eine Diode 
rein.

Ich gehe mal davon aus, dass der Autor von Weichzwei die PICs immer 
ausserhalb des PCB programmiert hat. Deswegen habe ich ja vorgeschlagen, 
dass der TE seine eigene Platine macht (oder von einem Mitforisten 
machen lässt), das ist ja ruckzuck erledigt. Ich biete mich dafür an. 
Die Diode und ein ICSP-Anschluss passen noch auf die Platine.

von Motopick (motopick)


Lesenswert?

> das darf nicht an VDD ran

Wenn R2 fehlt, ist MCLR vom Taster abgesehen, recht freistehend.
Wie sollte also "Programmierspannung" vpn MCLR an VDD kommen?

Man koennte R2 auch einfach groesser machen. Z.B. 220 k.
Ich habe kein PICKIT3, und kann daher nicht sagen, wie stromergiebig
das PICKIT3 bei seiner Programmierspannung ist.
Scheinbar reicht es ja wohl nicht. Oder es ist noch etwas anderes. :)

Schoenes WE!

von Stephan S. (uxdx)


Lesenswert?

Du kannst R2 weglassen, aber nur zum programmieren, denn sonst 
funktioniert die Schaltung nicht :)

Der oben zitierte sprut zeigt ja auch, dass da eine Diode hin muss 
https://www.sprut.de/electronic/pic/icsp/icsp.gif in einigen 
Microchip-Datenblättern steht das auch so, aber nicht überall.

: Bearbeitet durch User
von Stephan S. (uxdx)


Lesenswert?

Wie heisst es so schön: Versuch macht kluch

Ich habe mal einen PIC12F675 genommen (der ist zum 629 kompatibel, hat 
aber noch einen ADC, das ist hier aber irrelevant) und auf ein 
Breadboard gesteckt. Mein PICkit3 kann den sowohl nur mit einem 
22k-Widerstand zwischen VPP und VDD als auch mit 22k plus Diode 
programmieren und wieder fehlerfrei auslesen. Es geht wider die Theorie 
also auch ohne Diode.

D.h. das Problem des TE muss woanders liegen. Denkbar wäre noch, dass 
der 78L05 durch die 12 Volt gehimmelt wurde (die 78er mögen keine 
reverse voltage), das kann der TE aber leicht mit einem Multimeter 
ausschliessen.

: Bearbeitet durch User
Beitrag #7477014 wurde vom Autor gelöscht.
von Christian M. (christian_m280)


Lesenswert?

Stephan S. schrieb:
> nur mit einem 22k-Widerstand zwischen VPP und VDD

...und an VDD 5.7V - wenn Du Glück hast!

Gruss Chregu

von Stephan S. (uxdx)


Lesenswert?

Hallo Daniel, hast Du jetzt eine Lösung gefunden?

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.