PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ICSP - In Circuit Serial Programming -VCC = 3,3V



Jaipur
30.11.2006, 17:53
hallo,

ich wollte mir eine schaltung für den pic18lf bauen, allerdings wollte ich diese schaltung mit 3,3v betreiben und programmieren wollte ich den pic über den mplab icd 2.

dieser mplab icd 2 kann die schaltung doch nur mit 5v versorgen, was in meinem fall zu viel wäre. daher dachte ich mir das ich genau diesem pin am connector erst garnicht anschließe und die schaltung wie gewohnt über ein netzteil (LM317) versorge, denn sonst würden mir die restlichen ic's wegrauchen.

meine frage: reichen die 3,3v zur programmierung???

gunzelg
01.12.2006, 08:15
Wenn ich mich nicht irre, kommt die Programmierspannung vom ICD2. Das Problem dürfte sein, dass wenn du das ICD2 an deine Platine anschliesst, und das ICD2 sieht da keine 5 Volt, dann verweigert es seinen Dienst.
Ich hab im Moment ein ähnliches Problem. Meine Schaltung kann wahlweise über 5 Volt oder über Batterie mit 3,3 Volt versorgt werden. Der Schaltung als solche ist das egal. Wenn ich aber mit 3,3 Volt Versorge und das ICD2 anschliesse erhalte ich beim Programmieren eine Fehlermeldung und das ICD2 versucht erst gar nicht zu programmieren. Das gleiche gilt übrigens, wenn man versucht bei Spannungen kleiner 5 Volt die Debuggerfunktion des ICD2 zu verwenden.
Also zum Programmieren könnte es reichen dem ICD2 die 5 Volt vorzugaukeln, wie sich aber das auf deine Schaltung auswirkt kann ich nicht beurteilen.


Gerhard

Jaipur
01.12.2006, 09:30
hallo,

also ich habe noch mal alles an unterlagen herausgeholt und kann jetzt sagen: die versorgungsspannung von 3,3v der eigenen platine MUSS auf jeden fall an dem icd connector angeschlossen werden! die spannung darf sich im bereich von 2v bis 5,5v liegen. natürlich muss man das in dem mplab unter den optionen angeben das die schaltung eine eigene versorgungsspannung hat.

und auch ganz wichtig: der /mclr - vpp pin vom connector MUSS auf jeden fall nur an dem pic angebracht werden, genau dieser pin ist auf die 0V / 5V / 12V ausgelegt. 0V = Reset, 5V = standard, 12V = programmieren. 0v und 5v sind unter umständen kein problem aber die 12v kann so ziemlich alles andere an ic's zerstören!

gunzelg
01.12.2006, 10:07
letzteres ist klein Problem, solange die 12 Volt nicht auf die Schaltung kommen. Das kann man z.B. mit einer Diode verhindern.
ich arbeite derzeit mit MPLAB 7.42. da kann ich die Versorgung des Targets durch das ICD2 gar nicht aktivieren. Die Checkbox ist zwar vorhanden aber nicht aktiv und nicht "checked". Trotzdem, muss ich an die entsprechende Leitung zum ICD2 5 Volt anlegen, 3,3 Volt reichen nicht. ???

Gerhard

Jaipur
01.12.2006, 10:30
muss ich an die entsprechende Leitung zum ICD2 5 Volt anlegen, 3,3 Volt reichen nicht. ???

die entsprechende leitung vom ICD2 kann an eine spannung von 2V bis 5,5V angeklemmt werden. der ICD2 braucht die spannnug für die treiber der PGC und PGD pins. gelesen habe ich das im "MPLAB ICD 2 In-Circuit Debugger User's Guide.pdf" von microchip.

6.5 LINK: TARGER POWER
MPLAB ICD 2 can work within a range of about 2V to 5.5V on the target PICmicro MCU'S VDD. The application must be powered by its own power supply. Remember, that the PGC and PGD I/O drivers in MPLAB ICD 2 are powered from the target VDD.

irgendwo in dem pdf steht auch das es sonst nichts funktioniert, wenn man den VDD pin am ICD2 nicht anklemmt. also im bereich von 2V bis 5,5V.

gunzelg
01.12.2006, 10:54
Das kommt bei mir, bei 3.3Volt:

Programming Target...
ICDWarn0052: MPLAB ICD 2 cannot validate a target device. Please make sure that the target device is connected and properly powered. Select "OK" to continue, or "CANCEL" to abort the operation
ICD0200: Operation Aborted (Warning 51).
ICD0275: Programming failed.
MPLAB ICD 2 Ready


Gerhard

Jaipur
01.12.2006, 11:04
du hast nicht gerade einen schaltplan zur hand? denn von der beschreibung von microchip dürfte das mit den 3,3v kein problem sein.

