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