Hallo,
Ich habe eine Schaltung auf dem Steckbrett aus einem PIC18LF25K80
(Master) und einem PIC18F26Q43 (slave).
Ich habe mich an die jeweilige Reset-Schaltung (RC-Glied) am ~MCLR
Eingang gehalten.
Beide nutzen den internen Oszillator mit PLL um auf 64MHz zu kommen.
Nun das Problem: Beide PICs laufen nur an, wenn der Programmieradapter
(PICKIT3 bzw. 4) dran ist, sonst nicht. Jedenfalls gehe ich davon aus,
dass sie nicht anlaufen, denn ich schalte direkt nach dem
SYSTEM_Initialize() des Code Generators einen Ausgang mit LED. Ohne
Adpater keine LED, mit Adapter ja.
Ich habe schon andere zugegeben einfachere Schaltungen mit dieser
Reset-Beschaltung als auch internem Oszillator aufgebaut, die immer
geklappt haben.
Liegt es daran, dass diese Schaltung nur mit 3,3V versorgt wird?
Vielen Dank für jeden Tip.
Stromversorgung / Reset?
Betrieb ohne PICKIT => Am ICD:
- Spannung zwischen Vcc und GND
- Spannung zwischen Vdd und GND
Vielleicht hast du die Masse vergessen, die dann beim Betrieb mit dem
Programmer hergestellt wird...
Die Antwort ist etwas knapp für mich.
Ich versuche mal zu antworten:
Jeder PIC hat zwei Masseanschlüsse und einen Vdd Anschluss, diese sind
aus einem Labornetzteil mit 3,3V versorgt. Die 3.3V liegen mit und ohne
Programmer an.
Der Programmer erhält aus derselben Schiene ebenfalls 3.3V und Masse.
Aktuell verbraucht die Schaltung 130mA bei 3.3V. Das Netzteil kann 4A
liefern. Desweiteren gibt es am Programmer noch 2 Programmierleitungen
und eben die Resetleitung: Ein RC-Glied 100nF nach Masse verbunden mit
über R=1k nach Vdd, zwischen R und C noch ein Strombegrenzer R=4,7k in
den ~MCLR-Eingang.
Lass mal den RC am Reset weg. Ein einfacher Pull-Up reicht in der Regel.
Also 10k zwischen Vdd und Vpp - sonst nichts.
Jetzt miss mit den zwei Spitzen des DVMs direkt am Programmierinterface
deiner Platine (ICD) zwischen Pin 1 (Vpp) und Pin 3 (GND). Dort sollten
3,3V sein. Das gleiche gilt für Pin 2 (Vcc) und Pin 3 (GND).
Ok, hab jetzt nur einen 10k Pull-up dran. Damit läuft es auch nicht an.
Die Messung ergibt:
Stromversorgung direkt am PIC 3.35V.
Reset gegen GND ohne PICKIT: 3.30V, mit: 3.28V.
Spannung direkt an der Versorgung des PICKIT: 3.30V
Hilft das?
Soweit so gut. Die Hardware scheint erstmal OK.
Was ist mit der Software? Schreibe ein einfaches Programm, das nichts
anderes macht als nur einen Pin toggelt.
Nimm am besten den PGC-Pin oder den den PGD-Pin. An diese Pins kommt man
über die ICD-Schnittstelle und: da diese Pins zum Programmieren
verwendet werden, weiss man, dass diese Pins OK auch sind.
Michael D. schrieb:> Schreibe ein einfaches Programm, das nichts> anderes macht als nur einen Pin toggelt.
Hat er doch....
Wahrscheinlich "das Anderelinks" erwischt, zeig mal den Aufbau.... Na
weil mir sonnst nix schlaues einfällt. ;)
Ok. Ich brenne mal ein einfaches Programm drauf. Ich wollte nur noch
sagen, dass ziemlich viele Pins etc. ok sind. Mein Programm funktioniert
ja, wenn der Programmer dran ist, d. h. auch PGC und PGD müssen dann ja
gehen. Ich benutze sonst noch SPI, eine Reihe von Pins für Chip Select
und Chip Ready und natürlich noch zwei für Status LED.
Wenn er läuft, stimmt auch die Taktrate des SPI. Alles läuft wunderbar,
aber der Chip läuft nicht los, wenn der Programmer ab ist.
Ich hatte mal gelesen, dass es Probleme geben kann, wenn durch die IOs
zuviel Strom fließt, bevor diese richtig konfiguriert sind. Konnte das
aber nicht ergründen.
Hier der Aufbau. In der Mitte ist der PIC18LF25K80, oben der PIC18F26Q43
unten ein Wiznet-Modul. Die unterhalten sich über SPI.
Bei dem mittleren habe ich die empfohlene Reset-Schaltung durch den
Pull-Up ersetzt. An die Stiftleisten kommen die Programmieradapter. Ich
habe einen PICKIT3 und einen 4. Bei beiden ist das Verhalten gleich bzw.
ohne.
SYSTEM_Initialize() kommt vom MCC
dataInit() holt nur Daten aus dem EEPROM
Dann kommen schon die LED. Die ganzen Methoden mit led...() verwalten
mir nur den Zustand der LED. LEDCNCT und LEDMQTT sind defines für LATC0
und LATC1.
Ich erwarte nach dem einschalten wenigstens, dass die beiden LED einmal
für 1s leuchten.
Teo D. schrieb:> Oooo... Hast du da evtl. vergessen, das in der NICHT Debug Version zu> brennen, bevor du..... :}
Daran habe ich sicher nicht gedacht! Allerdings hab ich das noch nie so
gemacht soweit ich mich erinnere... aber das ist ein Punkt. Das probiere
ich aus...
Oh, mein Gott, bin ich blöd!
Ja, so geht es gleich viel besser... ;)
Sonst hatte ich immer Schaltungen mit nur einem PIC und den Programmer
immer dran bzw. wenn die Schaltung auf der Leiterkarte war, habe ich
normal programmiert. Jetzt habe ich zum ersten Mal zwei PICs im Einsatz
und hatte erst nur einen Programmer, den ich umgestöpselt habe. Dann
geht es natürlich nicht mehr.
Vielen Dank für die Lösung.
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang