Forum: Mikrocontroller und Digitale Elektronik MPLAB X und PICkit 3 - Plötzlich "failed to program device"


von Karsten (Gast)


Lesenswert?

Hallo,

ich bin relativ neu in der Mikrocontroller-Programmierung. Zum Einstieg 
habe ich mir das PICkit 3 und einige PIC16F505 angeschafft. Mein Ziel 
ist es mit Hilfe der PICs Beleuchtungssteuerungen für eine 
Modelleisenbahn zu bauen, was bisher auch schon bei komplexeren 
Blinkfolgen gut funktioniert hat.
Jetzt habe ich nur folgendes Problem:
Mitten im Programmieren und Testen (und wieder Programmieren usw.) 
meldet MPLAB X (v1.85):

*****************************************************

Connecting to MPLAB PICkit 3...
Firmware Suite Version.....01.28.92
Firmware type..............Baseline

Target detected

The following memory area(s) will be programmed:
program memory: start address = 0x0, end address = 0xb
configuration memory

Programming...
program memory
Address: 0 Expected Value: cdf Received Value: 0
Failed to program device

Das Problem hatte ich vor ein paar Tagen schon einmal, wo es sich mit 
dem Tauschen des PIC beheben ließ (habe mir vorsichtshalber gleich 5 
bestellt). Jetzt tut sich leider gar nichts mehr.
Ich programmiere mit einem selbstgebastelten Programmieradapter auf 
einer Experimetierplatine, was bisher immer gut funktioniert hat und 
dann plötzlich nicht mehr. Die Stromversorgung kommt direkt aus dem 
PICkit.

Hat jemand vielleicht schon einmal ein ähnliches Problem gehabt (und 
lösen können) oder eine Idee, was ich tun kann?

Ich danke allen, die sich die Zeit genommen haben, meinen Post zu lesen

Grüße

Karsten

von Jörn (Gast)


Lesenswert?

Versuch mal den PICkid3 upzudaten ( wasn Wort)
Das OS neu drauf
Grüße
Jörn

von Karsten (Gast)


Lesenswert?

Hallo Jörn,

danke für den Tipp!
Leider bin ich offensichtlich zu blöd dafür...
Trotz längerer Suche habe ich nicht herausgefunden, wie man das 
Betriebssystem des PICKit (ich gehe ja mal davon aus, dass du nicht 
Windows meintest).
Kann mir jemand bitte in ein paar Sätzen erklären, wie das mit dem 
Update geht, am liebsten mit einem Link, wo es das neue OS überhaupt 
gibt?
Ich habe es auf der Microchip-Seite leider nicht gefunden.

Ich habe es übrigens geschafft, einen der anderen PICs doch zu brennen, 
aber die "fehlerhaften(?)" wollen nicht. Kann es wirklich sein, dass die 
Dinger ohne Hardwareveränderung einfach zwischen zwei Programmierungen 
sterben?

Danke für eure Hilfe

Grüße
Karsten

von Rolf R. (ultra-low)


Lesenswert?

PICkit 3 ist sehr empfindlich auf jegliche parasitäre Kapazitäten, 
Interferenzen usw. Bei mir auf jeden Fall.
D.h. versuch die Leitungen möglichst kurz zu halten und möglichst nahe 
am Pic anzubringen. Hatte immer das Problem mit "Failed to program 
device". Einmal gings und dann doch nicht. Dann stellte ich fest dass es 
eine Rolle spielt wo ich die Leitungen auf dem Steckboard drauf steckte. 
Paar Reihen weiter von Pic weg und Verbindung war nicht möglich.

von Hollandse (Gast)


Lesenswert?

Update wird automatisch über mplab gemacht.

von Frank M. (frank_m35)


Lesenswert?

Ein PIC ist sehr robust und geht nicht so einfach kaputt. Es wird am 
Kabel bzw. der Verbindung liegen. Ich weiß nicht wie dein Aufbau genau 
ausschaut, aber hier wird beschrieben auf was zu achten ist:
http://www.sprut.de/electronic/pic/icsp/icsp.htm#kabel

