Probleme beim Starten von PIC18F4680

Nun, ich habe mich endlich entschieden, mich mit PICs vertraut zu machen, und mir einen PIC18F4680 und einen Klon von PICkit 2 besorgt. Ich habe eine einfache Hallo-Welt-Schaltung gemacht, wie hier gezeigt:

beschissener Schaltplan

Also im Grunde habe ich eine LED von Port A Pin 0, einen Quarzoszillator, eine dieser All-in-One-Einheiten in einer Dose (verwende ich sie richtig?), zwei 100-nF-Kondensatoren und den MCLR-Pin hochgezogen (und mit dem verbunden). Programmiergerät, wenn ich es verwende).

Auf dem Programmiergerät habe ich Vpp/MCLR-, Vdd-, Vss-, ICSPDAT/PD-, ICSPCLK/PGC- und AUX-Pins. Nach einigem Lesen fand ich heraus, dass der AUX mit dem PGM-Pin am PIC verbunden werden sollte. Ich habe alle Pins des Programmierers mit den entsprechenden Pins auf dem PIC verbunden.

Ich habe versucht, den PIC mit dem externen Oszillator bei 40 MHz und mit dem internen Oszillator bei 1 MHz zu verwenden, und es hat keinen Unterschied zum Hauptproblem gemacht. Ich denke, dass die Oszillatoren in Ordnung sind, weil ich einen 250-kHz-Ausgang an Pin 14 sehen kann, wenn ich den internen 1-MHz-Oszillator verwende, und einige seltsame Messwerte, wenn ich den externen 40-MHz-Oszillator verwende (was zu erwarten ist, da mein Multimeter kann Frequenzen bis zu 5 MHz messen und ich erwarte eine Ausgabe von 10 MHz, laut Datenblatt des Mikrocontrollers).

Das Problem ist, dass, wenn ich den programmierten PIC an die Stromversorgung anschließe, er nichts tut, soweit ich sehen kann. Stattdessen muss ich das PICkit daran anschließen, die PICkit 2-Anwendung des Mikrochips öffnen und nachdem es den Chip überprüft hat, beginnt die LED zu blinken, wie es mit der richtigen Frequenz sein soll. Wenn ich das PICkit von der Schaltung oder dem Computer trenne, hört die blinkende LED auf.

Das klingt ähnlich wie dieser Beitrag kürzlich electronic.stackexchange.com/questions/27093/… (insbesondere der PGM-Pin-Teil?)
@John Burton Nun, der Hauptunterschied besteht darin, dass ich nicht den intermittierenden Betrieb bekomme, wie in diesem Beitrag zu sehen ist. Es funktioniert einfach nicht. Außerdem ziehe ich den MCLR-Stift hoch, sodass die dort gezeigte Lösung nicht zutrifft.
Der Punkt ist, dass Sie PGM hochziehen müssen, wenn Sie den Chip nicht programmieren, oder Sie können dies bekommen. Ob das dein Problem ist, weiß ich natürlich nicht.
@John Burton OK. Ich habe PGM an Vdd gebunden und es hat nicht geholfen. Außerdem verwende ich (glaube ich) Hochspannungsprogrammierung, daher sollte der PGM-Pin als normaler Pin verfügbar sein. Woher bekommen Sie auch die Information, welcher Pin wo angeschlossen werden soll? Ich bin mir nicht sicher, woher Sie die Informationen bekommen könnten. Zum Beispiel sagt das Datenblatt das While in Low-Voltage ICSP Programming mode, the RB5 pin can no longer be used as a general purpose I/O pin and should be held low during normal operation.und RB5 ist hier PGM.
Ich habe gerade mehrmals gesehen, wie Bilder verwendet wurden, bei denen das Belassen von pgm Floating dieses Problem verursachte, und das Setzen auf hoch stellte sicher, dass der Chip nicht glaubt, dass er sich im Programmiermodus befindet. Es war nur ein Gedanke, etwas, das ich gesehen habe. Ihr Problem ist wahrscheinlich etwas anderes, wenn es dadurch nicht behoben wurde.

Antworten (3)

Es hört sich so an, als hätten Sie es in MPLAB eingerichtet, um das PICkit als Debugger und nicht als Programmierer zu verwenden. Dadurch kann es mit dem angeschlossenen PICkit arbeiten und MPLAB ausführen, aber nicht alleine. Stellen Sie sicher, dass das Debug-Konfigurationsbit ausgeschaltet ist und dass Sie das Teil mit dem PICkit als Programmierer programmieren , nicht als Debugger.

Anscheinend war das die Hauptursache des Problems.

Welche Frequenz hat dein externer Oszillator? Ich weiß nicht, ob der PIC 40 MHz aufnehmen kann. Normalerweise verwenden wir einen 10-MHz-Oszillator und verwenden die interne PLL des PIC, um ihn auf 40 MHz zu erhöhen. Überprüfen Sie jedoch, ob Ihre Konfigurationseinstellungen HS für den Oszillator sind.

Überprüfen Sie auch, ob der externe Oszillator tatsächlich eine Ausgabe erzeugt. Oft haben diese Geräte 4 Pins, wovon einer ein Enable-Eingang ist. Sie müssen den Aktivierungseingang mit +5 V verbinden, damit es funktioniert.

Der Oszillator ist 40 MHz und ich verwende die EC-Option. Laut Datenblatt kann dieser PIC bis zu 10 MHz RC-Oszillatoreingang aufnehmen und PLL auf dieser oder einer externen 40-MHz-Taktquelle verwenden. Es hat auch die Möglichkeit, zur internen Uhr zurückzukehren, wenn keine externe Uhr vorhanden ist (und ich habe diese Option aktiviert). Das Problem würde auch nicht auftreten, wenn ich einen internen Oszillator verwende.

Sie müssen einen 10-kOhm-Pullup-Widerstand an MCLR (Pin 1) hinzufügen.

Ich habe es mit 10k Pull-up versucht und es hat nicht geholfen.