Forum: Mikrocontroller und Digitale Elektronik PIC16F887 Programmierproblem


von Elolehrling (Gast)


Lesenswert?

Guten Morgen

Nach mehreren Arbeitswochen an meinem Developmentboard habe ich 
mittlerweile grosse Fortschritte gemacht. nun, folgende Situation:

Ich habe auf meinem Board einen PICKit2 Clone gebaut, über welchen ein 
PIC16F887 Programmiert werden soll. Mein selbstgemachtes PICKit erkennt 
MPLAB Perfekt, keine Fehlermeldungen.

Sobald ich das USB Kabel einstecke, leuchten auch meine dafür 
vorgesehenen LED.

Wenn ich dann MPLab öffne, und mein Controller Programmieren will, 
erhalte ich folgende Meldung:

Found PICkit 2 - Operating System Version 2.32.0
Target power detected ( 4.99V)
PKWarn0003: Unexpected device ID:  Please verify that a PIC16F887 is 
correctly installed in the application.  (Expected ID = 0x2080, ID Read 
= 0x0)
PICkit 2 Ready

Programming Target (06.07.2012  08:05:44)
PKWarn0003: Unexpected device ID:  Please verify that a PIC16F887 is 
correctly installed in the application.  (Expected ID = 0x2080, ID Read 
= 0x0)
Erasing Target
Programming Program Memory (0x0 - 0x37)
Programming Program Memory (0x60 - 0xF7)
Programming Program Memory (0x128 - 0x14F)
Programming Program Memory (0x190 - 0x1B7)
Programming Program Memory (0x1F0 - 0x237)
Programming Program Memory (0x258 - 0x267)
Programming Program Memory (0x2B8 - 0x2D7)
Programming Program Memory (0x320 - 0x377)
Programming Program Memory (0x5D8 - 0x5F7)
Programming Program Memory (0x708 - 0x77F)
Programming Program Memory (0x800 - 0x96F)
Verifying Program Memory (0x0 - 0x37)
PK2Error0027:  Failed verify (Address = 0x0 - Expected Value 0x2864 - 
Value Read 0x0)
PICkit 2 Ready

Gleich vorab: Ich kann mit einer 100 % Sicherheit sagen, dass ich den 
richtigen Controller ausgewählt habe! MCLR ist über einen 10k Widerstand 
mit VDD verbunden.

"Value Read 0x0" <- Habe an einigen Orten gelesen, dass das bedeuten 
soll, dass der PIC mit einer 99 % Wahrscheinlichkeit kaputt ist. Da ich 
aber gerade keinen anderen hier habe, frage ich lieber zuerst einmal 
nach.

Achja, bevor ichs vergesse. Habe es auchschon mit der PICKit V2.61 
Software probiert. Auch da erkennt es meinen PICKit 2 Clone, sobald ich 
dann bei Device Family PIC18F auswähle, steht "No Device detected".

Ich danke euch schon im voraus für eure Antworten! Falls ihr noch 
irgendwelche Informationen braucht, stehe ich zur Verfügung.

von K. J. (Gast)


Lesenswert?

Elolehrling schrieb:
> Guten Morgen

> "Value Read 0x0" <- Habe an einigen Orten gelesen, dass das bedeuten
> soll, dass der PIC mit einer 99 % Wahrscheinlichkeit kaputt ist. Da ich
> aber gerade keinen anderen hier habe, frage ich lieber zuerst einmal
> nach.
>

Nein das heist ganichts nur das der Chip nicht gelesen werden kann, 
haste ne Schaltung von deinem aufbau/Board betreibst den PIC beim 
Programmieren Selfpowerd oder über den Brenner ...

von Michael S. (rbs_phoenix)


Lesenswert?

Elolehrling schrieb:
> "Value Read 0x0" <- Habe an einigen Orten gelesen, dass das bedeuten
> soll, dass der PIC mit einer 99 % Wahrscheinlichkeit kaputt ist. Da ich
> aber gerade keinen anderen hier habe, frage ich lieber zuerst einmal
> nach.

Meiner Erfahrung nach heißt das zu 99%, dass der ICSP-Stecker nicht 
steckt oder falschrum oder Clock und Data vertauscht wurde. Sprich, dass 
die Verbindung nicht so besteht, wie sie erforderlich ist.
Ich hab bisher nur einen PIC geschrottet, und das nur, weil ich 
versehendlich einen Ausgang auf High gemacht habe, der mit Masse 
(versehentliche Lötbrücke) verbunden war -> Kurzschluss. Danach ging 
noch alles, bisauf diesen Pin.

Dinge, die ich ausprobieren würde:

- Nochmal genau prüfen, ob jede Leitung vom Clone auch dahin geht, wo 
sie soll (Also Vpp, Vss, Vdd, CLK, Data).

- Programmier den PIC..887 mit einem anderen, sicher funktionierenden 
Programmiergerät (womit du den PIC für den Clone gebrannt hast z.B.). 
Wenn das geht, ist der PIC heile und der Fehler ist in deinem Clone.

- Den PIC-Clone einzeln Testen, kein PIC dranhängen sondern ein 
Oszilloskop und gucken, ob die Pegel passen. Das Programm wird dir einen 
Fehler geben, weil eben kein PIC dran ist, die Pegel sollte man aber 
dennoch sehen.

von K. J. (Gast)


Lesenswert?

Nachtrag:

10k für den Pullup sind zu wenig nach apnote muss das 10x der innen 
Widerstand der Brennerschaltung sein beim ICD2 ca. 200k ich benutze um 
die 47k klappt mit allen Brennern/PICs die ich rumliegen habe ganz gut.

von Michael S. (rbs_phoenix)


Lesenswert?

@K. J.: Punkte werden nicht ohne Grund benutzt, um Sätze zu beenden. So 
muss man nicht 2-3mal lesen, bis man rafft, was du meinst. Der nächste 
Schritt wäre Groß-/Kleinschreibung ;)

von Elolehrling (Gast)


Lesenswert?

47k Pullup Widerstand? Verwundert mich jetzt ein wenig, da selbst auf 
den Datasheets von Microchip stehts 10k erwähnt werden...

Anschlüsse habe ich wie folgt:

PICKit 2 Clone: PIC18F2550

Von RA2(Pin 4)von PIC18F2559 auf RB7(Pin 40) von PIC16F887
Von RA3(Pin 5)von PIC18F2550 auf Rb6(Pin 39) von PIC16F887

Die beiden Verbindungen Stellen CLK & Data dar.

VSS(Ground) habe ich an den Pin's 12 & 31
VDD(+5V) habe ich an den Pin's 11 & 32, jeweils mit einem 100n 
Kondensator zwischen VDD und VSS

MCLR ist wie bereits erwähnt über einen 10k Pullup an 5V.

Ich habe eben Probiert den PIC16F887 mit einem PICKit 3 zu Programmieren 
(Damit habe ich auch meinen PICKit Clone Programmiert)
Nun, ich muss sagen mit meinem Clone funktioniert das ganze irgendwie 
besser. Folgende Fehlermeldung:


Programming...
The following memory regions failed to program correctly:
Program Memory
Address: 00000000 Expected Value: 00002864 Received Value: 00000000
Programming failed

Bin gerade etwas Ratlos. Bin allerdings gerade dabei wieder einmal die 
Datenblätter zu den Controllern zu lesen. Vielleicht weiss ja einer von 
euch noch irgenwas.

von Michael S. (rbs_phoenix)


Lesenswert?

Elolehrling schrieb:
> Von RA2(Pin 4)von PIC18F2559 auf RB7(Pin 40) von PIC16F887
> Von RA3(Pin 5)von PIC18F2550 auf Rb6(Pin 39) von PIC16F887

Gehören da nicht noch Widerstände zwischen? Wenn du den PIC später 
benutzen willst und als Ausgang nehmen willst, hast du Ausgang an 
Ausgang und das is nicht so gut. Hast du den PIC16F887 rausgenommen, als 
du das mit dem PICKIT3 getestet hast? Wenn nicht, wird es denke ich 
daran liegen.

von Elolehrling (Gast)


Lesenswert?

Sorry, vergessen dazu zu schrieben. Klar sind die Leitungen über einen 
Spannungsteiler mit dem Controller verbunden.

Und nein, ich habe ihn nicht herrausgenommen. Wäre auch schlecht 
möglich, da ich auch den PIC18F2550 direkt auf dem Board Programmiert 
habe. Bzw, die ganze Schaltung ist alles auf einem Board. Kann den PIC 
Also unmöglich herrausnehmen um das ganze zu probieren, da ich ja sonst 
keine andere möglichkeit habe die Verbindungen zwischen PICKit3 und dem 
Controller herzustellen... ausser ich würde mir die Mühe machen ein 
veroboard dafür zu fertigen.

Stellt sich mir nur die frage, ob sich diese Umstände Lohnen oder nicht.

von Elolehrling (Gast)


Lesenswert?

Nachtrag:

Sorry, vergessen zu schreiben. Die Eingänge Rb6 und Rb7 werden für das 
spätere Programmieren nicht verwendet, habe an die beiden PORTs 
absichtlich keine Peripherien angeschlossen. Hatte gneug freie PORT's um 
diese nicht benutzen zu müssen, also spielt das keine sonderlich grosse 
Rolle.

von Michael S. (rbs_phoenix)


Lesenswert?

Also ist der PIC16F887 nicht gesockelt bzw SMD!?
Naja.. Dann hätte ich gesagt, miss die Spannungen mal mit nem Oszi und 
guck, ob Vpp auch auf dem richtigen Pegel ist und relativ konstant ist. 
Wird ja meine ich mit einem Step-Up hochgesetzt.

von Elolehrling (Gast)


Lesenswert?

Doch, der PIC16F887 ist gesockelt. Nur was bringt es mir, den 
herrauszunehmen ?! Dann habe ich den PIC und ein PICKit 3 in meinen 
Händen, was soll ich dann damit? Verbindungen zwischen den beiden 
Geräten bestehen ja trotzdem keine.

von Michael S. (rbs_phoenix)


Lesenswert?

Dann nimm ihn raus, löte kurz 5 kabel dran und versuch ihn zu brennen. 
Somit hättest du die Fehlerquelle schon raus. Wenn er sich nicht brennen 
lässt ist der PIC wohl kaputt und mit deiner Schaltung ist evtl 
garnichts.

von John B. (johnbauer)


Lesenswert?

Elolehrling schrieb:
> MCLR ist wie bereits erwähnt über einen 10k Pullup an 5V.

Ist Dir bekannt, dass Du zum Programmieren eine Spannung von 10V-12V an 
Vpp (/MCLR) brauchst?
Ist diese beim Programmieren vorhanden?

Michael Skropski schrieb:
> guck, ob Vpp auch auf dem richtigen Pegel ist und relativ konstant ist

Gruß
John

von W.S. (Gast)


Lesenswert?

Elolehrling schrieb:
> Die Eingänge Rb6 und Rb7 werden für das
> spätere Programmieren nicht verwendet, habe an die beiden PORTs
> absichtlich keine Peripherien angeschlossen.

Du verstehst es, deine Leser zu verwirren. Im allgemeinen werden RB6+RB7 
zum Programmieren benutzt, also solltest du - wenn das bei deinem PIC 
ebenfalls so ist - selbige an den Steckverbinder zum Programmer führen.

MCLR wird mit ca. 10k gegen VCC gezogen und mit 1..2 nF gegen Masse 
abgeblockt, damit etwaige Einstreuungen nicht zum Reset führen. Der 
Programmer himself zerrt MCLR auf ca. 13 Volt zum Programmieren.

Bei manchen PIC's gibt es noch nen Low-Volt-Programmiermodus, der es 
erforderlich macht, daß man für's Pickit ein anderes Bein (oft RB3) 
dezent gegen Masse ziehen muß, 47 k reichen.

Das war's eigentlich schon.

W.S.

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.