Forum: Mikrocontroller und Digitale Elektronik PIC18F2585 verliert Programmierung


von Joachim U. (achim1152)


Lesenswert?

Hallo in die Runde,

ich habe erfolgreich eine Schaltung mit dem Prozessor PIC18F2585 im 
Einsatz. Es funktioniert alles so, wie es soll.
Aber inzwischen ging schon mehrmals gar nichts mehr, nach einer 
Neuprogrammierung des PIC war der Fehler behoben. Der gleiche Effekt 
trat bei unterschiedlichen Modellen des PIC18F2585 auf.

Was kann die Ursache sein, dass der PIC seine Programmierung plötzlich 
vergisst? Wie kann ich das verhindern?

Joachim

von Stephan S. (uxdx)


Lesenswert?

Das ist ja sehr ungewöhnlich, ich arbeite seit Jahren mit PIC, ist mir 
noch nie passiert. Kannst Du mal VPP während der Programmierung messen, 
das sollten 12 V sein. Woher hast Du den PIC?

von Frank K. (fchk)


Lesenswert?

Joachim U. schrieb:

> Neuprogrammierung des PIC war der Fehler behoben. Der gleiche Effekt
> trat bei unterschiedlichen Modellen des PIC18F2585 auf.

Bei unterschiedlichen Modellen oder bei unterschiedlichen 
Exemplaren?

Wenn Du Dich nicht exakt ausdrückst, dann denkst Du wahrscheinlich auch 
wirr.

> Was kann die Ursache sein, dass der PIC seine Programmierung plötzlich
> vergisst? Wie kann ich das verhindern?

Eine Möglichkeit ware, dass die Brownout-Einstellungen nicht korrekt 
sind. Ein Brownout ist ein Absinken der Spannung, die zu Fehlern im 
Programmablauf führen. Dafür gibts im Config Word an Adresse 0x300002 
Konfigurationsbits. Diese Bits werden beim Flashen des Prozessors 
mitprogrammiert und befinden sich im HEX-File.
Siehe Datenblatt Seite 330ff.
Die richtigen Werte hängen von der Schaltung und der Betriebsspannung 
ab.

Ansonsten kann auch die Schaltung, in der sich der PIC befindet, defekt 
sein oder Designfehler aufweisen. Das kann ich an dieser Stelle nicht 
beurteilen, ohne Board plus Doku auf meinem Schreibtisch zu haben.

fchk

von Joachim U. (achim1152)


Lesenswert?

Hallo Ihr Beiden,

ich habe den PIC bei Reichelt gekauft und es handel sich bei den Fehlern 
um verschiedene Expemplare einer Lieferung.

Frank K. schrieb:
> Eine Möglichkeit ware, dass die Brownout-Einstellungen nicht korrekt
> sind. Ein Brownout ist ein Absinken der Spannung, die zu Fehlern im
> Programmablauf führen. Dafür gibts im Config Word an Adresse 0x300002
> Konfigurationsbits. Diese Bits werden beim Flashen des Prozessors
> mitprogrammiert und befinden sich im HEX-File.
> Siehe Datenblatt Seite 330ff.
> Die richtigen Werte hängen von der Schaltung und der Betriebsspannung
> ab.

Wie kann ich diese Einstellung ändern?

Frank K. schrieb:
> Ansonsten kann auch die Schaltung, in der sich der PIC befindet, defekt
> sein oder Designfehler aufweisen. Das kann ich an dieser Stelle nicht
> beurteilen, ohne Board plus Doku auf meinem Schreibtisch zu haben.

Worauf muss ich im Layout achten? Kurze, kräftige Masseführung? 
Stützkondensator 100nF an den Spannungsanschlüssen?
Was eventuell noch?
Joachim

von Frank K. (fchk)


Lesenswert?

Joachim U. schrieb:

>> Die richtigen Werte hängen von der Schaltung und der Betriebsspannung
>> ab.
>
> Wie kann ich diese Einstellung ändern?

Normalerweise: Quellcode ändern, compilieren, flashen.
Wenn Du keinen Quellcode hast, wirds kompliziert. Dann musst DU Dich 
sehr gut mit dem Intel Hex Format auskennen, die verschiedenen 
Recordtypen kennen und in der Lage sein, die zeilenweisen Prüfsummen 
anzupassen.

