PIC wird immer wieder zurückgesetzt: Sehe ich Nebenwirkungen bei der Verwendung von Steckbrettern?

11

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 μ F10 μF100 μF470 μ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 Ω10 kΩ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) Geben Sie hier die Bildbeschreibung ein

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.

AndrejaKo
quelle
1
Hmm, ich wollte WDT und Brown-out vorschlagen, aber Sie haben diese deaktiviert. Wissen Sie, dass es einige Errata mit dem Brownout für diesen PIC gibt? Ich habe noch nie versucht, einen PIC so schnell auf einem Brotbrett auszuführen. Wir verwenden den 18F4580 ständig mit 10-MHz-Oszillator und HSPLL. Sie funktionieren gut.
Raketenmagnet
2
Vergessen Sie das Steckbrett (ich benutze es nie) und verwenden Sie eine richtige Platine, das spart viel Zeit.
Leon Heller
3
@Leon Heller Es kann viel Zeit sparen, aber in diesem Moment ist die Leiterplatte teurer als meine Zeit, zumal ich nicht einmal eine Liste aller wichtigen Komponenten habe, die ich verwenden werde.
AndrejaKo
1
@AndrejKo Das klingt nach einem dieser Probleme, die mich dazu bringen, mich zu einem Ball zusammenzurollen und zu weinen. Sind Sie sicher, dass Ihre Zeit so wenig wert ist? Ich würde nur die Platine machen - es macht normalerweise auch so viel Spaß!
AngryEE
1
@AndrejaKo: Wenn es Ihnen nichts ausmacht, eine Woche oder so zu warten, hatte ich großen Erfolg mit dieser Gruppen-PCB-Bestellung: dorkbotpdx.org/wiki/pcb_order . Wenn Sie nicht Ihre eigenen machen wollen, ist das
Chris Laplante

Antworten:

12

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 EnableKonfigurationsbit aktiviert? Ist dein PGMStift an PORTB? In diesem Fall sollten Sie in Betracht ziehen, beide Low Voltage Programming Enableund Port B A/D Enabledie digitalen Eingänge beim Zurücksetzen zu deaktivieren . Meinem alten Bericht zufolge geschahen wir PORTBschwebend, während es sich um analoge Eingänge handelte, und lösten den PGMPin 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.

Jon L.
quelle
Interessant! Vor ein paar Minuten habe ich festgestellt, dass die Verbindung zum Programmierer das Problem und jetzt diese Antwort beeinflusst hat. Ich habe den Port BA / D und den LVP deaktiviert und es funktioniert bisher einwandfrei. Es könnte eine seltsame Interaktion auf dem PGM-Pin sein.
AndrejaKo
@AndrejaKo, das kommt mir sehr bekannt vor. Ich hoffe, es bleibt stabil ... knifflige Hardware kann extrem frustrierend sein, wenn Sie versuchen, etwas zu erledigen: S
Jon L
1
Nun, es läuft seit 21 Minuten und 30 Sekunden einwandfrei. Ich hoffe, dass es so bleibt. Ich lasse es einfach über Nacht laufen und sehe, ob es zurückgesetzt wird.
AndrejaKo
Groß! Ich bin froh, dass es das Problem gelöst hat.
Abdullah Kahraman
1
Ich habe einen ganzen Tag damit verbracht herauszufinden, warum in aller Welt mein PIC 16F887 alle paar ms zurückgesetzt wurde. Die Niederspannung im Schaltkreis-Prog wurde eingestellt und der schwebende PGM-Pin nahm Rauschen auf, das den Reset auslöste. +1 Wiederholung für Sie
Gianluca Ghettini
7

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
2
Eine gute Antwort. All diese langen, unordentlichen Drähte ließen mich nur denken, dass der Versuch, dies auf einem fiesen Steckbrett zum Laufen zu bringen, die Zeit und das Elend nicht wert war.
Raketenmagnet
Schöne Liste! Ich werde Ergebnisse melden, wenn ich es durchlaufe.
AndrejaKo
4

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 .

Olin Lathrop
quelle
Scheint, als hätten wir hier zwei richtige Antworten :)
Abdullah Kahraman
2

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.

PC-Prototyp Perf Board

Raketenmagnet
quelle
2
Ah, ich liebe Altiums 3D! Übrigens können 30 Pfund für einen Studenten hoch sein :) Es ist besser, ein Perf-Board oder besser eine selbstgemachte Leiterplatte zu verwenden.
Abdullah Kahraman
1
Sollte es gelingen, eine selbstgemachte Leiterplatte herzustellen, werde ich es auf jeden Fall mit dieser Idee versuchen.
AndrejaKo
2
@AndrejaKo - Cool. Dann kreuzen Sie uns an :) - Oder legen Sie einfach zwei Reihen Nadelstreifen hinein, damit Sie sie in ein Steckbrett stecken können.
Raketenmagnet
1

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.

Tony Stewart Sunnyskyguy EE75
quelle
0

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. "

Tony Stewart Sunnyskyguy EE75
quelle
Ich habe tatsächlich versucht, HSPLL und 10-MHz-Quarz zu verwenden, aber im HSPLL-Modus werden die gleichen Ergebnisse wie beim Oszillator angezeigt. Es funktioniert gut im HS-Modus.
AndrejaKo
Außerdem wird der PIC während des Gebrauchs nicht warm, soweit ich sehen kann.
AndrejaKo