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.
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
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.
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...
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.
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...
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.
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.
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).
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.
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. :)
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.
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).
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:
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.
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.
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:
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.
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.
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.
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. :)
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.