PIC-Speicherproblem

Hallo,

ich habe hier einen PIC16F84A-20/P Microcontroller und einen selbstgebauten Programmierer (den hier: http://www.janson-soft.de/pic/pic-dl.htm). Ich hab ihn sorgfältig gebaut (die Transistoren von unten sind auch richtigrum drin) und nochmal alles nachkontrolliert, er scheint zu gehen und ist laut Beschreibung auch zu meinem PIC kompatibel. Ich benutze die unten auf der Seite verlinkte Software IC-Prog. Auch die scheint zu funktionieren.

Problem dabei: Der PIC interessiert sich keinen Meter für den Kram, den ich reinschreiben will. Wenn ich ihn programmiere bekomme ich bei der anschließenden EEPROM-Prüfung die Fehlermeldung, dass die Prüfung an Adresse 0000h fehlgeschlagen sei. Der Test der Programmdaten produziert aber keine Fehler. Das tritt auch dann auf, wenn ich überhaupt nichts in den EEPROM schreibe. Wenn ich hinterher die Daten wieder auslese ist der komplette Speicher leer (Flash, EEPROM, alles). Code Protection hab ich ausgeschaltet, aber das bringt nix. Beim Löschen oder prüfen des „leeren“ PICs gibt es keine Fehler.

Was mache ich da falsch? Wie krieg ich meine Programme in den PIC rein? Könnte der Chip vielleicht kaputt sein und wie kann ich das rausfinden? Seine Beinchen sehen schon so merkwürdig oxidiert aus, da ist so eine matte Schicht drauf. Als ob er bei Conrad schon ein paar Monate bis Jahre in der Schublade gelegen hätte.

mfg
MB

Hallo Markus,

hast Du das Programmiergerät an einem PC oder an einen Laptop angeschlossen?

Der PIC braucht nämlich eine Programmierspannung von 12 Volt, und die kann die serielle Schnittstelle eines Laptop nicht zur Verfügung stellen (es sind meist einige Volt weniger) und dann geht es nicht. Dann brauchst Du doch eine Extra-Spannungsversorgung für diese 12 Volt.

Könnte der Chip vielleicht kaputt sein und wie kann
ich das rausfinden? Seine Beinchen sehen schon so merkwürdig
oxidiert aus, da ist so eine matte Schicht drauf. Als ob er
bei Conrad schon ein paar Monate bis Jahre in der Schublade
gelegen hätte.

Nein, glaube ich nicht, und wie lange das IC irgendwo gelegen hat, ist egal.

Grüße,

I.

Hallo,

hast Du das Programmiergerät an einem PC oder an einen Laptop
angeschlossen?

PC, Mainboard von letztem Jahr, ein ASUS K8N4-E Deluxe. Ich hoffe, dass man da nicht irgendwie die Spannung gekürzt hat, so wie es bei neueren Parallelports der Fall ist?

Der PIC braucht nämlich eine Programmierspannung von 12 Volt,
und die kann die serielle Schnittstelle eines Laptop nicht zur
Verfügung stellen (es sind meist einige Volt weniger) und dann
geht es nicht. Dann brauchst Du doch eine
Extra-Spannungsversorgung für diese 12 Volt.

Was mir so auffällt: Der Autor der Seite vom Programmer schreibt, er hätte da jetzt was verbunden, so dass man auch Controller mit LVP programmieren könne. Kann man vielleicht NUR noch die programmieren jetzt? :smile:

Könnte der Chip vielleicht kaputt sein und wie kann
ich das rausfinden? Seine Beinchen sehen schon so merkwürdig
oxidiert aus, da ist so eine matte Schicht drauf. Als ob er
bei Conrad schon ein paar Monate bis Jahre in der Schublade
gelegen hätte.

Nein, glaube ich nicht, und wie lange das IC irgendwo gelegen
hat, ist egal.

Ich dacht nur, wer bekäm vielleicht keinen Kontakt mehr, weil die Oxidschicht (oder was es auch ist) da drauf isolierend wirkt…

Danke schonmal, ich überprüfe mal die Spannung. An 12V werde ich mir ja mit meinem Voltmeter nicht gerade den Schock meines Lebens holen.

mfg
MB

Spannungsmessung
Hallo,

Danke schonmal, ich überprüfe mal die Spannung. An 12V werde
ich mir ja mit meinem Voltmeter nicht gerade den Schock meines
Lebens holen.

ich hab zwischen den Pins 5 (Vss) und 14 (Vdd) gemessen, stimmt das (das ist mein erster PIC, man merkt es sicher kaum ^^)?

Messergebnis: 4,5 bis 5 Volt. Erinnert mich etwas an LV-Programmierung. Sollte ich mal versuchen, die „Verbesserung“ des Entwicklers meines Brenners rückgängig zu machen und die Originalschaltung von JDM (mehr oder weniger) wieder herzustellen?

mfg
MB

Hallo Markus,

die 5 Volt zwischen Vdd und Vss stimmen (Zenerdiode D1 5.1 Volt).

Der PIC wird in den Programmiermodus gebracht, indem an Pin 4 (-MCLR)
12 - 14 Volt gelegt werden (Zenerdioden D1 und D2 in Serie, 5.1 und 8.2 Volt, Q2 leitet). Also wenn Du zwischen Pin4 und Pin5 während des Programmiervorgangs diese Spannung mißt, müßte es passen, sind es weniger als 12 Volt, dann funktioniert das Programmieren nicht.

Wie leuchten die LEDs?

Wenn zwischen Vdd und Vss 5 Volt sind, leuchtet LED3 (grün).
An Pin 12 (RB6) kommen Clock-Impulse von Pin 7 des SUB-D-Steckers, und da müßte die gelbe LED2 leuchten.
Und wenn Pin4 unter Spannung steht (Programmiermodus), leuchtet die rote LED1.

Wenn die LEDs nicht so leuchten, dann muß irgendein Fehler im Aufbau sein.

Hast Du z. B. die Dioden richtig gepolt eingelötet? Und die beiden Elkos?

Sollte ich mal versuchen, die
„Verbesserung“ des Entwicklers meines Brenners rückgängig zu
machen und die Originalschaltung von JDM (mehr oder weniger)
wieder herzustellen?

Versuch lieber vorher, die anderen Fehlerquellen (s. o.) auszuschließen), man kann zwar nie wissen, aber ich würde doch davon ausgehen, daß der Entwickler seine Schaltung ausreichend getestet hat. Als letzte Möglichkeit vielleicht. Und dann auch präzise und nicht „mehr oder weniger“. Mir ist es allerdings schon öfters passiert, daß ich einen Fehler gesucht und gesucht habe… und dann war es etwas ganz Banales.

