PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JDM-Brenner schreibt 16F870 zur Hälfte



Christoph_
12.02.2005, 20:36
Hallöchen,

habe einen JDM-Brenner und benutze IC-Prog 1.05D. Einen Pic 16F84 kann ich damit wunderbar schreiben. Nun möchte ich einen Pic 16F870 beschreiben und schließe MCLRquer, RB7/PGD und RB6/PGC sowie 5V Versorgungsspannung an den größeren Kontroller. Außerdem stelle ich natürlich alles auf den 870 ein und benutze ein Programm für den selben. Nach dem Brennen sehe ich jedoch beim Wiederauslesen, dass die EEProm-Daten alle auf 00 stehen (was eine Fehlermeldung hervorruft), der Programm-Kode wohl dennoch richtig geschrieben wurde. Das Programm läuft dennoch nicht.

Man könnte vermuten, das IC sei kaputt. Aber bisher hatte ich noch nie einen kaputten Pic eingekauft...

Hat jemand eine Idee?
Viele Grüße, Christoph

Bitte in Zukunft kein Datum angeben. MfG stegr

mcs
13.02.2005, 09:12
hast du vielleicht ne testversion von deinem programm laufen, die die maximale größe der progs runtersetzt?
ich entneheme deinem post dass du mit der brennsoftware den EEprom beschreiben willst. ist das richtig? wenn ja, vielleicht musst du dann noch aktivieren, dass der EEprom mitgebrannt wird.
was für einen brenner benutzt du genau (internetseite)?

mfg mcs

Goblin
13.02.2005, 11:14
wow, endlich mal einer, der den gleichen pic wie ich benutzt!

du hast schon drauf geachtet, dass deine taktleitung getrennt von den andern verläuft? benutzt du nen icsp-adapter? oder hast du ne zweite fassung in deinen brenner gebaut. weil es ist ja so, dass 18er, 28er und 40er pics verschiedene pins zum brennen nutzen..
es kann jedenfalls daran liegen, dass die taktleitung durch die andern gestört wird und deswegen deine pic fehlerhaft bebrannt wird...

mcs
13.02.2005, 19:24
ich denk aber nicht dass durch einstreuungen in die clk leitung die eine hälfte gut und die andere nicht gebrannt wird.

mfg mcs

14.02.2005, 02:47
Hallo Leute,

vielen Dank für Eure Tips. Um auf Eure Fragen zu antworten:
Der Brenner ist ein ,,PicEE''. Eine genaue Beschreibung findet Ihr unter

http://www.lgs-hanau.de/docs/picee/picee.php

Wie Goblin schon richtig sagt hat der F870 statt 18 28 Pinne. Deshalb hab ich ihn über 15cm Kabel an der Messerleiste der Programmierplatine angeschlossen (Takt-, Daten-, MCLRquer- und Masse-Leitung) und gebe ihm zudem noch 5 Volt Versorgung extern. Den 16F84 zieh ich natürlich aus dem Sockel raus.
Zur Frage von MCS. Ich möchte nicht explizit das Eeprom beschreiben. Es wird vielmehr mit dem ganzen Programm zusammen beschrieben. Das ist auch beim 16F84 so. Standardmäßig wird das Eeprom mit 1en gefüllt. Bei mir gibt er aber, wenn er bei der Überprüfung liest 0en zurück (während der Programm-Kode korrekt zurückkommt). So ist das...
An der Nähe Taktleitung-Datenleitung scheint es nicht zu liegen. Hab sie mal getrennt, ist aber keine Veränderung eingetreten.
Gruß, Christoph

stegr
14.02.2005, 07:15
schick mal bitte das Hex-File zu bzw. stells hier rein...
JDM und 16F870 sind eigentlich recht zuverlässig...

Wenn du den PICs brennst, wird zuerst der Programmspeicher gefüllt und anschließend in einem extra Brennvorgang das EEProm. Du solltest also mit einem Multimeter an MCLR erst 0V, dann 13V, dann 0V und dann wieder 13V messen können.

Und was mir grade auch noch einfällt: du hast beim 16F870 zwei mal Masse. Die beiden müssen auch beide mit Masse verbunden sein, da die intern nicht verbunden sind. Wenn die nicht beide dran hängen, kann es natürlich nicht gehn...

MfG
Stefan

mcs
14.02.2005, 16:58
ah, jetzt hab ich das verstanden. dein programm funktioniert aber soweit? du kannst ja mal versuchen, die eeprom zellen zu beschreiben.

mcs

22.02.2005, 10:44
Hab jetzt vor lauter Verzeiflung den JDM-Brenner genau nach Anleitung nochmal aufgebaut und einen 16F870 im Dil-Gehäuse draufgesteckt...

Aber die Fehlermeldung ist genau die selbe, nämlich

,,Überprüfung fehlgeschlagen an Daten-Adresse 0000h''
oder auf Englisch ,,Verify failed at data address 0000h".

