In Cirquit Debugging mit PIC und ICD2 - keine Verbindung

Gast #964997
Lesenswert?

Hi Leute

ich möchte meinen PIC (18F4550) in dessen Schaltung programmieren und 
habe deshalb einen ICD2-Anschluss mit konstruiert.
Bis jetzt ist alles so zusammengelötet wie es auf dem Bild zu sehen ist.

Beim Brennen via MPLAB kommt jedoch die Meldung
ICD0083: Debug:  Unable to enter debug mode.  Please double click this 
message for more information.


Die Platine wird vom ICD2 aus versorgt. Die 5V liegen auch richtig an.
Wenn ich alles auf dem PICDEM2PLUS Board flashen will, funktioniert 
alles normal.

Was habe ich bei meiner Schaltung vergessen?

Grüße
Gast #965054
Lesenswert?

abgesehen von der fehlenden diode beim mclr gegen 5V?

es reichen schlecht geroutetet leitung oder zu lange leitungen womit man 
zwar noch programmieren kann, aber meist geht das debuggen dann nicht 
mehr.
Gast #965105
Lesenswert?

Diode beim MCLR Pin? Das hab ich ja noch gar nicht gehsehen. Wo soll 
denn dort eine hin?
Ich wollte des vom PICDEM2-Board ableiten. Das Schematic ist hier:
http://ww1.microchip.com/downloads/en/DeviceDoc/PICDEM%202%20Plus%20RoHS.pdf

Die haben dort noch einen Kondensator am MCLR, den ich nicht habe. 
Sollte es daran liegen?

Das Problem mit zu langen Leitungen kenne ich, hab alles schön kurz (3 
cm).
Gast #965412
Lesenswert?

Mhm, scheinbar hab ich diese Infos von der Sprut-Seite, hab bis jetzt 
immer eine verbaut, immerhin erscheint mir das logisch da MCLR auf 13V 
gehoben wird beim Programmieren, die braucht man dann irgendwie doch 
nicht in der restlichen Schaltung
#965448
Lesenswert?

Das "using MPLAB ICD2" - poster ist eigentlich ganz hilfreich um zu 
klären, was bezüglich des Programmier/Debug-Interfaces alles erlaubt 
bzw. verboten ist:
http://ww1.microchip.com/downloads/en/DeviceDoc/51265g.pdf

Hier ist keine Diode von +5V in Richtung Vpp eingezeichnet. Ist auch 
nicht wirklich nötig, denn selbst wenn Vpp auf 13V angehoben wird, 
fließt durch den 10kOhm Widerstand gerade mal ein Strom von 0.8 mA.

Allerdings glaube ich eher, dass es sich in diesem Fall um ein Software- 
bzw. Anwenderproblem handelt. Darum hier mal eine kleine Checkliste:

Steht der PIC18F4550 am unteren Rand des MPLAB-Fensters?
Stimmen die Oszillatoreinstellungen? (Im Menü "Configure > Configuration 
bits" die Oszillatoreinstellunge prüfen! Stimmen diese mit dem 
verwendenten Quarz und den Einstellungen in der Software überein?)
Welches Linkerfile benutzt Du (vorausgesetzt Du verwendest den C18)? 
18F4550.lkr oder 18F4550i.lkr? Letzteres ist fürs Debuggen erforderlich!

gruß
daniel
Gast #965945
Lesenswert?

Also ich denke eher dass es doch ein HW Problem ist. Bei MPLAB-Start 
wird alles richtig erkannt:

--------------------------
Connecting to MPLAB ICD 2
...Connected
Setting Vdd source to MPLAB ICD 2
Target Device PIC18F4550 found, revision = Rev 0x5
...Reading ICD Product ID
Running ICD Self Test
...Passed
MPLAB ICD 2 Ready
--------------------------


Beim Flashen kommt dann das:

--------------------------
Programming Target...
...Validating configuration fields
...Erasing Part
...Programming Program Memory (0x0 - 0x27F)
...Loading DebugExecutive
...Programming DebugExecutive
...Programming Debug Vector
...Programming RSBUG
Verifying...
...Program Memory
...Debug Executive
...Debug Vector
...Verify Succeeded
Programming Configuration Bits
.. Config Memory
Verifying configuration memory...
...Verify Succeeded
Connecting to debug executive
ICD0083: Debug:  Unable to enter debug mode.  Please double click this 
message for more information.
MPLAB ICD 2 Ready
---------------------------


Ich sehe auch den Ladebalken beim Flashvorgang. Nur am Ende kann er 
nicht in den Debug wechseln.
Die 4550i.lkr Datei hab ich auch probiert, keine Änderung.
Gast #1010795
Lesenswert?

Hier meine Einstellungen für:
- PIC18F4550
- CCS Compiler
- PICDEM 2 Plus Board

Die mit Ausrufezeichen versehenen Fuses ware bei mir relevant für das
debuggen mit dem ICD 2.
Ausserdem beachten, dass in der MPLAB Oberfläche unter Project > Build 
Options > Project > CCS C Compiler "Compile for use with ICD Debugger" 
aktiviert ist.

#include <18F4550.h>

#device ICD=TRUE
#device adc=10

#FUSES NOWDT                   //No Watch Dog Timer
#FUSES WDT128                  //Watch Dog Timer uses 1:128 Postscale
#FUSES INTRC_IO                //Internal RC Osc, no CLKOUT
#FUSES NOPROTECT               //Code not protected from reading
#FUSES BROWNOUT                //Reset when brownout detected
#FUSES BORV43                  //Brownout reset at 4.3V
#FUSES NOPUT                     //!!!!! Power Up Timer !!!!!!
#FUSES NOCPD                   //No EE protection
#FUSES STVREN                  //Stack full/underflow will cause reset
#FUSES DEBUG                   //Debug mode for use with ICD
#FUSES NOLVP                   //No low voltage prgming, B3(PIC16) or 
B5(PIC18) used for I/O
#FUSES NOWRT                   //Program memory not write protected
#FUSES NOWRTD                  //Data EEPROM not write protected
#FUSES IESO                    //Internal External Switch Over mode 
enabled
#FUSES FCMEN                   //Fail-safe clock monitor enabled
#FUSES NOPBADEN                //PORTB pins are configured as digital 
I/O on RESET
#FUSES NOWRTC                  //configuration not registers write 
protected
#FUSES NOWRTB                  //Boot block not write protected
#FUSES NOEBTR                  //Memory not protected from table reads
#FUSES NOEBTRB                 //Boot block not protected from table 
reads
#FUSES NOCPB                   //No Boot Block code protection
#FUSES MCLR                    //Master Clear pin enabled
#FUSES NOLPT1OSC               //Timer1 configured for higher power 
operation
#FUSES NOXINST                 //Extended set extension and Indexed 
Addressing mode disabled (Legacy mode)
#FUSES PLL1                    //No PLL PreScaler
#FUSES CPUDIV1                 //No System Clock Postscaler
#FUSES USBDIV                  //USB clock source comes from PLL divide 
by 2
#FUSES NOVREGEN                //USB voltage regulator disabled
#FUSES NOICPRT                   //!!!!! ICPRT disabled !!!!!!

#use delay(clock=8000000,RESTART_WDT)
Gast #1010916
Lesenswert?

Hallo,

unabhängig von allen anderen Schwierigkeiten sollte in die Schaltung 
unbedingt ein Blockerkondensator (100n) in die Vcc eingebaut werden.

Ohne Blocker läuft jeder Mikrocontroller instabil.

Grüße,

Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren