Forum: Mikrocontroller und Digitale Elektronik Kann ein PIC sich selbst löschen?


von Andreas (Gast)


Lesenswert?

Hallo,

meine Frage an euch ist, ob sich ein PIC von selbst löschen kann, oder 
ist es vielmehr so, dass der PIC

sich  in einem RESET-Zustand befinden kann, damit er aufhört zu 
arbeiten. Wenn ja, welche Möglichkeiten können bei einem PIC der Serie 
18F26J11 in betracht kommen,wenn er plötzlich nicht mehr richtig 
funktioniert?

Die Frage stelle ich deshalb, weil ein Studienkamerad ein eigenes Gerät 
gebaut hat, welches einen

Ein und Ausschalteknopf hat. Beim Betätigen des Einschalteknopfs  war es 
bis jetzt immer so, dass
Gerät immer ohne Probleme lief. Sprich, die LED blinkte in einem 
langsamen Takt.

Nun ist es so, dass  das Gerät nach dem Einschalten nicht mehr 
funktioniert. Das heißt, die LED blinkt nach dem Einschalten durchgehend 
in einem schnellen Takt und leuchtet nach ca 10 Sekunden durchgehend 
auf. Was könnte das sein, was vermutet ihr ?

BZW. Kann eine Sperre darin sein? Wenn ja, welche und wie bekomme ich 
diese heraus?

Ich habe bereits das Gerät mit dem PIC 3 eingelesen. Jedoch habe ich 
beim Lesen der HEX Datei überall nur "0" an den Adressen (Bitstellen) 
gefunden. Deswegen habe ich mich gefragt, ob sich der PIC selbst reseten 
kann und der Code sich auch somit von selbst löscht?!

Gruß, Andy

von Trf (Gast)


Lesenswert?

Das er sich selbst den Programmspeicher verändert oder gar löscht durch 
einen Reset, ist unwahrscheinlich

von John B. (johnbauer)


Lesenswert?

Hallo Andreas,
was ist das für ein Gerät, und macht es noch etwas anderes, als nur eine 
LED blinken zu lassen?

Vielleicht ist die Batterie leer.

Kann es sein, dass der Leseschutz des PICs aktiviert wurde, und deshalb 
nur Nullen gelesen werden?

Gruß
John

von Andy (Gast)


Lesenswert?

Hallo trf
Hallo John,

danke erstmal für eure Antworten. Freut mich sehr.

> was ist das für ein Gerät, und macht es noch etwas anderes, als nur eine
> LED blinken zu lassen?

Das Gerät wird an ein RJ12 Kabel (6-Polig) eingespeist und verändert 
darin das enthaltene Signal. Beispielsweise ist an einer Station A eine 
Hardware angeschlossen, welches über das RJ12 an Station B angeschlossen 
ist. Station B ist hierbei ein Display mit einer digitalen Anzeige. In 
diesem Fall ein Zähler.

> Kann es sein, dass der Leseschutz des PICs aktiviert wurde, und deshalb
> nur Nullen gelesen werden?

Soweit ich weiß ist der Leseschutz aktiviert, ja. Daher meine Frage, 
kommt man trotzdem an den Code ran. Hab mal gehört, dass man mit Hilfe 
eines anderes Lesegerätes dies machen könnte. Man müsste allderdings den 
Chip herauslöten und ihn dan in einen Adapter reinstecken etc.

Ich persönlich vermute auch nicht, dass der Code gelöscht ist, sondern 
eher dass es am Leseschutz liegen könnte. Weiterhin denke ich, dass 
irgendetwas (Reset oder Timer) das Gerät nicht zum Arbeiten bringt. Gibt 
es da Möglichkeiten, das Ding zum Laufen zu bringen?

Für weitere Tipps bin ich sehr dankbar.

Gruß, Andy

von Andy (Gast)


Lesenswert?

P.s.: Batterie ist voll.

von usuru (Gast)


Lesenswert?

Die moderneren PICs können alle das Programm-Flash beschreiben und damit 
auch löschen. Das ist aber - absichtlich, aus Sicherheitsgründen - eine 
sehr umständliche Prozedur und kann eigentlich nicht "aus versehen" 
passieren.

von Andy (Gast)


Lesenswert?

Hallo usuru,

kann man diese Prozedur so im PIC einstellen, konfigurieren, bzw. 
programmieren?

Gruß, Andy

von Stefan (Gast)


Lesenswert?

Leseschutz: Macht genau das, was der Name sagt. Hat keinen Einfluss auf 
die Ausführung des Programms.

Reset: Kann man nachmessen, z.B. mit einem Oszilloskop.

Stromversorgung: Kann man nachmessen, z.B. mit einem Oszilloskop.

Taktquelle (z.B. Quarz): Kann man nachmessen, z.B. mit einem 
Oszilloskop.

Wenn der Fehler schon immer da war bzw. unmittelbar nach dem Ändern der 
Firmware, dann ist es warscheinlich eher ein Softwarefehler.

Softwarefehler können ales Möglich auslösen, auch das von Dir 
beschriebene Fehlerbild.

PIC Controller können sich selbst umprogrammieren. Das dies 
versehentlich geschieht ist aber eher unwarscheinlich.

von Wilhelm F. (Gast)


Lesenswert?

Trf schrieb:

> Das er sich selbst den Programmspeicher verändert oder gar löscht durch
> einen Reset, ist unwahrscheinlich

Nein. Ist es nicht.

Ich arbeite ja noch mit 8051-ern, die einen externen Programmspeicher 
meist als EPROM haben. Vor vielen Jahren versuchte ich mal, EPROM durch 
funktionsgleiches EEPROM zu ersetzen.

Die Verblüffung war groß, als manchmal in der rauhen Hobby-Umgebung auf 
einmal nichts mehr ging, das EEPROM öfter mal völlig leer war. In 
jüngeren Jahren machte man mal eben ein kleines Verpolerchen oder 
Kurzschlüßchen, mit Strombegrenzung natürlich, das passiert aber auch 
Studenten im Labor, und dann war der Speicher hinne. UV-löschbares EPROM 
bekam ich nie gestört, das ist äußerst robust.

von Thomas K. (thomas_k39)


Lesenswert?

Wobei es einen grossen Unterschied gibt zwischen dem externen EEPROM, 
das Du damals angehängt hast, und dem in den heutigen uC integrierten 
Flash.

Die externen EEPROMs haben gar keinen Schutz vor versehentlichem 
Schreiben - das Schreiben soll möglichst einfach möglich sein.

Das in einem uC eingebaute Flash ist dagegen geschützt. Um den Inhalt 
des internen Flashs zu schreiben, müssen mehrere Befehle in einer genau 
definierten Sequenz und vielfach auch innerhalb bestimmter Zeitgrenzen 
ausgeführt werden.

Und wie bitte willst Du auf einem Chip einen Kurzschluss verursachen?

von Gnubbel (Gast)


Lesenswert?

Jaja, das Selbstlöschen.

Also ich kenne das von den Silabs 80C51F350. Also wieso nicht auch beim 
PIC?

Beim Silabs tritt das auf wenn die Spannungsversorgung nicht schnell 
genug steigt. Ich glaube da gibt es sogar ein Errata zu.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Wilhelm Ferkes schrieb:
> Ich arbeite ja noch mit 8051-ern, die einen externen Programmspeicher
> meist als EPROM haben. Vor vielen Jahren versuchte ich mal, EPROM durch
> funktionsgleiches EEPROM zu ersetzen.
>
> Die Verblüffung war groß, als manchmal in der rauhen Hobby-Umgebung auf
> einmal nichts mehr ging, das EEPROM öfter mal völlig leer war. In
> jüngeren Jahren machte man mal eben ein kleines Verpolerchen oder
> Kurzschlüßchen, mit Strombegrenzung natürlich, das passiert aber auch
> Studenten im Labor, und dann war der Speicher hinne. UV-löschbares EPROM
> bekam ich nie gestört, das ist äußerst robust.

Beim RESET sind die Kontrollleitungen der 8051-Varianten gerne mal im 
Schreibstatus. Dann wird das EEPROM an der gerade anliegenden Adresse 
verändert, meist auf 00h gesetzt.
Alter bekannter Fehler. Kenne ich seit ca. 1990. Da hatte ich das 
eingehend untersucht.
Vermutlich sind die internen Treiber kapazitiv an den Kernel gekoppelt. 
Diese Chips haben ja dynamische Logik und Mindestfrequenz. Tja, und wie 
lange brauch so ein Quarzoszillator zum Starten?? Genau das ist das 
Problem!

BTW: /RD und /WR kann man bei diesem Controller während das 
Programmablaufs per Software dauerhaft aktivieren. Letztlich ist das ja 
nur Port3 ;-)

von andy (Gast)


Lesenswert?

Hallo Leute,

danke für eure Antworten nochmal.

Soweit ich weiß,  lässt sich ein EPROM Chip mittels UV-Licht löschen. 
Und bei meinem Chip 18F26J11

ist es so, dass es kein sog. Quarzfenster, wodurch sich der Chip löschen 
lässt, zu sehen ist.

Korrigiert mich, wenn ich falsch liege. Soviel Ahnung habe ich selbst 
noch nicht von PICs, aber ich

denke mal, dass mein Chip nicht aus diesem EPROM besteht, sondern eher 
aus dem Flash.

Und wie gesagt, es wurde gewollt so konfiguriert, dass der PIC nach 
einer bestimmten Zeit (nach bestimmten Takten) erst einmal außer Betrieb 
gesetzt ist. Das heißt, an dem Chip selbst ist alles ok, auch die 
Bausteine sind in Ordnung. Wodurch könnte der PIC noch außer Betrieb 
gesetzt werden?

