Forum: Mikrocontroller und Digitale Elektronik konnte pic 16f84a 1x programmieren, jetzt gehts nimmer.


von adrianb (Gast)


Lesenswert?

hi
also ich hab nen pic16f84a den ich via icd2 programmiert habe... beim 
ersten mal war alles tip top, keine fehlermeldung nix. aber als ich dann 
das neue programm programmieren wollte kam die fehlermeldung:
ICDWarn0052: MPLAB ICD 2 cannot validate a target device. Please make 
sure that the target device is connected and properly powered. Select 
"OK" to continue, or "CANCEL" to abort
ich habe die leitungen überprüft sowie die spannungen und diese sind 
alle ok.. habe auch probiert zu löschen und blank read machen... jedoch 
nix klappt mehr :(

Connecting to MPLAB ICD 2
...Connected
Setting Vdd source to target
...Reading ICD Product ID
Running ICD Self Test
...Passed
MPLAB ICD 2 Ready
Erasing Target Device...
ICDWarn0052: MPLAB ICD 2 cannot validate a target device. Please make 
sure that the target device is connected and properly powered. Select 
"OK" to continue, or "CANCEL" to abort the operation
...Erase Succeeded
MPLAB ICD 2 Ready
Blank Checking...
ICDWarn0052: MPLAB ICD 2 cannot validate a target device. Please make 
sure that the target device is connected and properly powered. Select 
"OK" to continue, or "CANCEL" to abort the operation
...Program Memory
ICD0161: Verify failed (MemType = Program, Address = 0x1, Expected Val = 
0x3FFF, Val Read = 0x0)
...Device not blank
MPLAB ICD 2 Ready
Connecting to MPLAB ICD 2
...Connected
Setting Vdd source to target
...Reading ICD Product ID
Running ICD Self Test
...Passed
MPLAB ICD 2 Ready
Programming Target...
ICDWarn0052: MPLAB ICD 2 cannot validate a target device. Please make 
sure that the target device is connected and properly powered. Select 
"OK" to continue, or "CANCEL" to abort the operation
...Validating configuration fields
...Erasing Part
...Programming Program Memory (0x0 - 0xAF)
Verifying...
ICDWarn0052: MPLAB ICD 2 cannot validate a target device. Please make 
sure that the target device is connected and properly powered. Select 
"OK" to continue, or "CANCEL" to abort the operation
...Program Memory
ICD0161: Verify failed (MemType = Program, Address = 0x0, Expected Val = 
0x1683, Val Read = 0x3FFF)
ICD0275:  Programming failed.
MPLAB ICD 2 Ready
Erasing Target Device...
ICDWarn0052: MPLAB ICD 2 cannot validate a target device. Please make 
sure that the target device is connected and properly powered. Select 
"OK" to continue, or "CANCEL" to abort the operation
...Erase Succeeded
MPLAB ICD 2 Ready


hatte jemand schon das selbe prob?

von Severino R. (severino)


Lesenswert?

Programmierst Du den PIC in der Schaltung oder ausserhalb?

Stimmen die Einstellungen betr. Power (ICD2 oder Schaltung; ist der ICD2 
mit einem Netzteil versorgt)?

Falls der PIC einen LVP-Pin hat, versuch mal den auf low zu legen.

Vielleicht einen zweiten PIC versuchen.

Wenn sonst nichts hilft: Ev. ICD2 resetten, oder gar alles (PC etc.) neu 
starten.

Viel Glück

Severino

von adrianb (Gast)


Lesenswert?

programmiere in der schaltung... spannungen sind alle ok, verbindung 
auch! ich meine ich habe ja nix geändert hardware technisch nachdem der 
erste program erfolgreich war!!! habe jetzt auch das komplette system 
(pc, icd, target) neu gestartet jedoch bekomme ich immer wieder diese 
warnung

Connecting to MPLAB ICD 2
...Connected
Setting Vdd source to target
...Reading ICD Product ID
Running ICD Self Test
...Passed
MPLAB ICD 2 Ready
Programming Target...
ICDWarn0052: MPLAB ICD 2 cannot validate a target device. Please make
sure that the target device is connected and properly powered. Select
"OK" to continue, or "CANCEL" to abort the operation
...Validating configuration fields
...Erasing Part
...Programming Program Memory (0x0 - 0xAF)
Verifying...
ICDWarn0052: MPLAB ICD 2 cannot validate a target device. Please make
sure that the target device is connected and properly powered. Select
"OK" to continue, or "CANCEL" to abort the operation
...Program Memory
ICD0161: Verify failed (MemType = Program, Address = 0x0, Expected Val =
0x1683, Val Read = 0x3FFF)
ICD0275:  Programming failed.
MPLAB ICD 2 Ready


WIESO FUNKTIONIERTE ES BEIM ERSTEN MAL UND JETZT KOMMT IMMER DIESE 
SCH****... sorry langsam hab ich keine geduld mehr!!!!

von H. W. (digger72)


Lesenswert?

m.E. hat der 16F84A kein LVP.
Wie sieht denn die Beschaltung des Reset-Pin im Target-Board aus?
Falls der Pullup-R zu niederohmig, oder der Kondensator zu gross
ist, könnten die Vpp-Flanken zu flach sein und der
Pic schaltet nicht in den Programmiermodus.

Gruss
Digger

von Severino R. (severino)


Lesenswert?

H. W. wrote:
> m.E. hat der 16F84A kein LVP.
> Wie sieht denn die Beschaltung des Reset-Pin im Target-Board aus?
> Falls der Pullup-R zu niederohmig, oder der Kondensator zu gross
> ist, könnten die Vpp-Flanken zu flach sein und der
> Pic schaltet nicht in den Programmiermodus.
>
> Gruss
> Digger

Trotzdem bleibt die Frage, weshalb es das erste Mal geklappt hat.

@adrianb:
Nicht aufgeben! Am Schluss klappt es dann doch.

Hast Du einen zweiten PIC, den Du einfach einsetzen kannst (Fassung?).

Hast Du eine andere Schaltung (z.B. ein PICDEM Board von Microchip oder 
so), an der Du das korrekte Funktionieren des ICD2 prüfen kannst (man 
weiss ja nie...)
Oder versuch mal auf einem Steckbrett einen PIC direkt mit dem ICD2 zu 
verbinden (VDD, VSS, PGD, PGC, VPP).

Unwahrscheinlich, aber nicht unmöglich wären Potentialprobleme:
Ist der GND der Schaltung geerdet? An derselben Steckdose wie der PC mit 
dem ICD2?
Ich hatte mal ein ähnliches Problem, das verschwand, wenn ich den PC 
(Notebook) vom Netz trennte.

Severino

von H. W. (digger72)


Lesenswert?

>Trotzdem bleibt die Frage, weshalb es das erste Mal geklappt hat.

Vielleicht, weil CLK und DATA RB6/7 noch nicht initialisiert
und damit Eingänge sind.

Könnte auch an der externen Beschaltung von CLK und DATA liegen.
Zitat Programming specification: "The program/verify mode is entered by 
holding pins RB6 and RB7 low while raising MCLR pin from VIL to VIHH 
(high voltage)."

Gruss
Digger

von Severino R. (severino)


Lesenswert?

>
> Vielleicht, weil CLK und DATA RB6/7 noch nicht initialisiert
> und damit Eingänge sind.
>

Die sind bei jedem Reset ohnehin Eingänge. Und die Initialisierung durch 
das Anwenderprogramm geht bei einem Reset ohnehin verloren.

Severino

von FRAGENSTELLER (Gast)


Lesenswert?

kenn mich ja nicht so aus bei 'pics', aber hast du dir vielleicht mit 
deinem programmcode ein ei gelegt von wegen schreib-leseschutz?

von Severino R. (severino)


Lesenswert?

FRAGENSTELLER wrote:
> kenn mich ja nicht so aus bei 'pics', aber hast du dir vielleicht mit
> deinem programmcode ein ei gelegt von wegen schreib-leseschutz?

Ist ja nett, dass Du helfen willst, aber da Du dich gemäss Deiner 
eigenen Aussage nicht so gut auskennst mit PICs, bitte verwirre adrianb 
nicht noch mehr...
Ein Leseschutz für das Programm-Memory existiert zwar, der kann aber 
beim löschen des PICs ebenfalls gelöscht werden.

Severino

von Rudi996 (Gast)


Lesenswert?

Ich hatte auch die ICDWarn0052.
Programmierkabel von 1m auf 10cm gekürzt, jetzt tut es!

Viel Glück!

Ruedi.

von kampmeier (Gast)


Lesenswert?

Hallo, ich habe das selbe Problem wie Du aber bei mir hat es kein 
einziges mal funktioniert. ´Vielleicht könnt ihr mir ja helfen. Wenn ich 
den PIC ausserhalb der Schaltung, sprich also im Sockel der 
Programmierboards programmiere, sind die Pins für den Anschluss des 
Oszillators unbelegt, kann man den denn dann Programmieren? Eigentlich 
benötigt der doch auch einen Takt zu programmiert werden oder nicht?

Bin total neu auf dem Gebiet und bitte um Hilfe!


Vielleicht kann mir ja wer weiterhelfen! Dankeschön!

von holger (Gast)


Lesenswert?

>Programmierboards programmiere, sind die Pins für den Anschluss des
>Oszillators unbelegt, kann man den denn dann Programmieren? Eigentlich
>benötigt der doch auch einen Takt zu programmiert werden oder nicht?

Im Gegensatz zu AVRs brauchen PICs zum programmieren
keinen Takt an den OSC Pins.

von holger (Gast)


Lesenswert?

>Im Gegensatz zu AVRs brauchen PICs zum programmieren
>keinen Takt an den OSC Pins.

Bevor einer meckert ;) Das war schlecht ausgedrückt.
Beim programmieren brauchen PICs keinen Systemtakt
wie Int-RC, Quarz, externer Takt. Kommt alles
über die Programmierpins.

