Forum: Mikrocontroller und Digitale Elektronik Pic18F2331 Problem


von Patrick F. (styla)


Angehängte Dateien:

Lesenswert?

Hallo

Ich arbeite mit einem PIC18F2331 und dem Programm MBLab C18

Ich habe einen Programmcode in der Programmiersprache C geschrieben und 
wollte diesen via ICD2 auf den PIC übertragen.
Das ging ein paar mal ohne das ich einen Fehler bekam. Nur als ich 
einige male den Code geändert hatte und ich den Code wieder übertragen 
wollte bekam ich einen Fehler und ich weiß nicht woran das liegen kann.

Im Anhang ist der Programmcode.

Der Fehler lautet:

Verify failed (MemType = Program, Address = 0x0, Expected Val = 0xEFD2, 
Val Read = 0xFFFF)


Ich hoffe ihr könnt mir helfen!

Mfg

von Master S. (snowman)


Lesenswert?

beim ICD2 wirst du wahrscheinlich auch einstellen können, ob vor dem 
brennen der PIC gelöscht werden soll. aktiviere das. ich bekam die 
selben fehlermeldungen beim ICD3, als ich einmal fand, dass diese 
einstellung (vorher PIC löschen) doch nicht nötig sei und deaktivierte 
;-)

von Patrick F. (styla)


Lesenswert?

Hallo

erst einmal vielen Dank für die Hilfe.

Leider lag es daran auch nicht.
Langsam verzweifle ich daran..:-(

mfg

von Master S. (snowman)


Lesenswert?

hast du ein zu langes kabel oder sonst störende einwirkungen auf die 
übertragungsleitungen? läuft das programm an sich (d.h. kein fehler beim 
brennen, sondern nur beim lesen/vergleichen)? schon mal einen anderen 
chip ausprobiert?
mach mal einen blank check (alles löschen), verifizieren und dann 
brennen...

sonst weiss ich auch nicht was... sorry

von Patrick F. (styla)


Lesenswert?

Das Programm an sich läuft

wenn ich auf Build All gehe schreibt er mir Build Succeeded.
Erst wenn ich Programm Traget Device mache kommt die Fehlermeldung.

zum Blank Check:

Wenn ich den Blank Check auswähle kommt:

Blank Checking...
...Program Memory
.. Config Memory
...EEPROM
...User ID Memory
...Blank Check Passed
MPLAB ICD 2 Ready

Wenn ich Verify auswähle kommt:

Verifying...
...Program Memory
ICD0161: Verify failed (MemType = Program, Address = 0x0, Expected Val = 
0xEFD2, Val Read = 0xFFFF)
MPLAB ICD 2 Ready

von Gast (Gast)


Lesenswert?

Was hast Du für ein Kabel?
Die ICD2 reagiert ein bisschen allergisch auf zu lange Kabel.
Wenn Du ein selbstgebasteltes Kabvel hast dann mach es so kurz wie 
möglich.

Was auch helfen kann - einfach den PIC nur löschen
Menü-Programmer-Erase Part
und anschliessend neu flashen.
Du kannst auch mal probieren unter
Menü->Programmer->Settings->Reiter Program
den Punkt
Allow ICD2 to select memories....
manuell auswählen und
Dort bei Memories
PROGRAM
Configuration
EEPROM(?)
ID
aktivieren

und bei Program Memory

Full Range botton
betätigen und übernehmen


Typischerweise ist das ein Kommunikationsproblem zwischen 
PIC-ICD-USB-MPLAB und liegt nicht nicht am Code.
Ich geh mal spontan davon aus, dass Du nicht irgendwelche nicht 
existieren Speicherbereiche gefüllt hast...

MfG
Karsten

von TommyS (Gast)


Lesenswert?

Hi!

Ich hatte vor einiger Zeit ein ähnliches Problem, als die 
Spannungsversorgung vom Board Probleme gemacht hat. Da hat die ICD2 
nicht mehr genügend Strom liefern können und dauernd Programmierfehler 
gebracht.

Vielleicht hilft das weiter.

Grüße,
TommyS

von Severino R. (severino)


Lesenswert?

Versuch mal Folgendes:

Falls dieser PIC-Typ low voltage programming beherrscht, dieses in den 
configuration settings ausschalten.
Den Pin PGM auf GND legen.
Dann erneut Build all und programmieren.

(Hatte beim PIC16F883 ein solches Problem)

von Patrick F. (styla)


Lesenswert?

Vielen Dank für die vielen und schnellen Antworten.

Ich benutze vom MPLAB zur ICD2 ein USB AB Kabel und von der ICD2 zum PIC 
ein RJ11 Kabel.

Ich habe versucht den PIC zu löschen, habe unter Settigs die 
einstellungen gemacht die oben vorgeschlagen worden sind...hat leider 
alles nichts geholfen.

Nicht dasich wüsste habe ich nicht existierende Speicherbereiche 
programmiert.
Als ich angefangen habe habe ich ein kleines Programm geschrieben um 2 
LEDs zum leuchten zu bringen. Das hat ohne Probleme funktioniert.
Erst als ich das Programm erweitert habe(Timer,PWM) kamen die Probleme. 
Es ließ sich 1-2x übertragen und seitdem nicht mehr.

Ich habe auch schon die 2 arten der Spannungsversorgung für die ICD2 
versucht.

1.) Wo das ICD2 direkt an der Steckdose hängt
2.) Wo das ICD2 über den USB Port versorgt wird

