Hallo PIC-Freaks! Versuche verzweifelt, eine HEX-Datei (Frequenznormal aus Elektor 5/6/2018) in den Microcontroller (16F1778) einzuprogrammieren. Der PIC wird einwandfrei erkannt, das Brennen funktioniert, aber VERIFY meldet einen Fehler, ein READ bringt mir lauter Nullen. Egal was ich mache, der PICKit schreibt mir immer lauter Nullen in den MIC-Speicher. Zumindest sieht es so aus. Wer weiss rat, was mache ich falsch????? Danke im voraus! eddie207 Posts: 2 Joined: Thu Sep 06, 2018 3:09 pm
Servus, ich tippe mal darauf, daß Du die Code Protection aktiviert hast! Deren Sinn ist es ja gerade, das Auslesen zu verhindern.
Hallo Thomas! Ich arbeite mit MPLAB X IPE V4.2 Da ich neu auf dem Gebiet bin, kommt die Frage, wo ich das einstelle?
Alfred M. schrieb: > Hallo Thomas! > > Ich arbeite mit MPLAB X IPE V4.2 > Da ich neu auf dem Gebiet bin, kommt die Frage, wo ich das einstelle? In der Regel wird der Wert für die Config-Register im Quelltext eingestellt und beim Compilieren werden die Daten dann ins Hexfile eingebaut. Neben der Code-Protection werden dort auch Dinge wie Oszillator-Configuration, Watchdog, Benutzung des Reset-Pins (als Reset- oder Port-Eingang) usw. eingestellt. Im Asm-Quelltext steht da z.B. sowas: __config _CONFIG1, _FOSC_INTOSC & _WDTE_SWDTEN & _PWRTE_ON & _MCLRE_ON & _CP_OFF In C-Quelltext i.d.R. als: #pragma config FOSC = INTOSC // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin) #pragma config WDTE = OFF // Watchdog Timer Enable (WDT disabled) #pragma config PWRTE = ON // Power-up Timer Enable (PWRT enabled) #pragma config MCLRE = OFF // MCLR Pin Function Select (MCLR/VPP pin function is digital input) #pragma config CP = OFF // Flash Program Memory Code Protection (Program memory code protection is disabled) ... Die IPE benutze ich nicht, daher kann ich nicht sagen, ob bzw. wo man dort die Config-Register auch abweichend vom Hex-File einstellen kann.
Alfred M. schrieb: > Wer weiss rat, was mache ich falsch????? Nur eine Idee: Schau mal in der IPE unter Settings->Advanced Mode. Vielleicht findest du dort etwas mit dem Thema "code protection". Ich hab im Moment keinen Programmer hier, so daß ich nicht testen kann.
MPLAB X: Windows/PIC Memory Views/Configuration Bits Damit kannst du dir das alles Generieren lassen. Copy&Past feddisch.
Teo D. schrieb: > MPLAB X: Windows/PIC Memory Views/Configuration Bits > Damit kannst du dir das alles Generieren lassen. Copy&Past feddisch. Er hat nur ein Hex-File und will das mit der IPE flashen. Ohne Source nützt ihm die IDE nix. --feddisch-- Alfred M. schrieb: > eine HEX-Datei Alfred M. schrieb: > Ich arbeite mit MPLAB X IPE V4.2
Hallo eddie207, ich hab mal nachgeschaut, was man mit der IPE machen kann. Wie vermutet, muß man dazu in den Advanced Mode gehen. Dann kannst du unter 'Operate' bei 'Device and Tool Selection' auf den Button 'Read' gehen. Vorher natürlich den richtigen µC und den richtigen Programmer auswählen. Nach dem Auslesen kannst du dann unten die 'Configuration Bits' sehen. Dort kannst du sie auch verändern. In deinem Fall wären das 'GWRP', 'GSS' und 'GSSK', die du auf 'OFF' stellen solltest. Anschließend kannst du mit dem Button 'Program' das ganze wieder in den µC schreiben. Alternativ inm Feld 'Hex File' das File, welches du brennen willst auswählen, dann unten die 'Configurations Bits' verändern und dann mit dem Button 'Program' das ganze in den µC schreiben. Versuchs mal und berichte, ob es geklappt hat, ok? Viel Erfolg! Erwin
Anscheinend muss man bei IPE in den Advanced Mode gehen, um im Menü Window/Target Memory Views etwas auswählen zu können. Dann kann man wohl auch Änderungen vornehmen.
P.S.: Einen Punkt hab ich noch vergessen. Damit du unten neben 'Output IPE' auch die 'Configuration Bits' siehst, mußt du oben in der Menuezeile unter 'Window' den Punkt 'Target Memory Views' und dann die 'Configuration Bits' auswählen. Wenn du das gemacht hast, kannst du entweder (wie oben beschrieben) das Hexfile auswählen, die Configuration Bits verändern und wieder in den µC schreiben - oder du kannst den Inhalt des µC auslesen, die Bits verändern und das ganze wieder reinschreiben. Wenn das Auslesen nicht klappt (weil das durch die Bits verhindert wird) bleibt dir nur, das Hexfile zu laden, die Bits verändern und wieder reinschreiben... Erwin
Das ist doch alles komplett unnötig. Nach dem Programmmieren wird automatisch ein VERIFY durchgeführt. Der Ablauf nach klicken auf [Program] ist: - löschen - programmieren - verify Das wird auch im Ausgabefenster so angezeigt: "Programming/Verify complete" So lange sich der PIC noch im Programmiermodus befindet kann der Speicher ausgelesen werden. Auch bei aktiviertem Leseschutz. Der Leseschutz ist erst nach Reset aktiv. Ein zusätzliches VERIFY ist nicht nötig, und mit aktiven Leseschutz auch nicht möglich. Gruß John
John schrieb: > So lange sich der PIC noch im Programmiermodus befindet kann der > Speicher ausgelesen werden. Auch bei aktiviertem Leseschutz. Der > Leseschutz ist erst nach Reset aktiv. Warum schreibt dann der TO: Alfred M. schrieb: > Der PIC wird einwandfrei erkannt, das Brennen funktioniert, aber VERIFY > meldet einen Fehler, ein READ bringt mir lauter Nullen. Wenn das Auslesen VOR dem Reset funktionieren würde, käme doch bei ihm kein Fehler. Und er würde keine Nullen lesen, sondern den gerade geflashten Inhalt. Oder verstehe ich deine Worte falsch? Berichtige mich bitte, wenn ich etws falsch verstanden habe.
P.S.: Jetzt hab ich's geschnallt :-) John schrieb: > Ein zusätzliches VERIFY ist nicht nötig, und mit aktiven Leseschutz auch > nicht möglich. Deshalb kommt beim Verify ein Fehler. Aber mit der IPE kann er auf jeden Fall das Hexfile einlesen, dann die Configuration Bits verändern und das ganze auf den µC schreiben. Und dann klappt auch das Verify und beim Auslesen sieht er den richtigen Inhalt.
Erwin D. schrieb: > Wenn das Auslesen VOR dem Reset funktionieren würde, käme doch bei ihm > kein Fehler. Und er würde keine Nullen lesen, sondern den gerade > geflashten Inhalt. > Oder verstehe ich deine Worte falsch? Berichtige mich bitte, wenn ich > etws falsch verstanden habe. Nach Programmieren und Verify wird automatisch eine Reset durchgeführt.
John schrieb: > So lange sich der PIC noch im Programmiermodus befindet kann der > Speicher ausgelesen werden. Auch bei aktiviertem Leseschutz. Der > Leseschutz ist erst nach Reset aktiv. Habe ich auch nicht gewusst, aber du hast recht. (verwende normaler Weise weder IPE noch Code Protection ;-) Der Thread hat mir aber trotzdem neue Erkenntnisse gebracht, weil ich jetzt weiß, dass ich in IPE einfacher Änderungen machen kann als zum Beispiel in notepadd++, weil ich mich nicht um die Checksummen kümmern muss. Volker S. schrieb: > BTW: Weiß jemand wie das mit notepadd++ geht?
Hallo PIC-Gemeinde! Zunächst mal vielen Dank für die rege Beteiligung hier!!! Problem ist erkannt (hoffentlich!?) und gelöst! Also ich habe bei den Configuration-Bits den Parameter CP (Program Memory Code Protection) gefunden. Den hab ich auf OFF gestellt, und so kann ich den HEX-Code auch wieder auslesen!!!
Alfred M. schrieb: > Hallo PIC-Gemeinde! > > Zunächst mal vielen Dank für die rege Beteiligung hier!!! > Problem ist erkannt (hoffentlich!?) und gelöst! > Also ich habe bei den Configuration-Bits den Parameter CP (Program > Memory Code Protection) gefunden. Den hab ich auf OFF gestellt, und so > kann ich den HEX-Code auch wieder auslesen!!! Stimmt, beim 16Fxxx heißt das Bit CP. Ich hab hier einen dsPIC33E auf dem Tisch, da heißt alles ein wenig anders. Deshalb hatte ich dir vorhin falsche Bit-Bezeichnungen genannt... Freut mich, Glückwunsch :-)
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.