Informationen darüber, wie der Programmiervorgang funktioniert, findest Du auf http://www.microchip.com, dort Dokumentsuche nach DS30262E (PIC16F8X Programming Specification).

Grüße,

I.

Hallo,

die 5 Volt zwischen Vdd und Vss stimmen (Zenerdiode D1 5.1
Volt).

gut :smile:

Der PIC wird in den Programmiermodus gebracht, indem an Pin 4
(-MCLR)
12 - 14 Volt gelegt werden (Zenerdioden D1 und D2 in Serie,
5.1 und 8.2 Volt, Q2 leitet). Also wenn Du zwischen Pin4 und
Pin5 während des Programmiervorgangs diese Spannung mißt,
müßte es passen, sind es weniger als 12 Volt, dann
funktioniert das Programmieren nicht.

Zwischen diesen Pins komme ich auf 12V.

Wie leuchten die LEDs?

Wenn zwischen Vdd und Vss 5 Volt sind, leuchtet LED3 (grün).
An Pin 12 (RB6) kommen Clock-Impulse von Pin 7 des
SUB-D-Steckers, und da müßte die gelbe LED2 leuchten.
Und wenn Pin4 unter Spannung steht (Programmiermodus),
leuchtet die rote LED1.

Die grüne leuchtet dauernd, solange der Brenner angeschlossen ist. Beim Brennen geht dann auch die rote an und die Gelbe blink, allerdings unregelmäßig bzw. regelmäßig, aber mit „Löchern“ drin. Bin mir da nicht ganz sicher ^^. Kurz bevor die gelbe an geht geht außerdem immer die grüne aus.

Seit gerade eben leuchtet aber auch die Rote dauernd, das war bis gestern nicht. Ich hoffe, ich hab nicht aus versehen mit den Voltmeterpins was kurzgeschlossen.

