Forum: Mikrocontroller und Digitale Elektronik PIC16 and ICD2 Programmier-Probs


von giggi (Gast)


Lesenswert?

Hallo,

irgendwie bin ich zu blöd. Versuche gerade zum erstenmal PIC16 zu 
programmieren komme aber nicht weit.
Prob ist dass er mir im MPLAB sagt dass mein Target nicht angeschlossen 
ist, habe aber alles richtig gemacht. Zudem weiss ich nicht so ganz 
genau wie ich mit ICD2 ein Hex-File programmieren kann in den Flash.
Kann mir vielleicht jemand helfen?
Vielen Dank!

von giggi (Gast)


Lesenswert?

Wenn ich connecten möchte sagt er mir "invalis device id", und ich weiss 
nicht warum.

von Zwirbeljupp (Gast)


Lesenswert?

> Wenn ich connecten möchte sagt er mir "invalis device id", und ich weiss
> nicht warum.
...weil
a) ein anderer PIC in der Schaltung steckt als von MPLAB erwartet (kann 
man in MPLAB unter "Configure->Select Device..." prüfen und einstellen)
...oder
b) der PIC aus irgendeinem Grund gar nicht erkannt wird (in diesem Fall 
wird als device ID 0x0000 zurückgegeben)

> Prob ist dass er mir im MPLAB sagt dass mein Target nicht angeschlossen
> ist, habe aber alles richtig gemacht
natürlich...

Schaltplan? Foto vom Aufbau?

von giggi (Gast)


Lesenswert?

ICD0161: Verify failed (MemType = Program, Address = 0x0, Expected Val = 
0x118A, Val Read = 0x0)
ICD0275:  Programming failed.

das kommt raus und ich weiss nicht warum, bitte um hilfe.

von Zwirbeljupp (Gast)


Lesenswert?

Welcher PIC?

von Sven W. (woehlb)


Lesenswert?

Ist die Betriebsspannung Vdd vorhanden? Arbeitet der Oszillator?

Ansonsten wäre es besser Du könntest Deine Schaltung posten. Alles 
andere läuft aufs Raten hinaus.

von giggi (Gast)


Lesenswert?

ja beide 5V

von giggi (Gast)


Lesenswert?

Schaltung kann ich nicht zur verfügung stellen.
pic16F690

von Sven W. (woehlb)


Lesenswert?

Kannst du an OSC2 die Oszillatorfrequenz messen? Vorausgesetzt Du 
arbeitst mit einem Quarz.

Arbeitest Du mit einem externem Oscillator muß du an OSC1 die 
Taktfrequenz messen können.

von Sven W. (woehlb)


Lesenswert?

Wenn Du mit einem Quarz arbeitest, und an OSC2 die Taktfrequenz nicht 
messen kannst, dann ist eventuell Dein interner Oscillator falsch 
konfiguriert.

Ansonsten muß ich jetzt aufhören. Ich schaue morgen nochmal vorbei.

von Zwirbeljupp (Gast)


Lesenswert?

> Kannst du an OSC2 die Oszillatorfrequenz messen? Vorausgesetzt Du
> arbeitst mit einem Quarz.
Ist fürs Programmieren des Chips nicht relevant.

> Schaltung kann ich nicht zur verfügung stellen.
Na dann viel Glück noch beim Suchen :-D

und tschüss.

von A. (Gast)


Lesenswert?

wenn er den schaltplan oder zumindest den µCn teil davon nicht zeigen 
will sollers doch selber herausfinden.

von Carsten S. (dg3ycs)


Lesenswert?

Hi,

A. schrieb:
> wenn er den schaltplan oder zumindest den µCn teil davon nicht zeigen
> will sollers doch selber herausfinden.

Kann aber auch einfach sein das er die genaue Schaltung gar nicht 
kennt...
(Demoboard - Anfänger?)
Wobei ohne wird es schwer!

Hier mal die Standartfragen:
Ist die Schaltung ICSP Kompatibel aufgebaut? Also der Pin für !RESET 
nicht verwendet oder falls er als !reset Pin benutzt ist dieser mit 
einem sehr hochohmigen Widerstand (ca.10K oder mehr) mit +Ub verbunden.
Die verbindung mit ICSP Pin 1 muss direkt sein?

