security bits im PIC nicht zurücksetzbar

OP #1542264
Hallo,

kennt jemand folgendes Problem?

Gestern habe ich die "Disable Code Protection" Sequenz (gemäss der 
Application Note "PIC16FF62X Eeprom Memory Programming Specification") 
mal mit knapp unter 12V ausgeführt und seitdem lassen sich im 
Configuration Word die Security Bits nicht mehr zurücksetzen - sprich 
Programmieren geht nimmer mehr.

Auch mit Vpp 13V an MCLR bleiben die Bits im Configuration Word auf 
0x02B9 stehen.

Ich bin ratlos - hat jemand eine Ahnung?

Gruß,

Daniel
OP
Nachtrag:
Dass das Configuration Word 0x02B9 ist lag an einem Bug im 
Brennerprogramm, der statt 0x3Fxx eine 0x0 ins Configuration Word 
geflasht hat.

Hat jemand schon mal Probleme beim Zurücksetzen der Security Bits auf 1 
gehabt?
Die Schritte unter "3.3 Disabling Code Protection" führst du doch nicht 
selbst aus, dass muss die Brenn-SW machen. - Oder schreibst du die grad 
selbst? Wenn nicht:
Es wäre ja möglich, dass deine Brenn-SW diese Sequenz überhaupt nicht 
beherrscht, sonder immer nur ein einfaches Bulk Erase durchführt. 
Probiere doch mal ein anderes Programm.
OP
Die Brennsoftware habe ich selbst geschrieben und führt die in der 
Spezifikation beschriebene Sequenz aus.

Was ich auch bemerkt habe:
Die Sequenz setzt das Configuration Word auf 0x0200 zurück.
Wenn man die Sequenz aber so abändert, dass das erste 
LoadConfigurationCommand statt 0x0 z.B. 0x3FB9 lädt, so ergibt ein 
Auslesen des Configuration Words nach der Sequenz 0x02B9 (d.h. alle Bits 
ausser die Codeprotection Bits werden gesetzt).
Weiterhin:
Die Bits in den ID Locations lassen sich von 1 auf 0 setzen (beim 
Versuch das Configuration Memory zu programmieren gemäss Figure 3-4 in 
der Spezifikation), aber ein Zurücksetzen der ID Locations auf 0x3FFF 
ist nicht mehr möglich mit der "Disable Code Protection" Sequenz.

So ganz verstehe ich das nicht, funktioniert hat das ganze ja schon 
vorher - bis zu dem Punkt wo das Configuration Word versehentlich auf 0 
programmiert wurde.
Das Zurücksetzen der Protection Bits auf 1 macht mir Probleme...

Viele Grüße,