gunzelg
01.12.2006, 12:11
Die Stromversorgung ist eigentlich ganz einfach. Es werden 12Volt DC oder 3,8Volt (LiPo) eingespeist. Aus den 12 Volt werden mit einem Längsregler 5V produziert. >Diese 5Volt und die 3,8 Volt werden über je eine Diode zusammengeführt. Dies ist mein VCC. Damit versorge ich den PIC un den Rest der Schaltung. Bei Betrieb ohne 12Volt, liegt die Versorgung bei 3,3 Volt, die dann auch am Programmierstecker anliegt.

Gerhard

Jaipur
01.12.2006, 15:18
hallo,

verstanden habe ich das jetzt nicht so wirklich und warum das nicht funktioniert kann ich mir daher auch nicht erklären. ich kann mich nur an die schriftstücke von microchip halten.

ein hindernis soll es laut microchip nur bei dem flash geben, der kann dann nicht mehr seine blöcke löschen und muss es wie ein gewöhnlicher eeprom reihe für reihe löschen (oder so ähnlich...).

aber ich nehme das mit dem "funktioniert trotzdem nicht" mal als warnung sehr ernst. daher habe ich bei meinem schaltplan jetzt zwei jumper gesetzt, der eine jumper versorgt vom ICD2 mit seinen 5V nur den PIC und der andere jumper geht zur Spannugsversorgung von 3,3V.

gunzelg
01.12.2006, 15:24
Hallo Jaipur

bis jetzt hat mich das bei meiner Arbeit nicht beeinträchtigt - hab mich aber auch nicht weiter darum gekümmert. ich würde mich aber freuen, wenn du mir deine zukünftigen Erfahrungen dazu posten könntest (also ob es dir gelingt bei 3,3 Volt zu programmieren).

gerhard

Jaipur
01.12.2006, 15:56
ja, ich bin auch schon echt gespannt auf meine schaltung! allerdings weiß ich nicht ob ich die schaltung noch in diesem jahr fertig bekomme. schaltplan ist zwar fertig aber ich muss noch routen und dann löten. aber sobald die 3,3v stehen und ich dann auch schon den pic bekommen habe. werde ich mich noch mal melde! allerdings sollte ich mich bis zum 01.01.2007 nicht gemeldet haben sollte: dann bitte kurz eine erinnerung schreiben ;)

PICture
01.12.2006, 23:30
Hallo!

Vielleicht ein eigener ICSP Anschluss bauen ? Ist sehr einfach, besteht nur aus zwei Relais und umschaltet die Versorgungsspannung des PIC's.

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=13619&start=22

Anstatt Relais kann man auch zwei Umschalter 2xUM verwenden.

MfG

gunzelg
02.12.2006, 10:30
Evtl ist das ja eine Lösung, dem ICD2 die 5 Volt vorzugaukeln, aber ausprobiert hab ich das noch nicht.
Ich hab jetzt diese Frage im Microchip-Forum eingestellt. Interessanterweise steht da schon eine Frage zu dem Thema von einem anderen User. der hat nämlich 2 ICD's von dem nur eines an einem 3.3-Volt-Target funktioniert, das andere nicht. Evtl hat da Microchip mal was geändert. Ich hoffe, durch die Änderung funktioniert das jetzt. Mein ICD2 ist schon mind 2 jahre alt.

Gerhard

Jaipur
20.12.2006, 18:42
hallo zusammen,

ich habe die schaltung jetzt vor mir liegen! die schaltung habe ich an 3,3v angeschlossen und kann den pic18lf4520 lesen und schreiben.

ich habe das eeprom gelesen, alles ff und dann habe ich in ein paar felder 00 geschrieben und dann den pic gebrannt (mit der mplab icd2) und dann wieder die felder auf ff und dann wieder den pic gelesen, die vorher beschriebenen felder wurden wieder mit 00 aufgefüllt :)