Die Sicherstellen das die Pins RB6 und RB7 in deiner Schaltung nicht 
benutzt werden, oder wenn doch zumindest ein größerer Widerstand die 
Brücke zur Restlichen Schaltungswelt darstellt.

Sind diese Dinge nicht erfüllt wird ICSP fast sicher scheitern.

Versorgst du die Schaltung während des Proggens mit 5V?
Wenn nein, dann probiere das.
Falls ja: Überprüfe ob die Schaltung gegen Rückspeisung durch den ICD2 
geschützt ist und aktiviere für den Fall das sie es ist in MPLAB die 
Option: Power Target from ICD (Falls du mit Prog-Sockel programmierst 
muss das auch aktiviert sein.)

Falls du die Schaltung Rückspeisefähig aufbauen willst, so sollte die 
Verbindung für MCLR und Ub des Pics mit dem Rest der schaltung über 
Dioden geführt werden.

Sollte all dies nicht fruchten, so hilft nur "Pic ziehen" und im Sockel 
proggen!

All diese Hinweise sind aber auch in den Datenblättern und AP-Notes von 
µC aufgeführt!

Gruß
Carsten

von Bernd Rüter (Gast)


Lesenswert?

Bei dem 16F690 liegen die ICSP-Pins IMHO nicht an PB7 und PB6.

Aber wenn die ID nicht ausgelesen werden kann ist etwas falsch 
angeschlossen. Der Fehler liegt nicht an der Software oder am ICD2 !

von giggi (Gast)


Lesenswert?

Hallo also ich habe alles hardwaretechnisch nachgemessen und alle 
signale liegen an dem PIC an.
Also das Protokoll was da rauskommt und auch reset signal ist wirklich 
alles da.
Das ist halt eine festeapplikation mir schon geflashter software.
Kann es sein dass dort irgendwie die configurations bits so gesetzt sind 
dass ich ihn nicht pogrammieren kann? Sprich er weigert sich mit mir zu 
unterhalten?
Kann ich die configurations bits irgendwie auslesen?
oder den PIC so löschen dass ich ihn wieder beschreiben kann?
Bei Atmels ist es ja möglich durch High Voltage Progeramming.

von Lehrmann M. (ubimbo)


Lesenswert?

wir helfen dir gerne - nur:

- Welche Programmiersprache ASM oder C?
- welches Board?
- welcher Programmer? Selbstbau ?
- hex.file bitte posten?
- HVP oder LVP?
- ICSP oder nicht?
- wenn ICSP welche Pullups?
- Resetschaltung ?!

Ja Configbits kann man immer lesen. Ja man kann den PIC auch immer 
löschen. Nur das Auslesen kann verhindert werden aber selbst dann kann 
man noch löschen. Ein Nicht-Mehr-Programmier-Confit-Bit gibt's nicht.

giggi schrieb:
> Hallo also ich habe alles hardwaretechnisch nachgemessen und alle
> signale liegen an dem PIC an.
> Also das Protokoll was da rauskommt und auch reset signal ist wirklich
> alles da.

Wie ? Logicanalyzer oder Oszi ?

von Sven W. (woehlb)


Lesenswert?

Die Konfigurationsbits haben keinen Einfluß auf die Programmierbarkeit 
des PIC's. Es könnte höchstens Probleme beim Auslesen des PIC's kommen, 
wenn die Codeprotectionbits gesetzt sind. Außerdem ist jede Aktion 
unmöglich solange der PIC nicht erkannt wird.

Ohne Schaltung oder Schaltungsauszug (Mikrocontroller mit 
Programmierinterface) fällt mir zu dem bereits Gesagten erstmal nichts 
weiter ein.

Ich denke das Beste ist, Du wendest Dich an den Support von Microchip! 
Die Telefonnummer von Microchip Deutschland in München ist:

Tel: +49 - 89 - 62 71 44 - 100
http://www.aufzu.de/semi/microchip.html

von giggi (Gast)


Lesenswert?

Hallo,