Habe was von Timern gelesen, einem Watchdog-Timer, verschiedene 
Reset-Möglichkeiten etc.

Ich kann nur widergeben, dass, sobald das Gerät unter Spannung (5 V) 
steht, die LED durchgehend schnell blinkt und nach etwa 10 Sekunden 
durchgehend aufleuchtet. Heißt das dann nicht, dass wenn schon mal die 
LED blinkt, der PIC funktioniert, aber vielleicht ein nur ein Reset 
konfiguriert wurde?
Wenn ja, wie kann man diesen Modus abschalten? Geht das auch, wenn ein 
Leseschutz aktiv ist?
Kann man vielleicht an den Eingängen am Chip etwas auslöten, z.B. habe 
ich gelesen, dass der MCLR Eingang für ein Reset zuständig sein kann?!

Gruß, Andy

von andy (Gast)


Lesenswert?

Zur Ergänzung habe ich folgendes bei www.sprut.de gefunden unter dem 
Link :
http://sprut.de/electronic/pic/config/config.htm#data%20EEPROM

++Anmerkung++
Flash und EEPROM mit Codeprotection lässt sich zwar nicht mehr von außen 
(via ICSP) auslesen, aber ein im PIC liegendes Programm kann sehr wohl 
auf geschützten Speicher lesend (nicht aber schreibend) zugreifen. Falls 
z.B. beim 16F876 nur ein Teil des Programmspeichers geschützt ist, dann 
ist der untere Teil des Flash (mindestens 0000h-0FFFh) ungeschützt. 
Hierhin lässt sich nun ein kleines Programm brennen, das den geschützten 
Bereich ausliest, und via RS232 an einen PC überträgt. (Ausprobiert habe 
ich das allerdings nicht.)
Wenn man schon CP benutzen will, dann sollte man unbedingt auch den 
unteren Teil des Flash schützen!

Weiß jemand, wie man den Code ohne ISCP auslesen könnte?

von andy (Gast)


Lesenswert?

Hallo, noch eine kurze Ergänzung und somit eine Frage zugleich.

Hier habe ich bei www.sprut.de folgendes gefunden:
------------------------------------------------------------------------ 
-----------------------------

MCLR-Pin (master clear)
Jeder PIC hat ein MCLR-Pin. Wird es auf low gezogen (Vss), dann stoppt 
der PIC seine Arbeit und führt ein Reset durch. Wird dann das Pin wider 
auf High gezogen (Vdd), dann beginnt der PIC  seine Arbeit vom Beginn 
an. Damit der PIC normal arbeiten kann, muss dieses Pin also auf High 
liegen. Nur ganz wenige PICs haben an diesem Input-Pin einen internen 
pull-up-Widerstand (PIC16F88x). Bei diesen PICs kann das Pin einfach 
unbelegt gelassen werden. Bei allen andern PICs miss das Pin mit Vdd 
verbunden werden. Dabei ist anstelle einer direkten Verbindung ein 
Hochziehwiderstand (10..20 kOhm) zu verwenden.

Über einen Reset-Taster verbindet das MCLR-Pin mit Vss. Drückt man den 
Taster kurz, dann startet der PIC neu. Eigentlich ist das MCLR-Pin nur 
deshalb vorhanden, damit man einen externen Reset-Taster anschließen 
kann. Braucht man keinen Reset-Taster, dann ist auch das MCLR-Pin 
überflüssig. Moderne PICs erlauben es deshalb, in der Konfiguration das 
MCLR-Pin zu einem normalen IO-Port-Pin zu machen. Dadurch steht dann ein 
zusätzliches IO-Pin zur Verfügung.

Der Reset-Puls an MCLR muss wenigstens ein paar Mikrosekunden lang sein 
(>2..5 us), damit er vom PIC akzeptiert wird.

------------------------------------------------------------------------ 
----------------------------

Wie ist das mit dem MCLR-Pin hier genau gemeint, dass man es auf low 
ziehen muss, damit ein Reset ausgeführt werden kann? Verbindet man 
einfach die beiden Leitungen miteinander und es ist automatisch auf low 
oder wie erreicht man das genau?

Die Frage stelle ich deswegen weil ich mich Frage, ob das bei meinem PIC 
vielleicht so eingestellt wurde.

von andy (Gast)


Lesenswert?

Und ich habe eine weitere Frage ^^ Wie überprüfe ich, ob vielleicht der 
PC (Program Counter) sich in einem Zustand befindet, der evtl. den 
Reset auslöst ? Ist das in der Config? Wenn ja, wie gelange ich dahin? 
Wenn das Ganze sich im Quellcode befindet, dann komme ich wegen Code 
Protection nicht dran?!

von Mikel M. (mikelm)


Lesenswert?

Da dieses Modul ja so geheimnisvoll scheint. Vielleicht hat es einfach 
eine  geplante Obsoleszenz.
 Sprich bei jedem Start wird z.B. im eeprom ein counter runtergezählt 