Daniel
OP
Das wird mit meinem Brenner leider nicht gehen, den habe ich auch selbst 
gebaut (serielle Schnittstelle -> MAX232 -> PIC16F628 -> TargetPic (hier 
auch PIC16F628).
Ich werde mir aber mal den Code von anderen DIY-Brennern mal anschauen, 
vielleicht gibt es ja doch einen undokumentierten Unterschied zur 
Spezifikation (den Abschnitt "Disable Code Protection" betreffend).
OP
Beim Vergleich mit den Sourcen der anderen Brenner ist mir aufgefallen, 
dass die Sequenz für "Disable Code Protection" oftmals voneinander 
abweicht.
Wie hat denn die richtige Sequenz für den PIC16F628 auszusehen?

Wenn man sich den DATA-pin anschaut müsste man ja laut Spezifikation 
folgendes sehen (abgesehen vom timing):

- 000000 (6 Bits für load configuration command)
- 0000000000000000 (16 Bits data für das load configuration command)
- 011000 ( 6 Bits für increment command)
- 011000 "
- 011000 "
- 011000 "
- 011000 "
- 011000 "
- 011000 "
- 100000 ( 6 Bits für bulk erase setup 1 command)
- 0111111111111110 (16 bits dummy data für bulk erase setup 1 command)
- 111000 ( 6 Bits für bulk erase setup 2 command)
- 0111111111111110 (16 bits dummy data für bulk erase setup 2 command)
- 000100 ( 6 Bits für begin erase/programming cycle command)
- 0111111111111110 (16 bits dummy data für begin erase/programming cycle 
command)
- 100000 ( 6 Bits für bulk erase setup 1 command)
- 0111111111111110 (16 bits dummy data für bulk erase setup 1 command)
- 111000 ( 6 Bits für bulk erase setup 2 command)
- 0111111111111110 (16 bits dummy data für bulk erase setup 2 command)

Bei so manch anderer Brennersoftware wird am Anfang statt 0x0000 eine 
0x3FFF für das load configuration command als data gesendet.
Und meist werden bei den bulk erase setup X commands die 16 bits dummy 
data auch weggelassen.

Hab auch schon diese Kombinationen leider erfolglos durchgetestet...
OP
Hi Michael,

letztenendes wegen dem Lerneffekt (Preislich macht das mittlerweile auch 
keinen Sinn mehr). Den ersten PIC (der auf dem Brenner den MAX232 mit 
dem Target-Pic verbindet) musste ich über eine Zwischenlösung brennen 
(Beitrag "PIC16F628 kaputt?").

Für den PIC16F628 funktioniert das Brennen nun, bis auf das "Disable 
Code Protection", wo ich mir noch uneins mit dem Ablauf aus der 
Spezifikation bin.

Viele Grüße,

Daniel
OP
Von microhip habe ich leider nur folgende Antwort erhalten:
"Unfortunatley Microchip will not be able to assist you with the 
debugging of your hardware or software issues related to ICSP.  However, 
what I can tell you is that a bulk erase is needed to reset the code 
protection bits and this must be done at a programming voltage of 4.5V 
or greater.  As a sanity check you may want to connect a programmer to 
the device and test the ability to enable and disable the code 
protection bits via ICSP."

Hat jemand bei sich Erfolg mit dem Setzen und Zurücksetzen der Security 
Bits beim PIC16F628 per Do-It-Your-Self-Brenner?
Wenn ja, welchen Brenner und welche Software verwendet Ihr?
Hallo Daniel,

ich kann dir da nicht weiterhelfen.
Mein Tipp: Besorge/baue dir einen einfachen Programmer für COM oder LPT 
und passende SW dazu. Dann kannst du leicht nachprüfen, was deine 
Prog-SW geschrieben hat, und solche Fehler wie hier angefragt leicht 
beheben.
Persönliche Seite
Hallo Daniel.

>  However,
> what I can tell you is that a bulk erase is needed to reset the code
> protection bits and this must be done at a programming voltage of 4.5V
> or greater.

Das ist doch mal ne Aussage, oder? Macht ja auch einen gewissen 
Sinn.....
Wenn man nur das bit zurücksetzt, wäre der zu schützende Code ja nicht 
mehr geschützt.
Bei "bulk erase" kannst Du es wieder resetten, wobei der Code aber mit 
gelöscht wird. Somit ist er vor unbefugtem Auslesen und Kopieren 
gesichert.
Jede andere Funktionalität würde ich als Bug ansehen. ;-)

> Wenn ja, welchen Brenner und welche Software verwendet Ihr?

Ich persönlich habe das Sicherheitsbit nie verwendet.....

Mit freundlichem Gruß: Bernd Wiebus alias dl1eic

http://www.dl0dg.de

Selbsterkenntnis ist der erste Schritt zur Depression.
Jeder echte Wettbewerb ist ruinös. Darum beruht jede funktionierende
Wirtschaft auf Schiebung.
OP
Hallo,

vielen Dank für Eure Antworten!!

@Bernd: Ja, das war mir bekannt. Aber bei meinem Brenner haut das leider 
auch nicht hin (bzw. vielleicht ist der PIC ja kaputt).

Ggf. kann ich irgendwann mal mit einem anderen Brenner den PIC wieder 
hinbiegen und vergleichen wo die Unterschiede zu meinem Brenner liegen.
Ich würde das Thema nun erst mal auf Eis legen.

Viele Grüße,

Daniel
Hier ist noch ein relativ einfacher Programmer für den langsam 
aussterbenden Parallelport.

http://www.rotgradpsi.de/mc/picprog/picprog.gif

Leider war die SW von Martin Claußen nur für DOS, aber ich konnte diese 
SW entsprechend konfigurieren:
http://freenet-homepage.de/dl4yhf/winpicpr.html

Wolfgang Büschner hat die INI-Datei mit in sein Archiv aufgenommen, 
einfach selbstdefiniertes Interface am LPT und dazu Clausen_PICProgOnLpt 
auswählen, dann sollte es funktionieren.

Auszuführen ist WinPIC mit:
1
runas /USER:Administrator /env WinPic.exe %1
wegen der nötigen Rechte für HW-Zugriff.

HTH
OP
Hallo,

mittlerweile hab ich mir den Wisp648 zusammengebaut und damit hat das 
Löschen vom PIC16F628 Config Word nun funktioniert!
Es liegt also an meinem Brenner!

Durch Codereview und Vergleich hab ich zwar keinen signifikanten 
Unterschied zwischen den beiden Brennern feststellen können, allerdings 
taktet mein Brenner den Clock-Pin vom Target langsamer als der Wisp - 
also ggf. ein Timingproblem, das ich mir per Oszi anschauen könnte, 
aber, da ich jetzt einen Wisp habe, erübrigt sich die Problemsuche 
(DIY-Brenner in die Ecke bzw. als Backup für den Wisp-PIC16F648a falls 
der mal kaputt geht).

Danke nochmals für Eure Hilfe!

Viele Grüße,

Daniel

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.