leider hat das alles nichts geholfen

Mfg
Patrick

von Severino R. (severino)


Lesenswert?

Patrick Frei wrote:
> Vielen Dank für die vielen und schnellen Antworten.
>
> Ich benutze vom MPLAB zur ICD2 ein USB AB Kabel und von der ICD2 zum PIC
> ein RJ11 Kabel.
RJ11: Wie lang? Sind alle 6 Kontakte bestückt und angeschlossen?
>
> Ich habe versucht den PIC zu löschen, habe unter Settigs die
> einstellungen gemacht die oben vorgeschlagen worden sind...hat leider
> alles nichts geholfen.
Und den PGM Pin auf GND?

> Als ich angefangen habe habe ich ein kleines Programm geschrieben um 2
> LEDs zum leuchten zu bringen. Das hat ohne Probleme funktioniert.
> Erst als ich das Programm erweitert habe(Timer,PWM) kamen die Probleme.
> Es ließ sich 1-2x übertragen und seitdem nicht mehr.
Versuch es nochmals mit dem kleinen Programm.


> 1.) Wo das ICD2 direkt an der Steckdose hängt
Meinst sicher über ein Netzteil, oder?

von Gast (Gast)


Lesenswert?

Ein Blick in deinen Source-Code enthüllt mir, dass Du zumindest hier 
keine Config-Register Einstellungen gemacht hast.

Wenn Du diese im MPLAB machst bitte überprüfen ob
brown-out ausgeschaltet ist, der Watchdog deaktiviert, Low-Voltage 
Programming ausgeschaltet ist, der Korrekte (interne?) Oszillator 
ausgewählt ist.

MfG
Karsten

von Patrick F. (styla)


Angehängte Dateien:

Lesenswert?

Hallo

Das RJ11 Kabel ist ca. 38,5cm lang. Es sind nur 5 oder 6 Pins auf meiner 
Platine bestückt, da das ICD2 meines wissens nur 5 Kontakte benötigt.

Der PGM Pin ist nicht auf GND, aber das werde ich jetzt einmal 
versuchen.

Das kleine Programm lässt sich auch nicht mehr übertragen. Es erscheint 
der gleiche Fehler wie immer.

Ja ich meine via Netzteil.

Ich habe den Source Code neu überarbeitet mit einigen neune 
Einstellungen die aber auch nicht zur Lösung beigetragen haben. ich 
werde den neuen Source Code auch in den Anhang hier stellen.

Wo schalte ich im MPLAB brown-out,Watchdog,Low-voltage programming aus?

mfg
Patrick

von Severino R. (severino)


Lesenswert?

Patrick Frei wrote:

> Der PGM Pin ist nicht auf GND, aber das werde ich jetzt einmal
> versuchen.

Und, ging's jetzt?

> Wo schalte ich im MPLAB brown-out,Watchdog,Low-voltage programming aus?

Configure -> Configuration Bits und dort Haken bei "Configuration Bits 
set in code" entfernen. Anschliessend Werte einstellen.

von Patrick F. (styla)


Lesenswert?

Ich hatte die Pins AVdd und AVss nicht verbunden. Nachdem ich etwas 
recherchiert hatte hab ich die Pins AVdd und AVss mit GND und 5V 
verbunden. Auch den Pin PGM hab ich auf Masse gelegt und es hat auf 
anhieb funktioniert das sich der PIC porgrammieren lies.

Vielen Dank für die kompetente Hilfe.

Mfg

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.