der sicherstellt, das es nur x mal benutzt werden kann. wenn der counter 
auf null ist, blinkt es anders und macht nichts mehr.
 wäre z.b. ne chipkarte die man kauft, benutzt werden kann um x mal zu 
duschen(or whatever) danach nichts mehr macht. dann muß man ne neue 
kaufen.
 um Manipulationen zu verhindern wurde die protection aktiviert. wenn 
die protektion im chip funktioniert, kann man dann nichts anderes machen 
als den chip evt komplett löschen.
mit anderen worten, der chip ist vielleicht gezielt so programmiert 
worden, das er nach einer bestimmten zeit nicht mehr funktioniert und du 
versuchst ihn zu hacken.

 da dein Studienkamerad es gebaut hat, warum fragst du ihn da nicht 
einfach ob das normales Verhalten ist. Da er den Source hat wird er dir 
am besten weiterhelfen können.

von Michael S. (rbs_phoenix)


Lesenswert?

andy schrieb:
> Soweit ich weiß,  lässt sich ein EPROM Chip mittels UV-Licht löschen.
> Und bei meinem Chip 18F26J11
> ist es so, dass es kein sog. Quarzfenster, wodurch sich der Chip löschen
> lässt, zu sehen ist.

Ansich sind alle PICs außer die PIC16C mit Flash (die PIC16C mit EPROM). 
Doch wenn das wirklich ein PIC18F26J11 ist, hoffe ich, dass er nicht an:

andy schrieb:
> Ich kann nur widergeben, dass, sobald das Gerät unter Spannung (5 V)
> steht,

liegt.

Wenn er an 5V ist, guck dir mal an, was unter "Operating Voltage Range" 
steht:
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en533681


andy schrieb:
> Weiß jemand, wie man den Code ohne ISCP auslesen könnte?

Das hast du doch direkt darüber geschrieben!?


andy schrieb:
> Wie ist das mit dem MCLR-Pin hier genau gemeint, dass man es auf low
> ziehen muss, damit ein Reset ausgeführt werden kann? Verbindet man
> einfach die beiden Leitungen miteinander und es ist automatisch auf low
> oder wie erreicht man das genau?
>
> Die Frage stelle ich deswegen weil ich mich Frage, ob das bei meinem PIC
> vielleicht so eingestellt wurde.

Du legst den Resetpin über einen Widerstand auf Vdd. Wenn du jetzt einen 
Reset machen willst, also das Programm neu starten willst, kannst du den 
PIN z.B. mit einem Taster auf Masse ziehen. Ein Kurzschluss entsteht 
durch den Widerstand nicht.

Ein Schaltplan wäre auch mal recht interessant, da schleicht sich auch 
mal was ein.


andy schrieb:
> Und ich habe eine weitere Frage ^^ Wie überprüfe ich, ob vielleicht der
> PC (Program Counter) sich in einem Zustand befindet, der evtl. den
> Reset auslöst ? Ist das in der Config? Wenn ja, wie gelange ich dahin?
> Wenn das Ganze sich im Quellcode befindet, dann komme ich wegen Code
> Protection nicht dran?!

Du solltest dich mal mit dem Aufbau von PICs beschäftigen. Der PC ist 
ein Register, das hochgezählt oder durch call/goto manipuliert wird. Das 
was darin steht, ist die Adresse im Flash-Speicher, wo der aktuelle 
Befehl liegt. Ein Befehl wird aus dem Flash gelesen, bearbeitet, PC 
hochgezählt. Danach von vorne. Somit kommt immer der nächste Befehl. Mit 
einem GOTO macht man nichts anderes, als den PC auf eine bestimmte 
Adresse zu setzen.

Und mit der Config hat das auch nichts zutun ;)

In jedem Datenblatt ist ein Blockschaltbild. Da einfach mal reingucken, 
Sprut angucken und in beiden lesen, wie was funktioniert.

von hro (Gast)


Lesenswert?

Andreas schrieb:
> meine Frage an euch ist, ob sich ein PIC von selbst löschen kann, oder
> ist es vielmehr so, dass der PIC

Mir schon passiert.
5 St. PIC16F84 an einem RS485-Bus, USV fuer die SV ausgefallen, da Akku 
langsam gestorben.
Danach waren 2 der PICs nicht mehr ansprechbar. Die Fehlersuche ergab am 
Ende, dass die Adressen (die sich im Daten-EEPROM befanden) nicht mehr 
vorhanden waren (bei beiden).
Nachdem nur die Adressen wieder neu geschrieben wurden, liefen die PICs 
wieder.

Anmerkung: Die SW der PICs selbst hatte keine Routine fuer das Schreiben 
des Daten-EEPROMs.

Gruss hro

von Andy (Gast)


Lesenswert?