Hast Du z. B. die Dioden richtig gepolt eingelötet? Und die
beiden Elkos?

Ja, ich hab das ganze sorgfältig gebaut und bin außerdem den gesamten SChaltplan noch zweimal durchgegangen. Absolute Übereinstimmung.

Sollte ich mal versuchen, die
„Verbesserung“ des Entwicklers meines Brenners rückgängig zu
machen und die Originalschaltung von JDM (mehr oder weniger)
wieder herzustellen?

Informationen darüber, wie der Programmiervorgang
funktioniert, findest Du auf http://www.microchip.com, dort
Dokumentsuche nach DS30262E (PIC16F8X Programming
Specification).

Ein eigenes Dokument? Und ich wundere mich, warum in den Spezifikationen von dem Chip nix darüber steht…

mfg
MB

Hallo Markus,

Zwischen diesen Pins komme ich auf 12V.

Die grüne leuchtet dauernd, solange der Brenner angeschlossen
ist. Beim Brennen geht dann auch die rote an und die Gelbe
blink, allerdings unregelmäßig bzw. regelmäßig, aber mit
„Löchern“ drin. Bin mir da nicht ganz sicher ^^. Kurz bevor
die gelbe an geht geht außerdem immer die grüne aus.

dann sollte es eigentlich in Ordnung sein. Die gelbe LED leuchtet nur, wenn Daten übertragen werden. D. h., wenn Clock-Impulse kommen, mit den Clockimpulsen werden die Daten-Worte bitweise in den PIC (Anschluß RB7) „hineingeschoben“. Daher ist klar, daß die gelbe LED mit „Löchern“ brennt (also nur, wenn die Software gerade Daten liefert).

Seit gerade eben leuchtet aber auch die Rote dauernd, das war
bis gestern nicht. Ich hoffe, ich hab nicht aus versehen mit
den Voltmeterpins was kurzgeschlossen.

Du mußt aufpassen. Allerdings gilt die serielle Schnittstelle als robust, und ich glaube nicht, daß da was kaputt ist (es kommen max. etwa 10 mA vor). Eventuell Neustart versuchen.

Wenn die Platine ok ist (Lötstellen ok? Unerwünschte Lötbrücken? - auch eine mögliche Fehlerquelle), fällt mir nur noch ein:

Überprüf mal die Software-Einstellungen. Und wenn Du die Einstellungen des PIC ausliest: wie ist das Configuration-Word vom PIC eingestellt?

Ein eigenes Dokument? Und ich wundere mich, warum in den
Spezifikationen von dem Chip nix darüber steht…

Das machen die Herstellerfirmen mit den Datenblättern unterschiedlich. ATMEL z. B. beschreibt es in den Datenblättern, wie ihre Mikrocontroller zu programmieren sind. Microchip hat dafür eigene Dokumente.

Grüße,

I.

Hallo,

Seit gerade eben leuchtet aber auch die Rote dauernd, das war
bis gestern nicht. Ich hoffe, ich hab nicht aus versehen mit
den Voltmeterpins was kurzgeschlossen.

Du mußt aufpassen. Allerdings gilt die serielle Schnittstelle
als robust, und ich glaube nicht, daß da was kaputt ist (es
kommen max. etwa 10 mA vor). Eventuell Neustart versuchen.

Ok, ein Computerneustart hat mal wieder wunder gewirkt, die rote LED is wieder aus (solange nichts programmiert wird).

Wenn die Platine ok ist (Lötstellen ok? Unerwünschte
Lötbrücken? - auch eine mögliche Fehlerquelle), fällt mir nur
noch ein:

Nur IC-Sockel- und SubD-Stecker-Buchsen hab ich nicht überprüft, aber ich gehe al einfach davon aus, dass die zu PIC bzw. Computer guten Kontakt haben.

Überprüf mal die Software-Einstellungen. Und wenn Du die
Einstellungen des PIC ausliest: wie ist das Configuration-Word
vom PIC eingestellt?

Das Konf.-Wort ist laut IC-Prog „3FFFh“. Lässt sich übrigens ebenfalls nicht ändern, wenn ich die Optionen beim Brennen ändere wird es zwar als geändert angezeigt, beim nächsten Auslesen des Chips findet er aber prompt wieder den alten Wert.

mfg
MB