> Frank K. schrieb:
>> Ansonsten kann auch die Schaltung, in der sich der PIC befindet, defekt
>> sein oder Designfehler aufweisen. Das kann ich an dieser Stelle nicht
>> beurteilen, ohne Board plus Doku auf meinem Schreibtisch zu haben.
>
> Worauf muss ich im Layout achten? Kurze, kräftige Masseführung?
> Stützkondensator 100nF an den Spannungsanschlüssen?
> Was eventuell noch?

Das übliche Elektronik-Grundwissen halt. Der Rest steht im Datenblatt 
eigentlich drin.

fchk

von Jens G. (jensig)


Lesenswert?

Frank K. schrieb:
> Das übliche Elektronik-Grundwissen halt. Der Rest steht im Datenblatt
> eigentlich drin.

Und was davon soll dazu führen, dass ein µC seine Programmierung 
verliert?

von Bruno V. (bruno_v)


Lesenswert?

Joachim U. schrieb:
> Was kann die Ursache sein, dass der PIC seine Programmierung plötzlich
> vergisst? Wie kann ich das verhindern?

Erster Schritt: Programmspeicher vor dem Brennen vergleichen. Dann 
siehst Du, was geändert wurde.

Zweiter Schritt: Feststellen, ob das Programm seinen Programmspeicher 
überschreiben darf (gibt es z.B. einen Booter oder werden Daten im Flash 
abgelegt)

Dritter Schritt: Speicher gegen überschreiben Schützen (wie genau steht 
im Datenblatt oder wird im Programmer als Option angeboten)

von Martin (hiru)


Lesenswert?

Ich benutze verschiedene PIC-Typen schon seit ca. 30 Jahren und habe 
damit auch viele Erfahrungen im Serieneinsatz sammeln können. Diesen 
Fehler kenne ich nicht.

Joachim U. schrieb:

> Was kann die Ursache sein, dass der PIC seine Programmierung plötzlich
> vergisst?
Hängt die Funktion der Software auch von Werten im EEPROM ab? Wenn ja, 
dann würde ich dort mal suchen.

> Wie kann ich das verhindern?
Ein originales Programmiergerät von Microchip verwenden.

von Manfred P. (pruckelfred)


Lesenswert?

Joachim U. schrieb:
> Aber inzwischen ging schon mehrmals gar nichts mehr, nach einer
> Neuprogrammierung des PIC war der Fehler behoben.

Ein ähnliches Problem hatten wir in geringer Anzahl bei einem 
Serienprodukt, den Typ des PIC weiß ich nicht. Der Grund wurde leider 
niemals gefunden und auch die Umstellung auf ein anderes 
Programmiergerät löste das nicht.

Man könnte den Verdacht hegen, dass bei einigen Serien PIC die EEPROMS 
unzuverlässig sind.

von Peter D. (peda)


Lesenswert?

Ich würde erstmal den µC ohne Leseschutz flashen und beim Auftreten des 
Fehlers den µC rücklesen und vergleichen, welche Bank fehlerhaft ist.

Ursache können Störungen über IO-Pins von außen sein. Besonders ungesund 
ist, wenn Spannungen von außen vor der VCC bzw. nach dem Abschalten der 
VCC anliegen. Diese sollte man mindestens mit Schutzwiderständen 
begrenzen. Optimal sind aber Treiber-ICs, die ohne VCC in tristate 
gehen.
Ein Kandidat für Ströme in die IO-Pins sind z.B. RS232- oder USB-ICs.

von Jobst M. (jobstens-de)


Lesenswert?

Manfred P. schrieb:
> Ein ähnliches Problem hatten wir in geringer Anzahl bei einem
> Serienprodukt, den Typ des PIC weiß ich nicht. Der Grund wurde leider
> niemals gefunden und auch die Umstellung auf ein anderes
> Programmiergerät löste das nicht.

Haben wir auch beim PIC18F14K50. Auch nach einer Neuprogrammierung 
dieser Exemplare verlieren sie diese nach einiger Zeit wieder. Wir 
tauschen hier inzwischen gleich den Chip. Danach läuft's.
Taucht vor allem bei neuen Geräten, gelegentlich aber auch mal bei 
Reparaturgeräten auf.

Gruß
Jobst

von Joachim U. (achim1152)


Lesenswert?

Danke!
Da bin ich wohl nicht allein mit meinem Problem. Ich werde also erst mal 
nicht nur neu programmieren, sondern neue PIC nehmen.
Joachim

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.