Forum: Mikrocontroller und Digitale Elektronik PIC 16F876 hat falsche ID


von kh (Gast)


Lesenswert?

Hallo,

Und zwar habe ich heute einen PIC 16F876 bekommen, und wollte ihn gleich 
mal testen. Hab mein ICD2 angeschlossen, in MPLab 8.2 das Device 
ausgewählt, und connected. Lief alles gut. Hab testweiße mal einfach A0 
auf high geschalten. Doch als ich weiter programmierte, kam plötzlich 
beim übertragen auf den PIC folgendes:
Verify failed (MemType = Program, Address = 0x0, Expected Val = 0x3000, 
Val Read = 0x3FFF)

Hab ihn danach einfach mal abgesteckt, und wieder angesteckt. Aber ohne 
Erfolg. Nun kommt direkt beim connecten ein Fehler:
Invalid target device id (expected=0x4F, read=0x1FF)

Wenn ich ans ICD2 einen 18F4550 anschließe klappt alles, also kanns das 
ICD2 bzw. das Kabel nicht sein, auch deshalb weil er ja eine ID 
einliest, nur eben die falsche(oder?).
Wenn ich den Pic aus dem Sockel nehme und versuche zu connecten zeigt er 
mir  Invalid target device id (expected=0x4F, read=0x0). Stimmt auch, 
was soll er den lesen, wenn nichts eingesteckt ist, also in den Sockel.

Also an was könnte denn das nun liegen, dass der PIC auf einmal nicht 
mehr erkannt wird?

MfG Kurt H.

von K. J. (Gast)


Lesenswert?

ausersehen LVP aktiviert ? und dein ICD2 kann des net (wens nen nachbau 
ist)

Bugfix wehre den PGM auf gnd legen beim proggen

von kh (Gast)


Angehängte Dateien:

Lesenswert?

hm, unsere schule hat die boards bestellt, bist du dir sicher dass es 
das nicht kann?

lvp ist ja low voltage programming oder? kann das das icd2?

und das mit dem pgm pin auf masse legen funktioniert? auf welchen pin 
des 16f876 geht den dieser pgm pin? kann das sein dass es der pin 24 
ist? und diesen einfach auf gnd legen damit es funktioniert?
sry für solche fragen, aber ich kenn mich noch nicht wirklich gut mit 
dem icd bzw. pic's aus.

im anhang mal ein bild vom meinem icd2.

von K. J. (Gast)


Lesenswert?

Hi das kann ich dir net genau sagen es gibt ne ganze menge nachbauten am 
besten ausprobieren kaputtmachen kanste dabei nichts.

Aso sehen ob dein Brenner lvp kann tuste da dran ob der icsp 5pin hat 
oder 6 pin

PGM auf gnd und den des configwort löschen und beim nästen mal drauf 
achten des das LVP bit nicht gesetzt ist.

LVP = Low Voltage Programming.

mfg tb

von kh (Gast)


Lesenswert?

ok, also der icsp anschluss hat 5 pins. +5V, GND, PGD, PGC und MCLR.
Nun hab ich den Pin RB3, laut datenblatt PGm, auf GND gelegt, dann in 
mplab unter configure, configuration bits das lvp auf disabled 
eingestellt. muss ich das nun irgendwie auf den pic rauf spielen, oder 
macht er das gleich bei der änderung von den einstellungen.
und wie kann man das config word löschen?

von K. J. (Gast)


Lesenswert?

Hi, ka ob des bei mplab direkt geht sollte aber ansonsten erstell dir ne 
asm Datei mit folgenden Inhalt.
1
#include <p16f876.inc>
2
list p=16f876
3
4
    __CONFIG _WDT_OFF & _PWRTE_OFF & _INTOSC_OSC_NOCLKOUT & _MCLRE_OFF & _BOREN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF
5
6
end

die jagst durch mpasm und Flasht den die hex auf den Chip.

mfg tb

von kh (Gast)


Lesenswert?

ok, thx soweit.

also mplab kennt folgende sachen nicht:
Symbol not previously defined (_INTOSC_OSC_NOCLKOUT)
Symbol not previously defined (_MCLRE_OFF)
Symbol not previously defined (_BOREN_OFF)
Symbol not previously defined (_DATA_CP_OFF)

wenn ich diese weg gebe, kompiliert er es. aber wie krieg ich das hex 
file auf den pic? denn mit dem icd2 klappt das ja nicht, da er immer die 
falsche id liest...

von K. J. (Gast)


Lesenswert?

hm ich glaub mplab hat ne funktion zum ignorieren der meldung ansonsten 
mit piclab da gibs nen comandozeilen tool für windows.

die nicht erkanten flags sind nicht so wichtig kanste weglassen sind von 
gputilits deswegen kann des sein des die bei mpasm anders sind hab die 
nur wegen der Vollständigkeit drinne gelassen.

von kh (Gast)


Lesenswert?

hm, also in mplab finde ich die option nicht, und bei piclab kann man 
nur serielle schnittstellen auswählen aber kein usb...
wie könnte ich den das prog sonst auf den pic schmeißen?

von Severino R. (severino)


Lesenswert?

kh wrote:
> hm, also in mplab finde ich die option nicht

Configure -> Configuration bits...

von kh (Gast)


Lesenswert?

ok, das hatte ich auch schon gemacht, aber wie bekomme ich jetzt die 
einstellungen auf den pic. denn er wird ja nicht richtig erkannt.

von Severino R. (severino)


Lesenswert?

