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.
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 ...
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.
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.
@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 ;)
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.
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.
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.
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.
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.
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.
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.
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
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.