ich danke euch für eure hilfe.
die Schaltung und HEX file kann ich nicht zur verfügung stellen.
Da dieser PIC schon programmiert wurde, besteht eine vollständige und 
korrekte hardware.
Ich habe jetzt einen anderen leeren PIC genommen und die Protokolle 
verglichen die beim connecten entstehen.
Beim leeren PIC wird die Reset leitung auf 13V mit 3 pulsen aktiviert 
und nach kurzer zeit kommt ein puls der zuerst auf 5V geht und 
anschliessend ohne auf 0V zu gehen auf 13V gezogen wird und wieder auf 
0V.
Die Daten und Clock Leitung tun nichts und der PIC connectet sich wie es 
sein soll.

Bei dem beschriebenen PIC ist es so, dass die Reset Leitung auf 2,5V mit 
zwei längeren Impulsen gezogen wird, gleichzeitig entsteht ein Puls von 
650mV auf der Daten- und der Clock-Leitung.
Meine Frage, ist der PIC jetzt intern versperrt? ist es möglich in 
wieder zum Laufen zu bringen?

von giggi (Gast)


Lesenswert?

gemessen habe ich das ganze mit einem oszi, leider kann ich keine 
screenshots machen.

von Sebastian H. (sebihepp)


Lesenswert?

Mal ne ganz Blöde Vermutung: Ist es vielleicht ein OTP Device?

von Michael L. (michaelx)


Lesenswert?

Sebastian Hepp schrieb:
> Mal ne ganz Blöde Vermutung: Ist es vielleicht ein OTP Device?

Ja, ganz blöde. (--> Device == 16F690)

@giggi

Hast du den anderen leeren PIC in die gleiche Schaltung gesteckt und 
dort programmiert?

Wo sind die Antworten auf die vielen sinnvollen Fragen!?

Irgendwelche verbalen Beschreibungen deiner Oszi-Bilder helfen uns nicht 
weiter, falls wir dir wirklich weiterhelfen sollen. Ohne Schaltung hilft 
ein Oszi-Bild genau so viel wie der Blick in die berühmte "Glaskugel".

Und wenn du uns schon nicht die ganze Schaltung zeigen willst, dann 
wenigstens den für das Problem relevanten Teil, also Versorgungsspannung 
+ PIC + ICSP, selbstverständlich mit der vollständigen Beschaltung der 
relevanten Pins (alle Vdd und Vss, MCLR, ICSPCLK und ICSPDAT).

von Carsten Sch. (DG3YCS) (Gast)


Lesenswert?

Hi,

giggi schrieb:
> Bei dem beschriebenen PIC ist es so, dass die Reset Leitung auf 2,5V mit
>
> zwei längeren Impulsen gezogen wird, gleichzeitig entsteht ein Puls von
>
> 650mV auf der Daten- und der Clock-Leitung.
>
> Meine Frage, ist der PIC jetzt intern versperrt? ist es möglich in
>
> wieder zum Laufen zu bringen?

Der Pic KANN nicht intern versperrt werden. KEINE CHANCE!
Nur das auslesen kann man verhindern, in dem Fall muss der Pic komplett 
gelöscht werden...
Aber: Der !MCLR MUSS auf +13V gezogen werden damit überhaupt ein Kontakt 
aufgebaut werden kann. Dies wird wohl durch die Peripherie des Pics 
verhindert! (OK, es gibt den LV modus, aber den Modus wirst du ja nicht 
gewecjselt haben)

ICh kann mich nur wiederholen!
Ich schrieb :
>Hier mal die Standartfragen:
>Ist die Schaltung ICSP Kompatibel aufgebaut? Also der Pin für !RESET
>nicht verwendet oder falls er als !reset Pin benutzt ist dieser mit
>einem sehr hochohmigen Widerstand (ca.10K oder mehr) mit +Ub verbunden.
>Die verbindung mit ICSP Pin 1 muss direkt sein?
>
>Die Sicherstellen das die Pins RB6 und RB7 in deiner Schaltung nicht
>benutzt werden, oder wenn doch zumindest ein größerer Widerstand die
>Brücke zur Restlichen Schaltungswelt darstellt.
>
Ok zwischenzeitlich kam der Einwand das die ICSP Pins bei diesem Pic an 
anderen Pins anliegen, der rest ist aber korrekt.
Und da wird der Hund begraben liegen, deine Schaltung ist NICHT ICSP 
kompatibel!