von juppi (Gast)


Lesenswert?

hallo
es gibt kein zugriff auf den pic.
Wie ich verstanden habe muß das erste programm noch im pic sein??
Funktioniert das programm. im pic.

Dies habe ich auch schon bei mehreren pics gehabt.
Warten auf die lösung des problems

MfG

von Oliver V. (busoni)


Lesenswert?

Ich benutze das PICkit 2 als Programmer und da sieht es so aus:

Wenn in der Konfiguration (erste Zeile im Programm) _MCLRE_OFF gesetzt 
ist, kann MPLAB den PIC beim nächsten Mal nicht mehr programmieren. Es 
geht aber mit der Brennsoftware, das beim PICkit noch mit dabei war. 
Damit kann ich den Chip löschen und ihn dann wieder vom MPLAB aus 
brennen (natürlich nicht ohne das Programm mit _MCLRE_ON neu kompiliert 
zu haben). Mir unverständlich, warum dessen Funktionalität (u.a. auch 
VDD und /MCLR separat schalten, die Spannung von 2,5 bis 5V manuell 
regeln, etc) nicht ins MPLAB integriert wurde. Bis ich das gemerkt hab, 
dachte ich, mehrere PICs zerstört zu haben..

Wenn das ICD 2 eine eigene Software hat, würd ichs damit mal probieren.

von holger (Gast)


Lesenswert?

@ juppi
>Warten auf die lösung des problems

Poste doch mal eine von deinen Schaltungen.
Probleme entstehen oft wenn die nicht ISP gerecht
ausgelegt sind. Ansonsten ist ein falsches Configurationword
oft die Wurzel allen Übels.

von Analog (Gast)


Lesenswert?

Die INTOSC&MCLR-Falle
Wichtig für Benutzer der Brenner0, AN589-Brenner und Q&D-Brenner:

Wenn ein Brenner auf einen PIC zugreifen will, dann schaltet er 
normalerweise seine 5V-Betriebsspannung ein, legt  MCLR auf Vss (um 
einen Reset auszulösen) und legt dann MCLR schlagartig auf Vpp (+12V), 
so daß der PIC nach dem Reset nicht dazu kommt, auch nur einen einzigen 
Befehl abzuarbeiten. Damit ist der PIC im Programmiermodus, und durch 
den Reset steht der interne Programcounter des PIC auf der Adresse 0x00. 
Dort kann man dann anfangen zu brennen.

Wenn bei einem PIC aber beim vorigen Brennen der interne Oszillator 
aktiviert wurde und MCLR zu einem I/O-Pin gemacht wurde, dann ignoriert 
der PIC das Vss-Signal an MCLR und beginnt mit der  Abarbeitung seines 
Programms, sobald die Betriebsspannung Vdd angelegt wird.. Beim dann 
folgenden Anlegen von Vpp an MCLR stoppt der PIC seine Arbeit, aber der 
Programcounter steht nicht mehr auf 0x00, und das anschließende Brennen 
eines neuen Programms erfolgt auf zufälligen Adressen des 
Programmspeichers.

Solche PICs lassen sich nur problemlos brennen, wenn zuerst  Vpp (12V) 
und danach Vdd (5V) angeschaltet wird. Das ist nicht mit  allen Brennern 
möglich. Die Brenner 1, 2, 3 und 5 können das  mit der Software PBrenner 
ab V3.4. (Ältere Versionen nur mit einigen Typen)


PIC18Fxxx/xxxx

Das gleiche Problem gilt im Prinzip auch für die PIC18F-Typen mit 
internem Oszillatorblock (nanoWatt). Auch hier läßt sich MCLR per Config 
zum Input-Port RE3 machen und gleichzeitig INTOSC oder INTOSCIO als 
Taktquelle einstellen. In den Datenblättern fand ich keine Lösung, 
insbesondere wird die Einschaltreihenfolge VDD->Vpp explizit verlangt.

Der Hersteller warnt davor, LVP (low voltage programming) zu erlauben, 
wenn MCLR zum I/O-Pin gemacht wird. Dann wäre es beim nächsten 
Programmieren nämlich nötig, das PGM-Pin (RB5 o.ä.) auf low zu legen, um 
den Programmiermode zu erreichen. Die meisten Programmiergeräte tun das 
aber nicht, da ihre Entwickler (auch ich) LVP für nicht notwendig 
erachten.

von juppi (Gast)


Lesenswert?

@holger (Gast)

K/P8048 von Velleman
das teil geht arbeite damit?!
programm lieg's nicht.

@Analog (Gast)

bei meinen erledigten pics ist der pic nicht mehr vohanden,
aber das alte programm läuft.


MfG

von kampmeier (Gast)


Lesenswert?

okay, alles klar, habe das problem gefunden. habe in der 
programmierumgebung den oszillator auf LP stehen gehabt, mit RC gehts!

Aber jetzt sagt mir das MPLAB, dass das Programmieren erfolgreich war, 
aber der PIC tut nix. Noch dazu entstehen 1000 errors wenn ich das 
projekt builde, auch wenn ich das programm builde. dabei ist dies ein 
beispielprogramm von www.sprut.de (ich wills programmieren ja erst 
lernen nur dazu muss der ICD2 laufen)

tralalalalala......


Aber danke für die anderen Tips!

von kampmeier (Gast)


Lesenswert?

Hallo, kann mir mal jemand von euch ein kleines beispielprogramm (am 
besten eine blinkende LED oder ein Lauflicht) für einen PIC16F84a 
zusenden? Es wäre super wenn mir jemand ein komplettes Projekt senden 
könnte, denn meine Linker Skript Datei ist wohl nicht die korrekte 
(16f84i.lkr)

Oder einfach nur die Linker script datei. ich freue mich über alles, 
denn ich wills zum laufen bekommen und lernen können......


DANKESCHÖN im Voraus!

von kampmeier (Gast)


Lesenswert?

alles klar, es läuft! macht euch wegen mir bitte keine weitere mühe!

Aber Danke für alles, das ist ein echt tolles Forum!

Ihr seid super!


MfG.: Kampmeier

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.