kh wrote:
> ok, das hatte ich auch schon gemacht, aber wie bekomme ich jetzt die
> einstellungen auf den pic. denn er wird ja nicht richtig erkannt.

Programmer -> Program
sollte jetzt funktionieren, sofern Du RB3 auf GND gesetzt hast.

von kh (Gast)


Lesenswert?

Ok, Ich habe RB3 auf GND gelegt, aber es kommt diese Meldung wenn ich 
programmieren will:
Verify failed (MemType = Config, Address = 0x2007, Expected Val = 
0x3F72, Val Read = 0x3FFF)

Und wenn ich RB3 auf GND gelegt habe und neu connecte, erkennt er immer 
noch nicht die richtige ID.

von kh (Gast)


Lesenswert?

push
keiner mehr eine idee?
Das mit RB3 auf Masse legen will irgendwie nicht funktionieren...

von morph1 (Gast)


Lesenswert?

der chip ist endweder defekt oder du hast nen fehler im layout.

ID = chiptyp, das is das erste was er versucht abzufragen, wenn er da ne 
falsche antwort kriegt (zb 0x00 bei gar keiner verbindung) dann meldet 
er das.

hilft das soweit?

von kh (Gast)


Lesenswert?

Er kriegt 0x1ff als ID. Also irgend etwas erkennt er. Als ich gestern 
versuchte dass erste mal den PGM Pin auf low zu legen, erkannte MPLab 
ihn als 16f876. Dann wollte ich etwas raufprogrammieren, aber er nicht 
mehr erkannt.
Also müsste die Schaltung stimmen...

von kh (Gast)


Lesenswert?

Und außerdem hab ich hier auch noch ein Demo Board mit einem 18F4550 und 
einen Steckplatz für den  16f876. Das Board funktioniert mit dem 4550 
ganz normal, aber beim 16f876 kommt wieder 0x1ff.
Der hat doch schon einmal funktioniert :(

von kh (Gast)


Lesenswert?

ok hab gerade etwas gefunden:
und zwar wenn ich in mplab auf programmer, settings, power gehe, dann 
habe ich beim 16f876 eine target vdd von 5,00V target vpp von 5,6V und 
MPLAB ICD2 Vpp 12,94V.
Ist das Target Vpp nicht viel zu wenig? Normal muss ich doch so 12-13V 
haben oder?

von morph1 (Gast)


Lesenswert?

sag rein aus interesse, stellst du auch den chiptypen im mplab um? also 
wenn du zwischen den beiden devices wechselst

von kh (Gast)


Lesenswert?

natürlich.
wenn ich einen 4550 anschließe, ist vpp 12,96V

von misterten (Gast)


Lesenswert?

Schonmal Baudrate heruntergesetzt?

Das Phänomen kommt mir bekannt vor. Ich habe hier zwei von Elektor 
nachgebaute ICDs. Das eine selbst geätzt, das andere professionell mit 
kleinen Layoutänderungen erstellen lassen. Ich brenne damit einen 16f876 
und einen 24f64.

Und jetzt kommt's: Das selbstgeätzte brennt beide, das andere nur den 
16f. Baudrate runter = auch der 24f wird richtig erkannt. 4k7 Pulldown 
durch 470 Ohm ersetzt = 24f wird auch mit hoher Baudrate erkannt, dafür 
aber der 16f nicht.

Wenn hierzu jemand 'ne Idee hat, Tipps werden gerne entgegen genommen.

von Hermann U. (Firma: www.pcb-devboards.de) (gera82)


Lesenswert?

Bei mir war das so, ich hab pic18LF2321 programmieren müssen.
Die PINS von Data und Clock waren bei mir für die Tasten belegt. Ich 
hatte da eine Hardware - Tastenentprelung aus Widerstand und 
Kondensator.
Ich bekamm auch immer flasch ID angezeigt, als ich dan die Kondensatoren 
in Data und Clock Leitungengen raus gelötete habe.
DAnn ging ohne Probleme.

von misterten (Gast)


Lesenswert?

Nun, meine Pins sind allein für das Bebrennen reserviert.

von EXE (gast) (Gast)


Lesenswert?

Hi,

offenbar kann man sich auch beim PIC „aussperren“ so wie das bei ATMEL 
möglich ist. Mein Effekt im Grunde der gleiche - nur noch etwas 
seltsamer.

Sei einem halben Jahr verwende ich ein 16F819 basierendes, 
selbstgebautes Eval Board um Programmteile zu testen. Nie gab’s Probleme 
obwohl auch ich mit MCLR als IO Pin und internen Oszillator arbeite. 
MPLAB (Ver. 8.00) bzw. der ICD2 meckerte zwar – macht es aber doch. An 
den Programmierleitungen hängt sonst nichts weiter.

Gestern erhielt ich nach dem progamieren dann plötzlich auch diese 
„invalid target device ID“ Meldung. Der Code (einschließlich des CONFIG 
Words) lief seit 2 Wochen problemlos. Und: Das Programm selbst läuft 
auch – ich sehe es da ich verschiedene Signale ausgebe.

Ich habe dann den PIC gewechselt und neu programmiert: Das ging genau 
ein mal. Der Code läuft wieder und nun komme ich wieder nicht mehr in 
den PIC – kann also auch das CONFIG Word nicht mehr rücksetzen.

Beim manchen ATMEL Programmern gab es mal eine Funktion: „Ignore false 
device ID“, die finde ich aber im MPLAB nicht.

Hat irgend eine Idee (ein Tool) wie man den PIC wieder in den 
„Werkszustand“ bekommt ???


Vielen Dank,
EXE

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.