Mal eine Frage:
Du schreibst, das du einen Leeren Pic und den beschriebenen verglichen 
hast... Hast du den leeren in exakt die Schaltung eingesetzt in der der 
beschriebene auch sitzt. (gesockelt?).

Dann ist zu vermuten das der Pic während des Programmablaufs die 
Schaltung in einem Zustand bringt die das auslesen durch herunterziehen 
von Vpp verhindert (wahrscheinlich nur die Folge von irgendetwas und 
NICHT der eigendliche Sinn der Sache)
In dem Fall solltest du einfach einen "normalen" Sockel nehmen und 
diesen als Prog-Sockel beschalten. Dann sollte es klappen.

Ist es nicht so gewesen das du das in der selben Schaltung getestet 
hast, dann wird die Ursache trotzdem identisch sein, nur das dieses 
Problem Statisch bestehen könnte. Ist der PIC nicht gesockelt, dann 
würde ich versuchen den !MCLR des Pics vom Rest der Schaltung zu TRENNEN 
und direkt mit dem ICSP Port zu verbinden.
Ebendso kommt natürlich ZUSÄTZLICH noch eine störende Beschaltung von 
PGC und PGD  in Betracht!

Gruß
Carsten

von Torsten S. (torstensc)


Lesenswert?

Schließe mal den Quarz in der fertigen Schaltung kurz. Ich habe schon
solche Probleme erlebt wenn der Brenner MCLR nicht schnell genug in den
Prog-Modus bringt. Dann läuft das interne Programm des PIC los und nix
ist mit programmieren. Zu diesem Problem gibt es auch irgendwo eine
App Note.

Torsten

von giggi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

so jetzt habe ich ein Bild mit der Beschaltung angehängt.
Die Wege sind kurz gehalten und es fliessen keine hohen Ströme also 
keine EMV Störung!
Zum Programmer hhabe ich schon geschrieben also ICD2
Zum Baord, es ist eine bestimmte Applikation die einen festeingelöteten 
PIC hat, man kann da sonst nichts tun. Draf befindet sich schon ein 
Programm. Da wie ich schon beschrieben habe an dem Reset Pin 13V 
anliegen wird hier eine HV Programmierung gemacht. Das File ist Hex 
welches ich aus rechlichen Gründen nicht reinstellen darf. Braucht man 
aber auch nicht da ich schon beim Connecten scheitere.
Quarz ist der interne.
Protokoll was ich mit Oszi gemessen habe ist hier als Bild angehängt.

von Flo (Gast)


Lesenswert?

Schau mal hier unter Target Circuit Design Considerations:
> No capacitors on MCLR – they will prevent fast transitions of VPP.

http://ww1.microchip.com/downloads/en/DeviceDoc/51265e.pdf

Gruß Flo

von Michael L. (michaelx)


Lesenswert?

Du machst ein externes Power-On Reset, das verträgt sich so nicht mit 
ICSP. Da muss noch eine Diode in die Verbindung vom R-C zum MCLR.

Guckst du hier in Kapitel 28 Abschnitt 3:
http://ww1.microchip.com/downloads/en/DeviceDoc/33023a.pdf

von giggi (Gast)


Lesenswert?

Hallo, ja das mit dem Kondensator habe ich mir auch zuerst so gedacht 
jedoch ist da ein 10nF eingebaut und in den Notes von Microchip steht 
dass es ein Kondesator 100nF oder kleiner sein darf.

von Michael L. (michaelx)


Lesenswert?

giggi schrieb:
> Hallo, ja das mit dem Kondensator habe ich mir auch zuerst so gedacht
> jedoch ist da ein 10nF eingebaut und in den Notes von Microchip steht
> dass es ein Kondesator 100nF oder kleiner sein darf.

1. Hast du die Diode nachgerüstet?
2. Ein C mit "104" (deine Skizze) sind für mich erst mal 100nF.

von AkkiSan (Gast)


Lesenswert?

Und falls Dein Stecker, rechts unten, eine direkte
Verbindung zum ICD ist, dann sind PGC und PGD vertauscht:

1 Vpp
2 Vdd
3 GND
4 PGD
5 PGC

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.