> Mir schon passiert.
> 5 St. PIC16F84 an einem RS485-Bus, USV fuer die SV ausgefallen, da Akku
> langsam gestorben.
> Danach waren 2 der PICs nicht mehr ansprechbar. Die Fehlersuche ergab am
> Ende, dass die Adressen (die sich im Daten-EEPROM befanden) nicht mehr
> vorhanden waren (bei beiden).
> Nachdem nur die Adressen wieder neu geschrieben wurden, liefen die PICs
> wieder.
>
> Anmerkung: Die SW der PICs selbst hatte keine Routine fuer das Schreiben
> des Daten-EEPROMs.
>
> Gruss hro

Also, du meinst, es lag daran, dass die Daten im EPROM nicht mehr 
vorhanden waren, weil der Akku leer war? Habe ich das richtig 
verstanden?

Gruß, Andy

von Andy (Gast)


Lesenswert?

Können die Daten im PIC (Flashspeicher) auch dadurch gelöscht sein, wenn 
z.B. der Akku des Gerätes völlig entladen ist?

von Michael S. (rbs_phoenix)


Lesenswert?

Mich würde eher mal interessieren, ob er an den 5V hängt, dann kann ich 
dir nämlich sagen, woran es liegt ;) (siehe oben)

Ich würde nicht gleich davon ausgehen, dass das Programm weg ist, 
sondern Hardware oder Softwareseitig ein Fehler ist.

von hro (Gast)


Lesenswert?

Andy schrieb:
> Also, du meinst, es lag daran, dass die Daten im EPROM nicht mehr
> vorhanden waren, weil der Akku leer war? Habe ich das richtig
> verstanden?
>
> Gruß, Andy

Nein, ich gehe davon aus (ich war nicht dabei), dass durch den Ausfall 
der USV die Spannungsversorgung fuer das Netzteil instabil wurde, was 
dann vermutlich weiter dazu fuehrte, dass die Spannungsversorgung fuer 
den PIC "irgendwas" gemacht hat.

Gruss hro

von Wilhelm F. (Gast)


Lesenswert?

Abdul K. schrieb:

> Beim RESET sind die Kontrollleitungen der 8051-Varianten gerne mal im
> Schreibstatus. Dann wird das EEPROM an der gerade anliegenden Adresse
> verändert, meist auf 00h gesetzt.
> Alter bekannter Fehler. Kenne ich seit ca. 1990. Da hatte ich das
> eingehend untersucht.
> Vermutlich sind die internen Treiber kapazitiv an den Kernel gekoppelt.
> Diese Chips haben ja dynamische Logik und Mindestfrequenz. Tja, und wie
> lange brauch so ein Quarzoszillator zum Starten?? Genau das ist das
> Problem!
>
> BTW: /RD und /WR kann man bei diesem Controller während das
> Programmablaufs per Software dauerhaft aktivieren. Letztlich ist das ja
> nur Port3 ;-)

Abdul, das mit deinen Untersuchungen und Pinpegeln beim Einschalten, da 
könnte schon auch was dran sein. Je nach Schaltung. Ich vermute, eher 
bei sehr langlamem Anstieg der Versorgungsspannung. Ich verwendete z.B. 
paralleles EEPROM 2816 rein als Codespeicher in der entsprechenden 
Schaltungsart, EPROM-Ersatz für den 2716. Allerdings mußte ein Adapter 
dazwischen, weil 2716 und 2816 sich in 3 Pins unterscheiden. Und da ist 
nur der Pin /PSEN des 8051 mit /OE und evtl. /CE des 2816 verbunden.

Aber ich habs gerade nachgelesen: Siemens schreibt im Handbuch für den 
80535, daß die Steuerleitungen ALE und /PSEN beim Reset Inputs mit sehr 
hochohmigem Pullup sind. In der Produktion werden diese beiden Pins für 
Tests benutzt. Für ein Schreiben ins EEPROM müßte aber dessen WR-Eingang 
auf Low liegen, und der ist in der Schaltung fest mit VCC verbunden. Ins 
EEPROM schreiben konnte man im Normalbetrieb also nicht, der sollte nur 
reiner Codespeicher sein.

Was ich meinte, ist eine Verpolung der Versorgungsspannung. Aber so, daß 
der Stein noch keinen Schaden leidet. Nun ja, und da waren schon mal 
alle 2048 Bytes auf einmal gelöscht, und ich durfte das Programm mittels 
EPROMMER neu brennen. Also unzuverlässig, die Sache. Es sei denn, man 
hat in seinem Gerät wirklich einen Verpolschutz drin. Im Normalbetrieb 
passierte nie was in der Art.

Früher war ich da mit Verpolungen und Überspannungen nicht so achtsam 
wie heute, das entwickelt sich erst allmählich. Aber gut so, sonst wären 
mir die Geschehnisse wiederum nicht aufgefallen.

Ob das bei integriertem EEPROM oder Flash in einem µC auch passieren 
kann, weiß ich nicht.

