Ich verwende PIC18F4680 und habe Probleme, es von einer externen 40-MHz-Taktquelle oder einem 10-MHz-Quarz im HSPLL-Modus auszuführen. Die Verwendung eines 10-MHz-Kristalls im HS-Modus scheint in Ordnung zu sein, und ein 5-MHz-Kristall im HSPLL-Modus funktioniert ebenfalls einwandfrei.
Was passiert ist, dass der PIC startet, einige Sekunden lang arbeitet und dann für eine Weile herunterfährt und erneut startet. Die Gesamtdauer des Zyklus beträgt ungefähr 5 Sekunden, von denen der PIC in der zweiten Sekunde nicht mehr funktioniert.
Mir ist auch aufgefallen, dass der PIC manchmal einwandfrei funktioniert, wenn ich dem Energiebus des Steckbretts einen ausreichend großen entladenen Kondensator hinzufüge. Interessant ist, dass dies nur passiert, wenn ich den Kondensator hinzufüge, während der PIC bereits läuft. Wenn ich das Steckbrett mit dem dortigen Kondensator versorge oder einen Kondensator platziere, der nicht vollständig entladen wurde, bleibt das Problem bestehen.
Ich habe auf einigen Websites gelesen, dass ähnliche Probleme wie ich aufgrund eines erhöhten Stromverbrauchs des PIC bei höheren Frequenzen und einer höheren niedrigsten Betriebsspannung auftreten können. In diesen Fällen erreichen kurze Spannungsabfälle am Netzteil mit größerer Wahrscheinlichkeit die niedrigste Betriebsspannung des PIC auf dieser Frequenz. Daher ist es empfehlenswert, zusätzliche Kondensatoren auf dem Steckbrett zu haben, um dieses Problem zu lösen. Da die gesamte Schaltung unter Volllast bei 40 MHz etwa 64 mA verbraucht, bestand meine erste Idee darin, einige Tantalkondensatoren zu installieren, in der Hoffnung, dass sie groß genug sind und einen ausreichend niedrigen ESR haben, um das Problem zu beheben . Einer hat nicht geholfen und der zweite hat auch nicht geholfen. Also habe ich einen Aluminiumkondensator hinzugefügt und das hat auch nicht geholfen.100 μ F 470 μ F Aluminiumkondensator ohne Wirkung. Am Ende fügte ich einen 1 mF Aluminium-Elektrolytkondensator hinzu und dann funktionierte die Schaltung zum ersten Mal einwandfrei, bis sie aus- und wieder eingeschaltet wurde. Ich sollte auch beachten, dass ich zu Testzwecken Vcc von 5,5 V verwende, was die höchste Nennspannung für diesen Mikrocontroller ist. Dies sollte mir etwas Raum lassen bis zu 4,2 V, was die niedrigste Betriebsspannung bei 40 MHz ist
Als nächstes habe ich gelesen, dass schwebende Ausgänge manchmal Störungen verursachen können. Deshalb habe ich an allen nicht verwendeten Pins Pulldown-Widerstände angebracht, und das hat auch nicht geholfen. Danach habe ich gelesen, dass es manchmal Probleme geben kann, wenn die Oszillatoreingänge schweben, also habe ich versucht, sie mit einigen Widerständen an GND anzuschließen, und das hat nicht geholfen.10 M Ω
Aufgrund der Länge des Kabels, das vom Oszillatorausgang zum Oszillatoreingang am PIC führt, habe ich Probleme damit erwartet, aber ich habe keine Probleme mit dem 10-MHz-Kristall erwartet, der sehr nahe an den Oszillatorstiften am PIC liegt. Auch bei Quarz würde ich auch im HS-Modus Probleme erwarten, wenn die Oszillatorsignalverzerrung aufgrund des Steckbretts das Problem wäre, aber im HS-Modus funktioniert der PIC einwandfrei.
Normalerweise verwende ich Kondensatoren mit 33 pF für die Kristalle, aber ich habe es auch mit 15 pF versucht und konnte keine Änderung feststellen.
Ich sollte auch beachten, dass dieser PIC einen ausfallsicheren Taktmonitor und eine interne / externe Oszillatorumschaltung hat. Ich habe versucht, beide zu aktivieren, in der Hoffnung, dass sie zumindest bestätigen, dass das Problem beim Oszillator liegt, aber sie helfen bei dem Problem nicht. Es gibt keinen Unterschied, ob sie ein- oder ausgeschaltet sind.
Ich habe zu Testzwecken auch den Watchdog-Timer, das Brown-Out-Reset und das Stack-Over / Underflow-Reset deaktiviert. Ich denke, dass ich alle Reset-Quellen für diesen Chip ausgeschaltet habe. Außerdem befindet sich das Programm in einer Endlosschleife, sodass es nicht endet.
Der PCF8583 hat keine Probleme und funktioniert auch dann noch einwandfrei, wenn sich der PIC selbst zurücksetzt. Andererseits hat er eine viel niedrigere Mindestspannung.
Leider habe ich kein Oszilloskop, aber ich habe einige Tests mit einer Soundkarte (96 kHz Abtastrate) durchgeführt und festgestellt, dass bei eingeschalteter RTC ein 25-Hz-Rauschen auf der Stromleitung auftritt. Das Programm, das ich verwende, meldet etwa 300 mV von Spitze zu Spitze, aber ich weiß nicht, wie sehr ich ihm vertrauen soll, und ich weiß nicht, ob dies ausreichen würde, um Probleme für den PIC zu verursachen. Wenn alles ausgeschaltet ist, liegt das Rauschen von Spitze zu Spitze bei etwa 100 mV, das sollte also in Ordnung sein.
Falls es hilft, hier ist das Bild des Steckbretts selbst: (Rechtsklick-> Bild in voller Größe anzeigen)
Hat jemand eine Idee, was hier los ist?
Am Ende könnte ich den PIC nur mit 20 MHz betreiben, aber sollte ich mehr Rechenleistung benötigen, möchte ich ihn mit 40 MHz betreiben können.
AKTUALISIEREN
Ich habe einen weiteren Regler am Steckbrett selbst angebracht und das von der Soundkarte aufgenommene Geräusch ist jetzt viel geringer (etwa 50 mV Spitze zu Spitze), aber es hat das Hauptproblem nicht beeinflusst.
quelle
Antworten:
Dies ist ein ziemlich alter Rat, und ich weiß nicht, ob er für Ihr Mikro relevant sein wird, aber vor ungefähr 4 Jahren habe ich ein Projekt mit einem PIC18F durchgeführt, bei dem seltsame falsche Resets aufgetreten sind. Nachdem ich den Bericht gelesen und mein Gedächtnis neu aufgerüttelt habe, scheint dies das Problem gelöst zu haben:
Haben Sie das
Low Voltage Programming Enable
Konfigurationsbit aktiviert? Ist deinPGM
Stift anPORTB
? In diesem Fall sollten Sie in Betracht ziehen, beideLow Voltage Programming Enable
undPort B A/D Enable
die digitalen Eingänge beim Zurücksetzen zu deaktivieren . Meinem alten Bericht zufolge geschahen wirPORTB
schwebend, während es sich um analoge Eingänge handelte, und lösten denPGM
Pin aus. Rückblickend weiß ich nicht, ob diese Diagnose richtig war, aber wir haben das Projekt erfolgreich abgeschlossen, sodass es möglicherweise einen Versuch wert ist.quelle
Mit einem solchen Setup wird es für uns fast unmöglich sein, genau zu sagen, was falsch läuft. Was wir jedoch sagen können, ist das, was falsch ist. Es gibt viele Dinge, die falsch oder zumindest nicht so richtig sind, wie es kalt ist. Jedes dieser Dinge könnte die eigentliche Ursache Ihres Problems sein, aber es könnte auch die Kombination von Problemen erfordern, die, wenn sie addiert werden, dem Problem entsprechen, das Sie sehen.
Der einzige wirkliche Weg, dies zu debuggen, besteht darin, alles zu beheben, von dem Sie wissen, dass es falsch ist, unabhängig davon, ob es sich um die rauchende Waffe handelt oder nicht. Irgendwann wird das Problem auf die eine oder andere Weise behoben.
Wenn eine solche MCU nicht richtig läuft, müssen Sie sich fast immer auf die Grundlagen konzentrieren: Power, Clock und Reset. Mit einem Steckbrett sind alle drei verdächtig!
Der Hauptverdächtige für mich ist der 40-MHz-Takt. 40 MHz laufen ziemlich schnell über einen in der Luft schwebenden Draht. Es ist auch schnell, in ein Steckbrett zu stopfen, wo das "Signalverteilungssystem" nicht wirklich für hohe Geschwindigkeiten ausgelegt ist. Wenn dies eine Leiterplatte wäre, würde ich Ihnen sagen, dass Sie sicherstellen müssen, dass Ihre Spurimpedanz konsistent ist, und Ihre Signale ordnungsgemäß terminieren. Auf einem Steckbrett kann man das leider nicht wirklich machen. Das Beste, was ich Ihnen sagen kann, ist, Ihre Drähte so kurz wie möglich zu halten - und sie dann noch kürzer zu machen! Verwenden Sie ein O-Scope für das Taktsignal, das direkt am PIC-Pin abgetastet wird, und die GND-Leitung der Sonde auch direkt am nächstgelegenen GND-Pin am PIC. Das wird dir viel über deine Uhr erzählen.
(Versuchen Sie, ein O-Scope auszuleihen, wenn Sie können. Es wird schwierig sein, Dinge ohne eines zu debuggen.)
Der Verdächtige Nr. 2 ist die Macht. Die Leistung ist auch bei Steckbrettern ein großes Problem, da die Induktivität und der Widerstand des Drahtes relativ hoch sind. Auch hier halten Sie die Drähte kurz. Ich stelle auch fest, dass Sie am 40-MHz-Oszillator keine Entkopplungskappen haben. Für das OSC würde ich mit 0,1 uF und etwas Größerem (4,7 uF bis 100 uF) parallel gehen. Ihr PIC könnte parallel zu den 0,1-uF-Kappen auch etwas Größeres verwenden. Normalerweise wären die größeren Kappen nicht erforderlich, aber mit einem Steckbrett ist nichts normal.
Verdächtiger # 3 wird zurückgesetzt. Sie haben uns keine Informationen zum Rücksetzsignal gegeben, und ich würde sagen, dass es das niedrigste von dem ist, was ich vermute, aber Sie sollten es trotzdem überprüfen. Setzen Sie ein O-Scope darauf und sehen Sie, was passiert. Möglicherweise können Sie einfach ein Voltmeter verwenden. Wenn die Spannung am Reset-Pin nahe am Schwellenwert liegt, müssen Sie sie beheben.
Lassen Sie uns nun die Dinge durchgehen, die Sie versucht haben:
Sie haben viele Experimente mit dem Anbringen von Kappen an den Stromleitungen durchgeführt, mit wenigen oder verwirrenden Ergebnissen. Dies ist eine dieser Zeiten, in denen Sie nur einige Kappen setzen müssen und sich keine Sorgen machen müssen, ob sie etwas Positives tun oder nicht. Es kann sein, dass Ihre Stromversorgung laut ist, aber nur eines von mehreren Ursachen für das Problem ist. Fügen Sie größere Kappen parallel zu den 0,1 uF-Kappen am PIC hinzu. Fügen Sie dem 40-MHz-Oszillator Kappen hinzu. Stellen Sie sicher, dass die Kabel so kurz wie möglich sind. Fahren Sie dann mit dem nächsten Schritt fort.
Zusätzliche Leistungsbeschränkungen sind eines der Dinge, die wahrscheinlich keine Probleme verursachen. Deshalb können Sie einfach etwas anziehen und sich nicht zu viele Sorgen machen. Besonders mit 10-100 uF Kappen.
Später, wenn alles funktioniert, können Sie diese Kappen einzeln entfernen und prüfen, ob das Problem erneut auftritt. Wenn es nicht zurückkehrt, waren die Kappen nicht das Problem. Im Moment müssen Sie dies jedoch als potenzielles Problem entfernen, aber Kappen hinzufügen.
Während schwebende Pins ein Problem sein können, sind sie selten groß genug, um einen Absturz einer MCU zu verursachen. Es lohnt sich, das Problem zu beheben, da es andere Probleme verursacht, aber es ist sehr unwahrscheinlich, dass dies hier das Problem ist. Hinweis: Eine einfache Möglichkeit, das Schweben nicht verwendeter Pins zu verhindern, besteht darin, sie als Ausgänge festzulegen! Hoch oder niedrig, spielt keine Rolle. Aber wenn der PIC diese Stifte antreibt, können sie nicht schweben.
quelle
Sie haben den PGM-Pin (manchmal auch LVP genannt) nicht erwähnt. Dies muss niedrig gebunden oder LVP in den Konfigurationsbytes deaktiviert sein.
Sind Sie sicher, dass dieser PIC 40 MHz direkt aufnehmen kann? Einige können nur 40 MHz über die interne PLL erreichen. Ich habe das Datenblatt nicht überprüft, aber Sie sollten. Selbst wenn ja, würde ich nicht erwarten, dass sich 40 MHz auf einem Steckbrett gut verhalten. Ich denke, Sie sollten in der Lage sein, den PIC mit einem 10-MHz-Quarz und der internen 4x-PLL zum Laufen zu bringen, wenn Sie mit dem Steckbrett vorsichtig sind und die Bypass-Kappen an den richtigen Stellen anbringen.
Diese Art von Frage taucht regelmäßig auf. Anstatt alle typischen Probleme zu wiederholen, lesen Sie /electronics//a/29620/4512 .
quelle
Ich muss David zustimmen. Es gibt so viele lange Drähte und 40 MHz auf einem Steckbrett sind ziemlich optimistisch. Ich kann nicht glauben, dass Ihre Zeit wirklich so wenig wert ist, dass Sie es sich nicht leisten können, einen kleinen Prototyp einer Leiterplatte herzustellen . Diese Dinge kosten nur etwa 30 £ von PCB Train . Ich bin sicher, es wird jemanden in Ihrer Nähe geben, der ähnliche Produkte liefern kann.
Warum nicht? Entwerfen Sie eine Leiterplatte, die den PIC, den Oszillator und den Regler als SMD-Komponenten und dann eine ganze Ladung Perf-Board-Streifen enthält. Auf diese Weise können Sie weiterhin Prototypen erstellen, aber stellen Sie sicher, dass der PIC zufrieden ist.
quelle
Wenn Sie einen externen Generator mit variabler F haben, sollten Sie diesen verwenden, um das Layout / den Chip auf Probleme zu testen. und finden Sie externes F, das einen Fehler verursacht. Denken Sie daran, dass verlängerte Erdungskabel als Antenne für Rauschuntersprechen dienen.
quelle
Die Sonde sieht so aus, als ob Sie eine logische Sonde, einen DVM oder einen Bereich benötigen ... http://search.digikey.com/us/en/products/DP%2052/BKDP52-ND/227492
Setzen Sie die Kappe über den Taktchip V + / gnd und ziehen Sie ein Twisted Pair für 40 MHz in Betracht, wenn es weit entfernt ist. Pic xtal hat Ein- und Ausgang. Invertierten Ausgang prüfen DC-Pegel = v / 2? .. wird Pic warm? Ha..
Ich empfehle den 10-MHz-Xtal-PLL-Modus bei 40 MHz, um Layoutprobleme zu vermeiden.
"Der HSPLL-Modus verwendet den HS-Modus-Oszillator für Frequenzen bis zu 10 MHz. Eine PLL multipliziert dann die Oszillatorausgangsfrequenz mit 4, um eine interne Taktfrequenz von bis zu 40 MHz zu erzeugen. Die PLL steht dem Quarzoszillator nur zur Verfügung, wenn der FOSC3: FOSC0-Konfigurationsbits sind für den HSPLL-Modus (= 0110) programmiert. "
quelle