Forum: Mikrocontroller und Digitale Elektronik PIC nicht programmierbar - Datensignal im MCLR sichtbar


von Dominik H. (dominik_ulm)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

wir haben ein Problem beim Programmieren unseres PIC18F25K80 auf einer 
Multilayerplatine.
Prinzipiell kann ich ein Softwareproblem mit recht hoher Sicherheit 
ausschließen (nach meinem Kenntnisstand), da die Software auf einem 
Demoboard läuft und auf einer Versuchsplatine mit exakt der selben 
Belegung (periphere Bauteile) wie auf der Multilayer-Platine ebenfalls 
(Signal auf Abb.5)

Die Platine ist bis auf den FPC Connector, einen Entstörkondensator und 
den Kondensator an VDDCORE unbestückt um Probleme durch andere ICs 
auszuschließen. Zwischendurch haben sich immer mal wieder einzelne 
Platinen beim berühren/drücken der Programmierpins mit dem Finger 
programmieren lassen, jedoch nicht reproduzierbar.
Aufgrund dieser Problematik (zuerst ein Kontaktfehler innerhalb der 
Layer vermutet, der durch den mechanischen Druck auf die Platine 
geschlossen wird) hat uns PCB Pool eine zweite Runde geliefert. Hier 
haben wir ebenfalls das Problem.

Wir bekommen manchmal ein (0x00) zurück, mehrfach ein (0xfec0) und ein 
paar andere Werte gab's auch schon.

Ich habe im Anhang fünf Bilder vom Oszi angehängt (Bitte nicht verwirren 
lassen, wir haben zwischendurch die Tastköpfe anderst angeschlossen, 
Clock und Data haben nicht immer die selbe Farbe).

Abb. 1 bis 3 zeigen verschiedene Varianten wie es uns das Signal kurz 
gegen Ende des Auslesens der Target Device ID zerschießt. Eigentlich 
alles Lustige dabei, was einem so einfallen kann. Wir haben den Data Pin 
schon extra an den µC Pin gelötet, die Versorgungsspannung ebenfalls. Ab 
Abbildung 4 haben wir den MCLR Pin mit aufgenommen -> Man sieht ganz 
deutlich wie sich der Datenkanal im MCLR Kanal wiederpsiegelt?!?!
Wir haben anschließend den MCLR Pin auf dem Board getrennt und von Hand 
an den µC Pin gelötet, das Ergebnis ist Abbildung 6 zu sehen. MCLR sieht 
jetzt gut aus, Ähnlich wie in Abbildung 3 geht die Spannung im letzten 
HIGH jedoch in die Knie und dann ist Sense.
Kurzzeitig ließ sich eine der neuen Multilayer Platinen unter 
mechanischem Druck mit dem Finger programmieren, aber nicht 
reproduzierbar. Kann es sein, dass eventuell nicht der mechanische 
Druck, sonder die kapazitive Kopplung über die Fingerspitze für die 
teilweise vorhandenen Programmiererfolge verantwortlich war?