Meine ersten beiden Standard-8051 killte ich tatsächlich mit 
Überspannung, danach nie mehr was. Wenigstens hatte das noch einen 
positiven Effekt, ich konnte bei dieser Gelegenheit die stark heizenden 
NMOS-Typen gegen CMOS-Typen tauschen. Und die Verpolungen schadeten nie, 
weil meine Bastelnetzteile gar nicht leistungsfähig genug waren, 
vielleicht 500mA. So eine ältere Karte mit mehreren Chips drauf hält 
durchaus schon mal ein paar hundert mA Falschpolung aus, ohne daß die 
Bauteile gleich in den roten Bereich kommen.

Ich konnte nur nie genau aus machen, warum das EEPROM bei Falschpolung 
komplett löscht. Das wäre ja eine feine Schnell-Löschmethode. Aber im 
Datenblatt steht nichts über diese Betriebsart vollständige Falschpolung 
des gesamten Bausteins, nur die maximale negative Grenzspannung an einem 
Pin bei Normalbetrieb. Vermutlich werden im Chip Bereiche leitend, die 
die Speicherzellen betreffen, und im Normalfall sperren. Überdies wird 
bei Verpolung auch durch den Chip selbst die Spannung auf 2 
Diodenspannungen begrenzt. Deshalb entstehen auch bei höheren Strömen 
nicht so arge Verlustleistungen.

von Peter D. (peda)


Lesenswert?

Beim AVR muß man, wenn man den EEPROM oder Bootloader benutzen will, 
unbedingt das Brownout-Reset enablen!
Ansonsten kann es passieren, daß bei Unterspannung Flash oder 
EEPROM-Bereiche gelöscht werden.

Beim PIC wird es wohl ähnlich sein.


Peter

von andy (Gast)


Lesenswert?

Michael Skropski schrieb:
> Mich würde eher mal interessieren, ob er an den 5V hängt, dann kann ich
> dir nämlich sagen, woran es liegt ;) (siehe oben)
>
> Ich würde nicht gleich davon ausgehen, dass das Programm weg ist,
> sondern Hardware oder Softwareseitig ein Fehler ist.

Also muss ich das Ganze erst einmal mit einem Spannungsmesser 
überprüfen?!

Wo lege ich die Spannung an? Vdd?

Gruß, Andy

von andy (Gast)


Lesenswert?

Also, das Problem lag bis jetzt daran, dass ich beim Auslesen zwar eine 
Hex Datei ausgeben konnte,
allerdings waren dort überall "0"-en, was für mich in erster Linie 
bedeutet, dass der PIC leer ist. Dazu muss ich sagen, dass ich das Ganze 
über ICSP mit dem PICKIT 2 bzw. PICKIT 3 gemacht habe. Kann es daher 
sein, dass der Code dennoch drauf ist und man ihn mit einer anderen 
Methode auslesen kann? Ein Leseschutz ist drauf, komme ich evtl. anders 
an den Code?

von Maik W. (werner01)


Lesenswert?

könnte aber auch der watchdog sein, der den pic immer wieder resetet, 
weil außerhalb was nicht funzt....

von Spess53 (Gast)


Lesenswert?

Hi

>Also, das Problem lag bis jetzt daran, dass ich beim Auslesen zwar eine
>Hex Datei ausgeben konnte,
>allerdings waren dort überall "0"-en, was für mich in erster Linie
>bedeutet, dass der PIC leer ist.

Bei AVRs kann man bei gesetzten Leseschutz auch eine Hex-Datei 
erstellen. Nur steht dann Müll drin.

>Ein Leseschutz ist drauf,

Und was meinst du, wozu der gut ist?

>komme ich evtl. anders an den Code?

Vom Programmierer.

MfG Spess

von andy (Gast)


Lesenswert?

Nehmen wir mal an, der Watchdogtimer ist im PIC aktiviert. Was ist 
jetzt, wenn ein Leseschutz drauf ist und ich dennoch in der 
Konfiguration den WDT deaktiviere? Überschreibe ich den PIC dann, bzw. 
löscht sich dann das Programm?

von usuru (Gast)


Lesenswert?

hier liegt der Hund begraben:

> Also, das Problem lag bis jetzt daran, dass ich beim Auslesen zwar eine
> Hex Datei ausgeben konnte,
> allerdings waren dort überall "0"-en, was für mich in erster Linie
> bedeutet, dass der PIC leer ist. Dazu muss ich sagen, dass ich das Ganze
> über ICSP mit dem PICKIT 2 bzw. PICKIT 3 gemacht habe. Kann es daher
> sein, dass der Code dennoch drauf ist und man ihn mit einer anderen
> Methode auslesen kann? Ein Leseschutz ist drauf, komme ich evtl. anders
> an den Code?

Wenn ein PIC einen Leseschutz hat, dann kann man ihn nicht über ICSP 
auslesen, es werden immer Nullen ausgegeben (kann man einfach 
ausprobieren), das ist ja der Sinn eines Leseschutzes. Der Code wurde 
also nicht gelöscht, er kann wegen des Schutzes nur nicht von aussen 
gelesen werden.

Wenn der PIC nicht das tut, was er soll, ist er entweder falsch 
programmiert oder irgendeine äussere Bedingung ist falsch 
(Spannung/Brown-out, Watchdog, EMV, Block-C, offene Eingänge, etc).

> Nehmen wir mal an, der Watchdogtimer ist im PIC aktiviert. Was ist
> jetzt, wenn ein Leseschutz drauf ist und ich dennoch in der
> Konfiguration den WDT deaktiviere? Überschreibe ich den PIC dann, bzw.
> löscht sich dann das Programm?

Nö. Der WDT beeinflusst die Config-Flags nicht. Der WDT macht nur einen 
Reset, die Config-Flags bleiben, wie sie sind. Die Config-Flags können 
nur per ICSP-verändert werden.

von Chris B. (dekatz)


Lesenswert?

andy schrieb:
> Also, das Problem lag bis jetzt daran, dass ich beim Auslesen zwar eine
> Hex Datei ausgeben konnte,
> allerdings waren dort überall "0"-en, was für mich in erster Linie
> bedeutet, dass der PIC leer ist. Dazu muss ich sagen, dass ich das Ganze
> über ICSP mit dem PICKIT 2 bzw. PICKIT 3 gemacht habe. Kann es daher
> sein, dass der Code dennoch drauf ist und man ihn mit einer anderen
> Methode auslesen kann? Ein Leseschutz ist drauf, komme ich evtl. anders
> an den Code?

Wenn du "0"en ausliest dann sagt das nix aus ob der PIC leer oder 
Programmiert ist sondern das die "CodeProtection" gesetzt ist (PICkit 
User manual S.24)
Wenn in CONFIG6H auch noch WRTC gelöscht ist, können auch die CONFIG's 
via ICSP nicht verändert werden....da bleibt nur die Neuprogrammierung.
 (zum Beisiel beim 18F2450/55/ etc so)

von Andy (Gast)


Lesenswert?

>
> Nö. Der WDT beeinflusst die Config-Flags nicht. Der WDT macht nur einen
> Reset, die Config-Flags bleiben, wie sie sind. Die Config-Flags können
> nur per ICSP-verändert werden.

Danke für die Antworten erstmal. Freut mich sehr.

Welche config flags kann man z. B. Ändern, und ist es aus hardware sicht 
oder software gemeint?

von Wilhelm F. (Gast)


Lesenswert?

Andy schrieb:

> Welche config flags kann man z. B. Ändern, und ist es aus hardware sicht
> oder software gemeint?

Der Brounout-Detektor scheint mir sinnvoll, wie Peter Dannegger es schon 
beschrieb.

von holger (Gast)


Lesenswert?

>Welche config flags kann man z. B. Ändern, und ist es aus hardware sicht
>oder software gemeint?

Du kannst alle Config Bits ändern.
Wenn du die Bits für die Codeprotection änderst wird das Flash gelöscht.
Das wird nix mit dem auslesen des PICs und Softwareklau.

von usuru (Gast)


Lesenswert?

Der Brownout hat bei den PICs mit EPROM und/oder Flash nichts zu tun, 
das mag bei den AVRs anders sein. Brownout ist ja eigentlich nur bei 
Batterieversorgung interessant.

Was uns aber bisher vor allem fehlt, ist der komplette Schaltplan und 
der komplette Code, den kann er ja von seinem Kollegen bekommen. Erst 
dann kann man feststellen, wo es klemmt. Alles andere ist "Glaskugel".

von andy (Gast)


Lesenswert?

Also, nachdem ich den PIC auslese und mir die Configuration anzeigen 
lasse,
dann sieht man, dass der PIC Code Protected ist. Ich habe die Hex Datei 
exportiert und es sind überall "0", wie bereits erwähnt. Die Größe der 
Hex Datei ist 180 KB.

Gibt es die MÖglichkeit diese Datei umzuwandeln, sodass man den Code 
wenigstens lesen kann?

Gruß, Andy.

P.S.: Mittlerweile habe ich den PIC gelöscht. Wenn ich die 
"code-protected" Hex Datei nun in den PIC importiere, funktioniert 
leider nix mehr. Kann man da noch was machen?

von Chris B. (dekatz)


Lesenswert?

andy schrieb:
> ......Ich habe die Hex Datei
> exportiert und es sind überall "0", wie bereits erwähnt. Die Größe der
> Hex Datei ist 180 KB.
>
> Gibt es die MÖglichkeit diese Datei umzuwandeln, sodass man den Code
> wenigstens lesen kann?
>
> Gruß, Andy.
>
> P.S.: Mittlerweile habe ich den PIC gelöscht. Wenn ich die
> "code-protected" Hex Datei nun in den PIC importiere, funktioniert
> leider nix mehr. Kann man da noch was machen?