allerdings meldet sich bei mir der/die/das crystal nicht, kein lebenszeichen, keine 4MHz ... seltsam :(

gunzelg
20.12.2006, 20:06
Wenn du die Konfigurationsbits nicht programmierst, ist das verständlich. Erst wenn du den XT-OSC (n dem Fall) auswählst und programmierst, sollte der Quarz/Oscillator arbeiten.

gerhard

Jaipur
21.12.2006, 09:21
hallo,

wo und wie mache ich das denn mit den konfigurationsbits? und in der mplab icd 2 umgebung oder unter ccs c compiler???

gunzelg
21.12.2006, 10:14
Jo, sowohl als auch. Unter MPLAB\Configure\configuration Bits, oder mit CCS C müßte das auch gehen. Weiss nicht was der für eine Syntax haben will. Wenn du das mit CCS nicht machst, nimmt MPLAB das, was du unter MPLAB eben ausgewählt hast. Einstellungen im Compiler überschreiben die von MPLAB.

Gerhard

Jaipur
21.12.2006, 10:20
ja, ich habe alles unter dem ccs c compiler mit dem project wizard angegeben.

hier mal die header datei:

#include <18F4520.h>

#device adc=8
#use delay(clock=4000000)
#fuses NOWDT,WDT128,HS, NOPROTECT, BROWNOUT, BORV25, PUT, NOCPD, STVREN, NODEBUG, LVP, NOWRT, NOWRTD, IESO, FCMEN, NOPBADEN, NOWRTC, NOWRTB, NOEBTR, NOEBTRB, NOCPB, LPT1OSC, MCLR, NOXINST


und dann natürlich auch die c datei:

#include "dummeszeug.h"

void main()
{
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

set_tris_a( 0b10000000);
set_tris_b( 0b00000111);
set_tris_c( 0b10011000);
set_tris_d( 0b00000000);
set_tris_e( 0b00000000);

while( 1)
{
output_high( PIN_C6);
delay_ms( 1000);
output_low( PIN_C6);
delay_ms( 1000);
}

}


und: an dem osc1 liegen 0v an und am dem osc2 liegen 3,3v an.

gunzelg
21.12.2006, 10:50
Tja, wenn die Configuration Bits programmiert wurden, sollte er eigentlich... Ich nehme an, dass du eine "richtige" Platine hast, also ein layout, keine Lochraster-Platine. Da kommt das schon mal vor, dass dem PIC was nicht passt und der Quarz nicht tut. Dann passt meist ein Kondensator am Quarz nicht. Kondensator raus, kleinerer rein, dann läuft er...
Nochmal zu den Konf-Bits: Wenn du dein Programm compilierst, sollte anschliessend die Einstellung, die du im Quelltext hast unter MPLAB/Configuration/Conf-Bits stehen - schau mal (ich kenn den CCS nicht, ich arbeite mit dem C18 von Microchip)
ansonsten: ?????? Gnd, VCC sauber am PIC ? wennst mit dem Oszi mal VCC anschaust: schwingt da was ? zu kleiner Kondensator an VCC ?

Gerhard

Jaipur
21.12.2006, 12:54
hallo,

ja, das stimmt es handelt sich hier also um ein professionelles layout ;) ...ich habe leider meine kamera nicht mit, aber das mit dem foto kann ich ja morgen nachholen.

crystal sitzt direkt am pic und dahinter kommen die beiden 22pF kondensatoren nach masse hin.

vcc sitzt -so sage ich jetzt mal- zu 100% fest, kein schwingen und auch keine anderen geräusche. aber am osc2 sieht es echt unschön aus. schwingt so seltsam von 3,3V auf 2,3V auf 1,6V, keine ahnung in wlecher reihenfolge...

und in der header datei bei den fuses habe ich einen kleinen fehler entdeckt, falsch #fuses ...,HS, ... richtig: XT - aber das hattest du mir ja schon vorher gesagt ;)

...schwingt trotzdem nicht mit 4MHz, könnte es sein das der PIC "kaputt" ist??? für eine sehr kurze zeit war zwischen vcc und gnd am pic ein kurzschluss, durch einen lötrest.

gunzelg
21.12.2006, 13:05
Ne, von einem Schluss an VCC gegen Ground geht der PIC nicht kaputt. warum auch. der kriegt ja keine Spannung. Anders wärs wenn er zu hohe Spannung bekommen würde. hast du die Spannung an OSC1/2 mit dem OSzi gemessen ? Denn das wäre ja wirklich eigenartig. Oder hast du das mit dem Multimeter gemessen ? Das Multimeter misst Mist bei HF.
Und zu XT/HS: lt Datenblatt geht bei 4MHz beides.
Evtl könntest du trotzdem mal mit den Kondensatoren am Quarz "experimentieren". Ausschalggebend für die Grösse ist nicht der Vorschlag von Microschip, sondern die Vorgabe vom Quarzhersteller.

Gerhard

Jaipur
21.12.2006, 15:44
hallo,

