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
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........
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
Wie sieht die Beschaltung des MCLR aus ? (Pullup + Diode ?) Sicher das die Einstreuung nicht vom Programmer kommt (zu lange leitungen...) ?
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.
@ 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
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!
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.
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!
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...
@ 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 :(
Bei den Kabellängen kein Wunder. PS: Wie ist Pin 5 an GND angebunden? Auf dem Layout schlecht zu sehen.
:
Bearbeitet durch User
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
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.
Sicher bist Du schon mit einem PICKIT2 mit "Troubleshoot..." alles Stück für Stück durchgegangen. Manchmal liegt es auch am Programmer...
@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
@ indEAS: Nein, habe nur Pickit 3 - kann das das auch?
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
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?
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 :)
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
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
@ 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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.