von Karsten (Gast)


Lesenswert?

Ich habe mal ein Bild von meinem Aufbau angehängt und hoffe, das es so 
halbwegs erkennbar ist. Der blaue Widerstand unten ist ein 10k zwischen 
Clear und Plus. Ansonsten ist ja nicht viel Beschaltung dran, nur eine 
LED für einen "Hallo Welt"-Test.
Wenn ich eure Antworten richtig verstanden habe, ist mein Anschluss eher 
suboptimal. Habe ich Sprut richtig verstanden, dass ich zwischen Pin 4 
(ICSDAT, grün) und 5 (ICSPCLK, gelb) eine Masseleitung verlegen soll?
Ich kann mir die Realisierung gerade nicht richtig vorstellen, da sich 
die Kabel ziemlich direkt trennen und nur direkt am Stecker und am PIC 
zusammenkommen. Würde es sonst etwas bringen, die Leitungen mit Alufolie 
als Schirmung zu umwickeln und diese evtl. auf Masse zu legen?

Ansonsten bin ich froh, dass meine PICs anscheinend nicht defekt sind. 
Auch wenn es mich immer noch iritiert, dass mein Programmieradapter so 
lange einwandfrei funktioniert hat, dann plötzlich der Fehler kam und 
sich seitdem nicht mehr zur Mitarbeit zu bewegen lässt.

Nochmal kurze Frage zum Update: Kann man das irgendwie erzwingen, dass 
das Betriebssystem neu geladen wird oder ist das nicht notwendig?

Danke für eure Antworten!
Karsten

von Karsten (Gast)


Angehängte Dateien:

Lesenswert?

Scheint so, als hätte ich das mit dem Anhängen irgendwie nicht 
hinbekommen.
Vielleicht beim zweiten Versuch...?

von xxx (Gast)


Lesenswert?

Steck mal 100nF direkt an die Betriebsspannungsanschlüsse des PICs als 
Stützkondensator ...

von Patrick B. (p51d)


Lesenswert?

Karsten schrieb:
> Ansonsten bin ich froh, dass meine PICs anscheinend nicht defekt sind.
> Auch wenn es mich immer noch iritiert, dass mein Programmieradapter so
> lange einwandfrei funktioniert hat, dann plötzlich der Fehler kam und
> sich seitdem nicht mehr zur Mitarbeit zu bewegen lässt.

Zeig mal Schema, und Code. Klingt ev auch nach einem anderen Problem mit 
den Configs


Die Firmware kannst du manuell auswählen:
Project options->Pickit 3-> Firmware -> Häckchen raus und unten Pfad 
angeben.

von Karsten (Gast)


Lesenswert?

Hier erstmal der Code, was du mit Schema meintest, weiß ich leider 
nicht:


    LIST P=PIC16F505
#include<p16F505.inc>


 __CONFIG _OSC_IntRC_RB4EN & _WDT_OFF & _CP_OFF & _MCLRE_ON

  org 0


Start:
    movlw ~(1<<T0CS)
    option
    MOVLW 0h
    TRIS PORTC
    CLRF PORTC

    BSF PORTC,0

GOTO $

    END

Erzeugt beim Bauen keine Fehler. Ist es eigentlich normal, dass er 
manchmal "waiting for unfinished Jobs" anzeigt und dann nach Abbruch und 
Neustart ganz normal erstellt? Irgendwann stürzt dann meistens das 
Programm ab, weil zu viele make32-Prozesse aktiv sind...

Ok, das mit der Firmware habe ich jetzt auch gefunden, aber die 
aktuellste drauf zu haben dürfte ja nicht schaden? Oder eine alte 
runterladen, draufspielen und dann wieder mit der neuen überschreiben?
Falls das Sinn macht, wo gibts diese Firmwares?

von Frank M. (frank_m35)


Lesenswert?

Dem Vorschlag mit 0.1uF direkt am PIC schließe ich mich an. Kannst auch 
noch einen zweiten größeren (1-10uF) parallel dazu setzen.

Am einfachsten könntest du einmal die Kabel für Clock und Data stark 
kürzen und deren Anschlüsse auf dem Steckbrett so dicht wie möglich an 
den Pin des PICs legen.
ggf. auch einfach mal den PIC an eine andere Stelle im Steckbrett 
platzieren, vielleicht sind die Kontakte nicht mehr ideal.

Idealerweise verwendest du ein Flachbandkabel (bspw. ein altes HDD Kabel 
vom PC), wie eben im Link auch bei Beispielaufbauten abgebildet:
http://www.sprut.de/electronic/pic/icsp/icsp877.jpg

Dort kannst du dann jedes zweite Kabel mit Masse verbinden, sodass du 
mit einem 7-8 adrigem Kabel auskommen kannst. Erst kurz am PIC splittest 
du das Kabel dann auf.

von Michael S. (rbs_phoenix)


Lesenswert?

Also bei mir war ICSP noch nie so "zickig". Das, was er bisher als 
einziges nicht möchte, ist dass man Data und Clock vertauscht.
Ich habe einen Logicanalyzer, der mit 2 der abgebildeten Probes kommt:
http://dangerousprototypes.com/2010/04/17/logic-sniffer-probes-available-next-week/

Davon nehme ich einen, stecke es mit 2 gegeneinandergelöteten 
Steckleisten an das PICKIT3 und klemme die anderen Enden an die Pins. 
Nichts mit Masse zwischen drin, möglichst kurz usw. Hat immer alles 
geklappt.

Karsten schrieb:
> Hier erstmal der Code, was du mit Schema meintest, weiß ich leider
> nicht:

Schema ist Schematic -> Schaltplan. An dem Code sollte es eigentlich 
nicht liegen. Zumal es ja zuerst ging.

Ich könnte mir vorstellen, dass es an der Firmware liegt oder ggf an 
einer Kontaktunterbrechung (also andere Kabel nehmen und PIC woanders 
reinstecken).

Das täuscht bestimmt nur, aber es sieht so aus, als wäre der PIC 1 
Raster zuweit links.

von Karsten (Gast)


Lesenswert?

Danke für die Tipps, ich werde mich morgen mal auf Kondensatorensuche 
machen und auch den PIC neu platzieren.
Zum Schaltplan gibt es nicht viel zu sagen, an Pin 10 (Port C,0) liegt 
die Anode einer LED, die dann über einen Widerstand zurück auf Masse 
geht. Ansonsten sind nur die Programmierleitungen angeschlossen, die 
Spannungsversorgung läuft über das PIC Kit.
Der PIC sitzt übrigens an der richtigen Position.

An einer Quelle für eine neuere/andere Firmware bin ich nach wie vor 
interessiert. Anscheinend stelle ich mich zu doof an.
Gibt es eigentlich einen Weg zweifelsfrei festzustellen, ob der PIC 
kaputt ist, ohne das Kit zu nutzen?

von Michael S. (rbs_phoenix)


Lesenswert?

Also wie gesagt, ich nutze den Stand-Alone-Programmer:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en538340&redirects=pickit3
unten unter "PICkit3 Programmer Application and Scripting Tool v3.10" zu 
finden.

Dort gibt es einmal die Installation des Teils und auch eine Firmware 
für das PICKIT. Wenn du die Software installiert hast, müsste es da 
unter dem Menü Tools sowas wie "Download OS" "Download Firmware" oder 
sowas stehen. Damit kannst du eine neue Firmware aufs PICKIT bringen. 
Dies, soweit notwendig, macht das Programm aber auch von alleine, wenn 
man versucht zu flashen. Auch wenn es nicht schadet, die Firmware 
aktuell zu halten, bezweifle ich, dass es daran liegt. Du hast nicht 
zufällig noch einen 2. oder einen anderen PIC, mit dem man einfach mal 
das PICKIT testen kann?

Karsten schrieb:
> Gibt es eigentlich einen Weg zweifelsfrei festzustellen, ob der PIC
> kaputt ist, ohne das Kit zu nutzen?
Man kann ein anderes PICKIT3, PICKIT2, ...., Selbstbaubrenner usw 
benutzen. Dieser Prüft aber nur, ob der Speicher so aussieht, wie er 
soll. Wenn ein funktionierendes Programm auf dem PIC ist, kann man 
gucken, ob das funktioniert. Aber das testet eben nur das, was genutzt 
wird. Wenn ein 8-LED Lauflicht als Programm drauf ist mit internem 
Oscillator und nichts weiter, weiß man nur dass die 8 AUSGÄNGE und der 
interne Oscillator funktioniert und dass der Speicherbereich, der 
genutzt wird, in Ordnung ist. Es kann trotzdem ein anderer Pin den Geist 
aufgegeben haben, die Pins, wo die LEDs dran hängen, könnten evtl als 
Ausgang gehen, als Eingang aber nicht mehr (hatte ich schonmal, wohl 
Eingangsstufe verbrutzelt), der ADC könnte durch kleine Überspannung 
schaden nehmen, ....
Also eine Methode, um ZWEIFELSFREI und ALLES zu testen, ist mir nicht 
bekannt. Höchstens ein Programm schreiben, dass den kompletten ROM und 
RAM (und ggf EEPROM), sowie alle Peripherie vollständig benutzt..

von Jörn (Gast)


Lesenswert?

Karsten schrieb:
> An einer Quelle für eine neuere/andere Firmware bin ich nach wie vor
> interessiert. Anscheinend stelle ich mich zu doof an.

Mach es wie von Michael beschrieben, dann läuft das schon :-)
Grüße
Jörn

von Jörn (Gast)


Lesenswert?

UUUnd ??
Schon weiter gekommen ??
Grüße
Jörn

von Karsten (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

zuerst möchte ich mich dafür entschuldigen, dass ich so lange nichts 
geschrieben habe. Ich hatte die letzten Wochen wenig Zeit und da es sich 
nur um ein Hobbyprojekt handelte, konnte ich dieses beliebig 
aufschieben.

Heute hatte ich dann wieder mehr Zeit und konnte mich mit meinem PICKit 
befassen.
Es ist mir fast peinlich, das zu schreiben, aber das Kürzen der 
Leitungen und ein 100nF Kondensator an der Eingangsspannung haben schon 
ausgereicht. Ich konnte alle meine PIC 16F505 (andere habe ich nicht) 
programmieren, auch die, die ich schon als defekt beiseite gelegt hatte.
Das Problem ist hiermit also behoben und ich bin eine Erfahrung reicher.

Danke euch allen!

Karsten

von Torsten S. (torstensc)


Lesenswert?

Du kannst zum Programmieren auch den 10k Widerstand rausnehmen. Den 
brauchst du da nicht. Ich hatte dadurch schon den Fehler (PIC war 
allerdings schon in der Schaltung) das das PicKit3 den MCLR nicht 
schnell genug in den Programmiermodus gezogen hat und der Pic vorher 
schon anfing sein Programm abzuarbeiten. Dadurch kam es zu solchen 
komischen Fehlern. Ich habe dann den Widerstand auf 20k vergrößert 
(irgendwo im Netz gefunden) und seit dem läuft alles prima.

Torsten

von Master S. (snowman)


Lesenswert?

ich kann leider nicht alles durchlesen. ich hatte mit dem ICD3 auch 
pobleme bei den PIC24 und PIC32, die beim brennen schneller getaktet 
werden. bei meinen programmierleitungen (ca. 40cm!) war folgendes 
problem: ich hatte zu jeder leitung parallel eine GND-leitung, die ich 
beim ICD als auch auf dem demoboard mit GND verbindete. die Lösung lag 
darin, dass ich diese GND-leitungen nur(!) beim ICD3 anschloss und auf 
dem demoboard, nicht anschloss (ausser natürlich der "offiziellen" 
GND-leitung)

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.