Nach wie vor schreibt er die das Programm wohl korrekt rein. Wenn ich statt IC-Prog mal Winprog probiere, bringt Winprog die Fehlermeldung, dass die Konfiguration falsch geschrieben wurde. Dort ist eine Hexadezimalzahl falsch gesetzt, die Programmdaten stimmen auch hier. Ich hab mittlerweile gelesen, dass der 16F870 anspruchsvoller ist was die Taktflanken von MCLR/ angeht. So erklärt sich durchaus, warum alles mit dem 16F84 funktioniert, mit dem 870 dann nicht. Aber wie programmiere ich das Ding dann?
Ach, und Goblin: Was ist ICSP? Habe eine serielles Kabel an meinem Rechner, das ist 1,5 Meter lang, vielleicht ist das ja schon der Haken?

>>>>Wie programmiert Ihr den 16F870?<<<<
Grüße, Christoph

stegr
22.02.2005, 11:00
miss mal bitte, ob MCLR wirklich auf 13V geht. Wenn nicht, dann kann das auch nicht klappen...

22.02.2005, 11:08
Es sind genau 13,4V wenn ich die Spannung statisch messe. Du wolltest auch die Hex-Datei sehen... wie häng ich die denn hier an?

Das hier meldet Winpic:

Programmiere...
Lösche ("bulk" oder "chip") ...
Lösche Chip mit Algorithmus "ERASE_16F87x" .
EraseAll: Device is protected, using method 2
Programmiere CODE
Programmiere 0x0000..0x00A4, Algo="16F87x", CanRead=0 .
Vergleiche 0x0000..0x00A4
Kann Daten-EEPROM nicht programmieren, nichts im Puffer.
Programmiere Config.-Speicher
Programmiere 0x2000..0x2003, Algo="CONFIG_MEM_16xxx", CanRead=0 .
Vergleiche 0x2000..0x2003
Programmiere CONFIG-WORT
Config-Wort = 0x0031; Config-Maske = 0x3BFF
Programmiere 0x2007..0x2007, Algo="CONFIG_MEM_16xxx", CanRead=0 .
Vergleiche 0x2007..0x2007
Fehler beim Vergleichen: 2007: gelesen=0401, erwartet=0031

Goblin
22.02.2005, 12:03
icsp bedeutet 'in circuit serial programming' und ist eigentlich nicht mehr als den pic nicht im brenner zu brennen, sondern die schaltung in der der pic sitzt quasi an den brenner anzuschließen. das macht man dann halt mit nem icsp-adapter, dessen eines ende man an den brenner packt und das andere ende an die schaltung. dabei sollte man darauf achten, dass die takt-leitung von den anderen getrennt ist und dass das kabel an sich nicht länger als 20cm ist...

wegen deinem seriellen kabel: ist eigentlich schon zu lang, aber wenns vernünftig abgeschirmt ist, müsste es gehen. ich hab meinen brenner ohne kabel am rechner (wireless! ;) ) ich hab einfach an das gehäuse nen sub-d 25er-stecker gepackt, womit ich dann den brenner inklusive gehäuse bequem an den druckerport stecken kann. (bietet sich aber nur bei laptops an, muss ich zugeben! ;) )

23.02.2005, 12:43
Hallo Leute,

jetzt die Auflösung: Mir war nicht klar, dass man schon bei der Programmierung auf den Programminhalt achten muss, genauer gesagt auf die Konfiguration. Wenn nämlich der Kodeschutz aktiviert ist, gibt er - ganz klar - immer ein Fehler beim Wiederauslesen an. Er ließt dann teilweise nur Müll. Und dann war ich etwas verwirrt wegen der ganzen anderen Konfigurationsbits, da ich von einem kleinen Kontroller etwas mehr Übersicht gewohnt bin. Diese müssen jedoch genau eingestellt werden, sonst läuft das Ding nicht. Hier eine Konfiguration die läuft, dass es anderen von Nutzen sein kann...
Grüße, Christoph

__CONFIG b'11110100110010' ;13-12: ,11' -> CP=aus
; | | | | ;11 : ,1' -> Debugger aus
; 11 8 4 0 ; 9 : ,0' -> Programmsp schreib. aus ; 8 : ,1' -> EEProm-Schutz aus
; 7 : ,0' -> mit hoher Spg programmi.
; 6 : ,0' -> Brown out aus
; 5- 4: ,11' -> Kode-Schutz aus
; 3 : ,0' -> Power-up timer ein
; 2 : ,0' -> Watchdog aus
; 1- 0: ,10' -> HS-Oszillator (20 MHz)

stegr
24.02.2005, 11:30
Wenn du das ganze mit MPLAB entwickelst, kannst du die Config-Optionen gleich richtig einstellen. Dass es ohne richtige config nicht geht, sollte eigentlich klar sein (zumindest bin ich davon ausgegangen).

MPLAB bindet die Config-Zeile automatisch mit ein, aber du musst die Optionen natürlich richtig im Menü auswählen.

Und du brauchst die Config auch nicht binär angeben, sondern es reicht, wenn die passenden Defs nimmst und die veroderst (z.B. NOCP | NODEBUG | PUT). Die Details dazu stehen im Handbuch für den Assembler und im Datenblatt des PICs.

25.03.2005, 10:56
[quote="mcs"]hast du vielleicht ne testversion von deinem programm laufen, die die maximale größe der progs runtersetzt?
ich entneheme deinem post dass du mit der brennsoftware den EEprom beschreiben willst.