habe mit oszi gemessen. nun kondensatoren und crystal und pic getauscht, ergebnis: nur müll am osc2 :(

gunzelg
21.12.2006, 16:04
Wenn sich am OSC was tut, heisst das, dass es schon tut. Wird aber vielleicht von irgendwas gestört. Es gibt da nicht irgendwo ne Verbindung auf der Leiterplatte ?
Am OSC gibts sowas auch, wenn der PIC in sleep geht (dabei wird der Osc ausgeschaltet und gleich darauf wieder vom Watchdog aufgeweckt.. kann wohl nicht sein oder ?
Der MCLEAR kann damit eigentlich auch nix zu tun haben.
Kannst du die Stromaufnahme des PIC messen ? der PIC selber sollte wohl so 4mA brauchen.
Evtl mal im Programm einen Pin toggeln lassen und den Pin messen, ob der PIC arbeitet - trotz des merkwürdigen Clocks.

Gerhard

Jaipur
21.12.2006, 16:33
1. vielen dank für deinen geduld und deine hilfsbereitschaft!!!

"Wenn sich am OSC was tut, heisst das, dass es schon tut" - schon mal gut das zu hören!

den reset habe ich auch schon nach gemessen, ebenfalls ein sauberer 3,3v pegel!

und das mit dem portpin toggeln lassen, war eigentlich das erste was ich machen wollte. allerdings hatte ich zuerst an dem osc1 und osc2 gemessen. wie gesgat am osc1 = 0v und am osc2 = seltsame frequenz. und an dem portpin RC6 konnte ich ebenfalls etwas seltsames messen, alles andere an portpins waren still.


"Wird aber vielleicht von irgendwas gestört. Es gibt da nicht irgendwo ne Verbindung auf der Leiterplatte?" - ich weiß nicht *grübel*

finde es im moment echt seltsam das es sich so seltsam verhält, werde mal alles stück für stück durchmessen. es irritiert mich im moment das es sich programmieren lässt und ich dann auch noch das eeprom lesen/schrieben kann und es aber trotzdem nicht mit mir spricht.

ich könnte mir auc gut vorstellen das ich wahrscheinlich auch zu blöd das ding zu konfigurieren. was mich dann zugleich auf eine idee bringt: könntest du das ding für mich mit deinem c18 compiler konfigurieren und mir das hex file senden??? also: 4MHz

RA: komplett frei

RB0: input, active low
RB1: input, active low
RB2: input, active high
RB3: input, active low
RB4: input, active low
RB5: output, active high
RB6: nur für ICSP-PGC vorgesehen!
RB7: nur für ICSP-PGD vorgesehen!

RC0: output, active high
RC1: frei
RC2: frei
RC3: SPI-SCLK
RC4: SPI-MISO
RC5: SPI-MOSI
RC6: TxD, RS232 Interface
RC7: RxD, RS232 Interface

RD: komplett frei

RE0: output, low active
RE1: output, low active
RE2: frei

ich weiß zwar nicht ob es eine gute idee ist, aber mann weiß ja nie ;)

Jaipur
21.12.2006, 17:20
hallo,

jetzt mal etwas ganz neues: mit 5v funktioniert es, also der crystal schwingt mit 4MHz und mit 3,3v... wie gehabt - wie soll ich mir das denn jetzt erklären?!?

gunzelg
21.12.2006, 17:25
schau mal auf deinen PIC und sag mir wie der genau heisst. Ist das überhaupt ein P18LF ? nicht alle laufen mit 3,3 Volt.

Gerhard

Jaipur
21.12.2006, 17:29
PIC18LF4520-I/PT

Jaipur
21.12.2006, 17:43
hm, ich gerade die konfiguration mit dem mplab icd 2 nach dem schreiben gelesen, sieht ganz anders aus als im ccs compiler ?!?

und der brownout war im ccs c compiler aus und im mplab icd2 war der an und lag bei einer spannung von 4,2v ....!??

gunzelg
21.12.2006, 17:45
tia, auf den ersten Blick hilft mir auch das Datenblatt nix. demnach sollte der ja bei der VCC arbeiten. Jetzt mach ich mal deine testdatei mit dem C18 - dauert aber.

Gerhard

gunzelg
21.12.2006, 18:12
Alos hier jetzt ein dummy-file:

Gerhard

gunzelg
21.12.2006, 18:16
Jetzt hab ichzu lange gebraucht - deinen letzten post hab ich jetzt erst gelesen. ok, wenn der brown out reset falsch gesetzt, kann der PIC resetten weil die Spannung zu klein ist - aber eigentlich sollte das nix mit dem Clock zu tun haben.

Gerhard

Jaipur
21.12.2006, 18:17
die gute nachricht zuerst: es läuft!
die schlechte: ich weiß nicht was du gemacht hast ;) !

gunzelg
21.12.2006, 18:25
Wenns läuft, ist das ja schon mal was. Vielleicht liegts ja an der Konf. Alles was konfiguriert ist, steht im Source-File.
Zieh dir doch die Student-Version vom C18 von Microchip vom Netz und versuchs damit dein Programm zum laufen zu bringen. Vielleicht supported der C18 den 4520 nicht, oder dir fehlt noch irgend ein update vom CCS - bei Microchip muss man auch ständig up-to-date bleiben.

Gerhard