Hat jemand sowas schonmal erlebt? Kann das ein Layout Problem sein?
Was uns halt echt verwundert -> Kupferfräßplatine, selber µC, selbe 
Kondesatoren, Kiste läuft. Wir haben natürlich auch alle PINs 
gegeneinander durchgemessen, überall hochohmig :(
Die Platine ist sehr klein, Leitungen alle 0,15mm aber ohne Last dürfte 
das doch auch kein Problem sein, oder?

Liebe Grüße aus Ulm,
Dome

: Bearbeitet durch User
von Torben K. (tokuhila)


Lesenswert?

Programmer? Schaltplan? Kabellänge?

von Dirk F (Gast)


Lesenswert?

Dominik H. schrieb:
> Die Platine ist bis auf den FPC Connector, einen Entstörkondensator und
> den Kondensator an VDDCORE unbestückt um Probleme durch andere ICs
> auszuschließen

Wie bitte  ?? Keinen C an VDDCORE ???
Dan kann das Teil ja nicht laufen........

von Flo (Gast)


Lesenswert?

Hi,

ich kenne mich zwar mit pic nicht aus, aber so Effekte mit Finger 
auflegen und es geht ab und zu deutet eher auf einen fehlenden pull up 
oder ähnliches hin. aka input nicht auf
auf korrektem level.

ohne Schaltplan, Bilder, Aufbau, Kabellängen usw aber auch echt schwer 
zu sagen.


Flo

von K. J. (Gast)


Lesenswert?

Wie sieht die Beschaltung des MCLR aus ? (Pullup + Diode ?)

Sicher das die Einstreuung nicht vom Programmer kommt (zu lange 
leitungen...) ?

von Gästchen (Gast)


Lesenswert?

Dirk F schrieb:
> Dominik H. schrieb:
>> Die Platine ist bis auf den FPC Connector, einen Entstörkondensator und
>> den Kondensator an VDDCORE unbestückt um Probleme durch andere ICs
>> auszuschließen
>
> Wie bitte  ?? Keinen C an VDDCORE ???
> Dan kann das Teil ja nicht laufen........

Ja, das kann ich zu bestätigen.
Denn genau dieses hatte ich schon, auf dem Steckbrett vergisst man das 
schnell einmal. Das hat nur komische Sachen gemacht, aber nicht 
funktioniert.

Warum das so ist, liegt daran, dass das kein normaler Bypasskondensator 
ist (der nur schwierig zu findende, sporadische Probleme verursacht), 
sondern der Kondensator ist nötig für die Stabilität des 
Kernspannungsreglers. Du kannst den PIC damit fallweise sogar töten.

Außerdem würde ich außerdem die Verkabelung noch einmal zu 100% 
genauestens durchpiepen. Dort liegt fast immer der Fehler.

von Dominik H. (dominik_ulm)


Angehängte Dateien:

Lesenswert?

@ Dirk: Bitte richtig lesen, da steht: Bis auf ... VDDCORE unbestückt, 
d.h. der ist natürlich drauf.
@Thorben und Flo: Schaltplan und Aufbau im Anhang, Kabellänge vom PICKIT 
ca. 20-25cm, MPLABX v2.26
Pullup hängt dran.
@K.J. Pullup ja, keine Diode.

@Gästchen: Da steht doch ausdrücklich, dass die Platine "bis auf".... 
unbestückt ist -> Entstörkondenastor, VDDCORE, Pullup und der Connector 
sind natürllich  drauf.
Die Verkabelung(en) (wird haben mehrere Adapterkabelbäume gelötet) haben 
wir durchgepiept. Wie beschrieben: Multilayer mit µC, Pullup und den 2 
Cs drauf, Programmieren geht nicht. Selbe Bestückung auf Kupferplatine, 
geht sofort. Reproduzierbar immer wieder.

Mittlerweile ließ es sich aus heiterem Himmel gerade eben 2mal 
programmieren, dann kam noch 2mal die richtige ID aber das programmieren 
schlug fehl und jetzt ist wieder Status quo erreicht.

Könnten das die hauchfeinen Leiterbahnen auf der Multilayerplatine sein?
Hab mal noch einen Ausschnitt vom Board Layout angehängt. Habe die 
Anschlüsse für MCLR DATA CLOCK und 5V gehighlited.

EDIT: Gerade mal PGC,PGD, MCLR auf 2cm verkürzt, selbes Ergebnis wie in 
Abb. 1

LG
Dome

: Bearbeitet durch User
von Volker S. (vloki)


Lesenswert?

Hi ;-)

Wenn das mit der gefrästen Platine immer funktioniert, dann würde ich 
versuchen die funktionierende Kommunikation so sauber wie möglich 
aufzuzeichnen und dann mit der Multilayerplatine im Detail vergleichen. 
Dabei darauf achten, dass die Tastköpfe auch richtig Kontakt haben!

von K. J. (Gast)


Lesenswert?

Keine Diode ist ok wenn du LV Programierung machst bei HV hebst du die 
VDD Spannung auf 12V das ist nicht so gut.

Betreibst du die Platine beim Programmieren über den Programmer, wenn ja 
versuch es mal mit einer Externen Spannungsversorgung beim Programmieren 
manchmal macht das Probleme, ansonsten sieht der Schaltplan ok aus.

von Nico (nico123)


Lesenswert?

Schaltung ist okay, aber das Layout ist grausam! Allein die Anbindung 
der Versorgungsspannung, die muss kurz und direkt sein. Die 
Versorgungsspannungs-Leiterbahnen sollten auch möglichst breit sein.

Zum Messen mit dem Oszi: du solltest die GND-Verbindungen an den 
Tastköpfen (an jedem!) nutzen, ansonsten werden deine Signale nicht 
korrekt dargestellt!

von Volker S. (vloki)


Lesenswert?

Nico .. schrieb:
> Schaltung ist okay, aber das Layout ist grausam!

C_8 ist extrem schlecht angebunden ;-)
Zu dünn und zu weit weg. Der sollte an der Stelle von R_4 liegen!
-> Kondensator direkt auf die Vias an den uC Pads 3 und 5 löten...

von Dominik H. (dominik_ulm)


Lesenswert?

@ K.J. haben wir beides probiert.
@ Nico: Ist das so? Normalerweise liegen die doch direkt auf dem selben 
Ground? Ok, könnte irgendwas davon der Grund sein und wenn ja, warum?
@Volker: Haben wir getan, funktioniert nicht.