Hallo Markus,

3FFF klingt plausibel für das Configuration Word (bedeutet Code Protection off, Power up Timer nein, Watchdog Timer ja, RC-Oscillator).

Du kannst noch versuchen, die Device Id auszulesen. Für den PIC16F84A lautet dieses binär 00 0101 011 X XXXX, also hex. 056X oder 057X (X kann beliebig sein). Steht alles im DS30262E.

Wenn Du einen passenden Wert lesen kannst, dann funktioniert zumindest das Lesen (denn 3FFFs kannst Du vermutlich auch dann auslesen, wenn gar kein PIC drin steckt).

Hat die Software sonst noch irgendwelche Einstellungen? --> Probieren.

Wenn nichts hilft, kann ich Dir nur noch raten, ein zweites Exemplar des PIC zu kaufen und es mit diesem zu versuchen.

Noch eine Fehlermöglickeit: hast Du den PIC eh nicht verkehrt reingesteckt? Solche banalen Fehler sind die lästigsten, weil man an sie meist nicht denkt.

Grüße,

I.

Hallo,

3FFF klingt plausibel für das Configuration Word (bedeutet
Code Protection off, Power up Timer nein, Watchdog Timer ja,
RC-Oscillator).

genau. Das müssten die Standardeinstellungen oder sowas in der Art sein.

Ich hab an der Platine jetzt auch nochmal jedes einzelne Teil kontrolliert; alles funktioniert noch, nichts angebrannt, nichts durchgebrannt.

Du kannst noch versuchen, die Device Id auszulesen. Für den
PIC16F84A lautet dieses binär 00 0101 011 X XXXX, also hex.
056X oder 057X (X kann beliebig sein). Steht alles im
DS30262E.

Wo soll diese Adresse 2006h denn sein? Der Programmspeicher geht doch nur bis 3FF oder irgendwo in der Gegend. und der EEPROM ist noch kleiner. naja wo auch immer, ich hab alle verfügbaren Einstellungen getestet, mit keiner kriege ich was anderes außer 3FFF.

Hat die Software sonst noch irgendwelche Einstellungen? -->
Probieren.

Bringt nix, alles probiert.

Wenn nichts hilft, kann ich Dir nur noch raten, ein zweites
Exemplar des PIC zu kaufen und es mit diesem zu versuchen.

Noch einen? Mh. Der war teuer, dafür dass er (vorerst) nur zum Spielen gedacht ist :smile:

Noch eine Fehlermöglickeit: hast Du den PIC eh nicht verkehrt
reingesteckt? Solche banalen Fehler sind die lästigsten, weil
man an sie meist nicht denkt.

Nein, steckt richtigrum. Leider, ich wollt das wärs gewesen :wink:

Ich hab ihn auch inzwischen mehrmals rausgenommen und wieder in die Fassung gesteckt, dabei wär mir das sicher aufgefallen.

Ich könnte den Brenner nochmal bauen, in der Hoffnung, irgendeinen Fehler daran doch zu übersehen. Oder einen anderen…

mfg
MB

Hi,
ich hatte vor langer Zeit ein ähnliches Problem.
Hilfe hat dann geschaffen: einfach einen Widerstand (bei mir: 6,8k) von MCLR nach +5V.
Damit arbeite ich jetzt schon Jahre (>5…more) absolut fehlerfrei.

Muss aber gestehen, ich arbeite mit dem Gerät von Sprut.
Aber das sollte ja eigentlich keinen Einfluss haben.

Versuch macht klug!

Halt die Ohren steif!

Kalle

Hallo,

ich hatte vor langer Zeit ein ähnliches Problem.
Hilfe hat dann geschaffen: einfach einen Widerstand (bei mir:
6,8k) von MCLR nach +5V.

das probier ich mal, letzter Versuch :smile:

Muss aber gestehen, ich arbeite mit dem Gerät von Sprut.
Aber das sollte ja eigentlich keinen Einfluss haben.

Spruts Brenner5 wollte ich eigentlich auch bauen, aber die Tatsache, dass der andere nur halb so teuer und für den Seriellen Port (bin zu faul den Drucker immer abzumachen…) war hat mich dann umgestimmt :frowning:

Immerhin ich hab eins gelernt… nicht immer billig bauen ^^

mfg
MB