Nein - nur eine Software mit hellseherischen Fähigkeiten köntte aus 
einer Hexdatei voll "0" Code erzeugen bzw welche Sinn hätte eine CP 
wenn's so einfach wäre.

Was du machen kannst? Sourcecode besorgen, Compilieren und neu flashen.

von Wolfgang (Gast)


Lesenswert?

andy schrieb:
> Soweit ich weiß,  lässt sich ein EPROM Chip mittels UV-Licht löschen.
> Und bei meinem Chip 18F26J11 ist es so, dass es kein sog. Quarzfenster,
> wodurch sich der Chip löschen lässt, zu sehen ist.
>
> Korrigiert mich, wenn ich falsch liege.

Du liegst falsch. Das fehlende Fenster sagt nichts über die Art des 
Speichers. Aus Kostengründen gab es von den EPROM-PICs früher zwei 
Versionen: Die teure mit dem Quarzfenster für die Entwicklung und eine 
Version mit einem Billiggehäuse ohne Fenster, das sich genauso 
programmieren ließ, aber nicht wieder löschbar war (OTP-One Time 
Programmable)

von Peter D. (peda)


Lesenswert?

andy schrieb:
> P.S.: Mittlerweile habe ich den PIC gelöscht. Wenn ich die
> "code-protected" Hex Datei nun in den PIC importiere, funktioniert
> leider nix mehr.

Das ist doch der Sinn des Ausleseschutzes.

Nur ein völliger Ignorant hätte was anderes erwartet.


Peter

von Michael L. (michaelx)


Lesenswert?

Hallo Leute,

könntet ihr euch mal mit dem Geschwurbel und Herum-Theoretisieren über 
8051, EPROM, EEPROM, UV-Fensterle und die guten alten 1990er 
zurückhalten!? Das bringt doch nichts ...

Und den Thread-Starter würde ich mal bitten, in Zukunft die Antworten zu 
lesen (zur Wirkungsweise der Code-Protection) und seinserseits Fragen zu 
beantworten, insbesondere die einzig sinnvolle hier:

Michael Skropski schrieb:
> Doch wenn das wirklich ein PIC18F26J11 ist, hoffe ich, dass er nicht an:
>
> andy schrieb:
>> Ich kann nur widergeben, dass, sobald das Gerät unter Spannung (5 V)
>> steht,
>
> liegt.
>
> Wenn er an 5V ist, guck dir mal an, was unter "Operating Voltage Range"
> steht:
> http://www.microchip.com/wwwproducts/Devices.aspx?...

Wenn du/dein Kollege also eine Betriebsspannung von 5V an den 18F46J11 
legst, dann wäre das eine Erklärung für das Verhalten ...
Zitat Datenblatt: "Operating Voltage Range of 2.0V to 3.6V"

Zur Erklärung: Die PICs sind schon recht robust, und werden deshalb auch 
nicht sofort sterben, was dazu passen würde, dass das Gerät ja doch ein 
Weilchen funktioniert hat.

HTH



PS: Was heutzutage so alles studiert ... SCNR

von Michael S. (rbs_phoenix)


Lesenswert?

Ich frage mich, wo das Problem ist? Es ist doch umständlicher mit einer 
nicht realisierbaren Software aus einem Haufen Nullen, den 
Ursprünglichen Code rauszuholen, anstatt einfach die Software von deinem 
Kumpel/Bekannten zu besorgen.

Dann isses auch total egal, ob es Codeprotected ist, wenn du die 
Source-Hex hast. Genauso gut kannst du dir von ihm den Code in C oder 
ASM besorgen um darin nach fehlern zu guckenn und du kannst dir von ihm 
auch den Schaltplan holen, wo meines Erachtens ein Fehler am 
warscheinlichsten ist.

Wenn du das weiterhin ignorierst, wirst du hier nichts als dumme Sprüche 
ernten. Ohne Schaltplan, Ahnung, Infos und ggf ohne Softwarecode, kann 
man die Fehlersuche schon fast lassen.

Ich kann mir nur 3 Situationen vorstellen.

1. Du ignorierst aus irgendeinem Grund die Dinge mit der Spannung bzw 
Schaltplan und lässt dir somit garnicht helfen.

2. Du lügst, es ist garnicht von einem Bekannten sondern hast dir eine 
Geschichte ausgedacht um an die Info zu kommen, ob und wie man einen 
Codeprotrected- PIC auslesen kann. Da spricht dafür, dass du keinen 
Schaltplan und Code hast.

3. Du bist nur ein Troll, der bewusst auf nichts hört und Fragen 
mehrmals hintereinander stellt, die dazwischen schon immer beantwortet 
wurden um uns zu ärgern. In diesem Fall wirst du warscheinlich bald 
zurecht beleidigt und abgewiesen.

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.