Ansonsten lässt sich die Platine mittlerweile reproduzierbar 
programmieren, wenn wir mit einem Dünnen Draht eine der Masseflächen 
berühren. Sieht also nach irgend einem kapazitiven Problem aus, machts 
jetzt aber nur so bedingt besser :(

von Volker S. (vloki)


Lesenswert?

Dominik H. schrieb:
> @Volker: Haben wir getan, funktioniert nicht.

Oh, doch nicht - schade...

von Torben K. (tokuhila)


Lesenswert?

Bei den Kabellängen kein Wunder.

PS: Wie ist Pin 5 an GND angebunden? Auf dem Layout schlecht zu sehen.

: Bearbeitet durch User
von Nico (nico123)


Lesenswert?

Dominik H. schrieb:
> @ Nico: Ist das so? Normalerweise liegen die doch direkt auf dem selben
> Ground? Ok, könnte irgendwas davon der Grund sein und wenn ja, warum?

Ja, die liegen auf dem selben GND aber die nicht angeschlossenen GNDs 
bilden eine schöne Antenne weil sie nur einseitig auf GND liegen!
Das wird vermutlich nicht der Grund sein, dass dein PIC nicht zu 
programmieren ist, aber dadurch werden die Oszi-Bilder verfälscht und 
siehst Fehler die nicht existieren!

Zeige mal bitte ein Bild von der Masse-Plane der Platine und wo die 
Einspeisung liegt!

: Bearbeitet durch User
von Gästchen (Gast)


Lesenswert?

Dominik H. schrieb:
> Ansonsten lässt sich die Platine mittlerweile reproduzierbar
> programmieren, wenn wir mit einem Dünnen Draht eine der Masseflächen
> berühren. Sieht also nach irgend einem kapazitiven Problem aus, machts
> jetzt aber nur so bedingt besser :(

In dem Fall würde ich mal das Massesystem durchpiepen. Also eine Seite 
des Multimeters an die Versorgungsmasse, mit der anderen alle 
Masseflächen mal ankucken. Auch mal kucken, ob die Masse beim PICkit 
auch wirklich ankommt (ob da nicht irgendwo im Kabel ein PIN ab ist!).

Wichtig wäre auch mal nachpiepen, ob die Pins alle angelötet sind. Am 
Besten auch noch mal alle VCC und GND-Pins unter dem Mikroskop 
nachpiepen. Unter dem QFN (?) verstecken sich gern auch mal Kurzschlüsse 
auf das Massepad.

Generell kann es auf einen Lötfehler hindeuten, wenn beim mechanischen 
Belasten der Platine die Funktion plötzlich gegeben ist. Auflieger 
können das verursachen.
Also nochmal Lötstellen sichten, und zweifelhafte nachlöten.

von indEAS (Gast)


Lesenswert?

Sicher bist Du schon mit einem PICKIT2 mit "Troubleshoot..."
alles Stück für Stück durchgegangen.
Manchmal liegt es auch am Programmer...

von Dominik H. (dominik_ulm)


Angehängte Dateien:

Lesenswert?

@Thorben: Kabel mittlerweile gekürzt auf knapp unter 2cm -> unverändert. 
Pin 5 geht über ein Via direkt auf die große Massefläche.

@Nico: Ah, ok. Danke für den Hinweis. Wird ab jetzt berücksichtigt. Bild 
vom Board mit eingeblendeter Masse hängt an.

@Gästchen:
1. kann ich nochmals tun...
2. Hm, wir haben das Problem bei 4 Platinen, halte ich für 
unrealistisch, dass wir da jedes mal den selben (Löt) Fehler haben, aber 
ich versuchs nochmal.
3. Siehe 2. und wir belasten nichts mechanisch, das war zwar auch erst 
unser verdacht, aber ich "drücke" am anderen Ende mit einem 0,5mm Draht 
auf ein Massepad. Sprich ich berühre die Platine nur ganz minimal ohne 
jedweden mechanischen Druck und schwuppdiwupps: Programmierung 
erfolgreich.

EDIT:
habe alles durchgepiept, bzw. die Widerstände gemessen. Durch die Bank 
durch 0.00ohm und Hochohmig dort, wo's sein soll.

: Bearbeitet durch User
von Dominik H. (dominik_ulm)


Lesenswert?

@ indEAS: Nein, habe nur Pickit 3 - kann das das auch?

von Michael D. (Firma: indEAS) (indeas)


Lesenswert?

Nein, leider nicht (früher war alles besser).

Ich habe auch einen PICKIT3 und andere professionller Programmer, aber 
der PICKIT2 ist mir immer noch der liebste.
Wenn Du öfters mit (älteren) PICs zu tun hast, dann besorge Dir einen 
oder am besten mehrere PICKIT2.
Die Standalone-Software und das PIC-to-go Feature sind einfach super!

Dazu auch:
https://www.youtube.com/watch?v=LjfIS65mwn8
und:
https://www.youtube.com/watch?v=3YUvlrVlNao

: Bearbeitet durch User
von Gästchen (Gast)


Lesenswert?

Michael D. schrieb:
> Wenn Du öfters mit (älteren) PICs zu tun hast, dann besorge Dir einen
> oder am besten mehrere PICKIT2.

Ja, stichwort "ältere PICs".
Aber ich habe ein PICkit2 gekauft, weil das hier empfohlen wurde. Ich 
konnte es bisher nie verwenden, weil viele PIC24 nicht mehr unterstützt 
werden. Da hilft der beste Programmer nicht, wenn man dafür alte Gurken 
verwenden muss!
Bei PICs tut das besonder weh, weil die sich die Peripherie letzten 
Jahre stark verbessert hat.

@Topic:
Habe ich das richtig gesehen, dass die Platine über das PICkit versorgt 
wird?
Es könnte sich lohnen, die Versorgung während eines nicht erfolgreichen 
Programmiervorgangs mit dem Scope zu beobachten.
Wurde das schon gemacht?
Auf welchem der Bilder sieht man das?

von Dominik H. (dominik_ulm)


Lesenswert?

Also momentan sieht's so aus, als ob wir des Rätsels Lösung gefunden 
hätten. Ich hatte bis jetzt nur die PGD und PGC Leitung auf 2cm gekürzt, 
Masse und 5V gingen immer noch über die Lange Leitung, Steckbrett und 
Flachbandkabel Kabel. Wir haben die jetzt gekürzt und direkt auf die 
Platine auf ein paar freie Pads gelötet. Und zack, die Kiste läuft. Mal 
sehen wie lang und ob das bei den Anderen auch hilft.

Vielen Dank für die Hilfestellungen bis jetzt schon mal :)

von Michael D. (Firma: indEAS) (indeas)


Lesenswert?

Auch wenn das Rätsel gelöst ist, noch ein kleiner Nachtrag:
Der PICKIT2 wird (leider) nicht mehr hergestellt.
Neuere (leistungsfähigere und meistens auch noch günstigere) PICs werden 
vom letzten offiziellen dev-File nicht unterstützt.
Es gibt im Netz aktualisierte dev-Files (1.63.146 und höher) und auch 
einen dev-Editor (eher für Experten).

Das Timing der Signale am Anfang des Programmiervorgangs ist äußerst 
kritisch; vor allem Vpp sollte steil nach oben gehen!

: Bearbeitet durch User
von Klaus (Gast)


Lesenswert?

Dominik H. schrieb:
> Ich hatte bis jetzt nur die PGD und PGC Leitung auf 2cm gekürzt,
> Masse und 5V gingen immer noch über die Lange Leitung, Steckbrett und
> Flachbandkabel Kabel.

Das Kürzen war auch unerheblich. Sooft wie das hier empfohlen wird war 
es auch nie die Ursache. 5 oder auch 10cm sind kein Problem, oft genug 
gemacht. Eher stört der, auch hier gern empfohlene Kondensator an MCLR:

Michael D. schrieb:
> Das Timing der Signale am Anfang des Programmiervorgangs ist äußerst
> kritisch; vor allem Vpp sollte steil nach oben gehen!

Das Verhalten deutet eher darauf hin, daß eine der Versorgungen nur sehr 
hochohmig oder garnicht an die CPU angeschlossen ist. Insbesondere 
kräftige Abblockkondensatoren sorgen dann dafür, daß sich der Prozessor 
eine Weile aus diesen versorgt und eine gewisse Funktionalität 
vortäuscht.

MfG Klaus

von Dominik H. (dominik_ulm)


Lesenswert?

@ Klaus: Warum funktioniert es dann auf allen Platinen auf einmal, seit 
dem wir die Kabel gekürzt haben? Die Anschlüssen waren alle niederohmig.
Am MCLR ist kein Kondensator.

: Bearbeitet durch User
von Torben K. (tokuhila)


Lesenswert?

Oder ihr habt mit eurer Klingeldrahtzuleitung einen schönen Schwingkreis 
gebaut. Ich hab direkt am Anschluss der Spannungsversorgung von nem 
Board immer noch einen kleinen Keramik mit 10-22uF. Hat noch nie 
gestört.

von Klaus (Gast)


Lesenswert?

Dominik H. schrieb:
> @ Klaus: Warum funktioniert es dann auf allen Platinen auf einmal, seit
> dem wir die Kabel gekürzt haben? Die Anschlüssen waren alle niederohmig.

Dominik H. schrieb:
> Masse und 5V gingen immer noch über die Lange Leitung, Steckbrett und
> Flachbandkabel Kabel.

Nicht "gekürzt" im Sinn von Länge, sondern Steckbrett und andere 
Verbindungen rausgelassen. 5 direkte Anschlüsse zwischen PICKit und 
CPU, die können dann auch 20cm sein.

Das spricht für eine schlechte Verbindung:

Dominik H. schrieb:
> aber ich "drücke" am anderen Ende mit einem 0,5mm Draht
> auf ein Massepad. Sprich ich berühre die Platine nur ganz minimal ohne
> jedweden mechanischen Druck und schwuppdiwupps: Programmierung
> erfolgreich.

Genauso, daß man auf der vom PICKit aktiv getriebenen MCLR Leitung ein 
Datensignal sehen kann. Der Treiber ist stark genug, Vpp zu schalten und 
läßt sich durch 10cm Kabel nicht beeindrucken. Viele Platinen sind da 
selbst schon größer. Das sichtbare Signal zeigt also einen höheren 
Widerstand in einer für beide Kreise (Daten und MCLR) gemeinsamen 
Leitung. Das ist hier GND. Mit ein wenig messen hätte man auch die 
genaue Stelle finden können.

MfG Klaus

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.