PIC wird immer wieder zurückgesetzt: Sehe ich Nebenwirkungen durch die Verwendung von Steckbrettern?

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-Quarzes im HS-Modus scheint in Ordnung zu sein, und ein 5-MHz-Quarz im HSPLL-Modus funktioniert ebenfalls einwandfrei.

Was passiert ist, dass der PIC startet, für ein paar Sekunden arbeitet und dann für eine Weile herunterfährt und wieder startet. Die Gesamtdauer des Zyklus beträgt etwa 5 Sekunden, von denen die PIC-Arbeit früh in der zweiten Sekunde aufhört zu arbeiten.

Ich habe auch bemerkt, dass der PIC manchmal gut funktioniert, wenn ich dem Strombus 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 Kondensator dort versorge oder einen Kondensator platziere, der nicht vollständig entladen wurde, bleibt das Problem bestehen.

Ich habe auf einigen Seiten gelesen, dass ähnliche Probleme wie bei mir aufgrund eines erhöhten Stromverbrauchs des PIC bei höherer Frequenz und niedrigerer Betriebsspannung auftreten können. Wenn in diesen Fällen einige kurze Spannungsabfälle an der Stromversorgung auftreten, erreichen sie mit größerer Wahrscheinlichkeit die niedrigste Betriebsspannung des PIC auf dieser Frequenz. Daher ist es eine gute Idee, zusätzliche Kondensatoren auf dem Steckbrett zu haben, um dieses Problem zu lösen. Da unter Volllast bei 40 MHz die ganze Schaltung ca. 64 mA verbraucht, war meine erste Idee, welche zu setzen 10   μ F Tantalkondensatoren 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 fügte ich eine hinzu 100   μ F Aluminiumkondensator und das half auch nicht. Dann fügte ich eine hinzu 470   μ F Aluminiumkondensator ohne Wirkung. Am Ende fügte ich einen 1 mF Aluminium-Elektrolytkondensator hinzu und dann funktionierte die Schaltung zum ersten Mal gut, bis sie aus- und 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 Spielraum bis zu 4,2 V lassen, was die niedrigste Betriebsspannung bei 40 MHz ist

Als nächstes habe ich gelesen, dass schwebende Ausgänge manchmal Störungen verursachen können, also habe ich einige eingefügt 10   k Ω Pulldown-Widerstände an allen unbenutzten Pins und das half auch nicht. Danach habe ich gelesen, dass es manchmal Probleme geben kann, wenn die Oszillatoreingänge schweben, also habe ich versucht, sie mit einigen mit GND zu verbinden 10   M Ω Widerstände und das hat nicht geholfen.

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-Quarz erwartet, der sich sehr nahe an den Oszillatorstiften des PIC befindet. Auch mit Kristall würde ich auch im HS-Modus Probleme erwarten, wenn die Verzerrung des Oszillatorsignals aufgrund des Steckbretts das Problem wäre, aber im HS-Modus funktioniert der PIC einwandfrei.

Normalerweise verwende ich 33-pF-Kondensatoren 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 über eine ausfallsichere Taktüberwachung und eine Umschaltung zwischen internem und externem Oszillator verfügt. Ich habe versucht, beide zu aktivieren, in der Hoffnung, dass sie zumindest bestätigen würden, dass das Problem beim Oszillator liegt, aber sie helfen nicht bei dem Problem. Es gibt keinen Unterschied, ob sie ein- oder ausgeschaltet sind.

Ich habe auch zu Testzwecken Watchdog-Timer, Brown-Out-Reset und Stack Over/Underflow-Reset deaktiviert. Ich glaube, ich habe alle Reset-Quellen für diesen Chip ausgeschaltet. Außerdem befindet sich das Programm in einer Endlosschleife, endet also nicht.

Der PCF8583 hat keine Probleme und funktioniert auch dann noch korrekt, wenn sich der PIC selbst zurücksetzt, aber 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 viel ich ihm vertrauen kann, und ich weiß nicht, ob das ausreichen würde, um Probleme für den PIC zu verursachen. Wenn alles ausgeschaltet ist, liegt das Rauschen bei etwa 100 mV von Spitze zu Spitze, 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

Also hat jemand eine Ahnung, was hier los ist?

Am Ende könnte ich den PIC einfach mit 20 MHz betreiben, aber sollte ich mehr Rechenleistung benötigen, würde ich ihn gerne mit 40 MHz betreiben können.

AKTUALISIEREN

Ich habe einen anderen Regler am Steckbrett selbst platziert und das von der Soundkarte aufgenommene Rauschen ist jetzt viel geringer (etwa 50 mV Spitze zu Spitze), aber es hat das Hauptproblem nicht beeinflusst.

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 laufen zu lassen. Wir verwenden die ganze Zeit den 18F4580 mit 10-MHz-Oszillator und HSPLL. Sie funktionieren gut.
Klingt für mich nach einem Regler-Ripple-Effekt. Wellen können nicht von Elektrolytkappen gebeugt werden, wo ist Ihr Regler? Gehen Sie dorthin und fügen Sie Keramikkappen auf beiden Seiten des Reglers hinzu und filtern Sie die Wellen so weit, dass die Bulk-Kappe damit umgehen kann.
@Rocketmagnet Dieser PIC hat keine Errata im Zusammenhang mit Brown-Out. Die Revision, die ich verwende, hat nur Errata, die sich auf MSSP beziehen. Errata für frühere Revisionen scheinen auf mein Problem nicht anwendbar zu sein.
@sandun dhammika Ich habe bereits Keramik auf dem Regler. Der Regler selbst sieht für mich gut aus. Ich hatte keine Probleme damit, Geräte mit noch höheren Taktraten und höherem Stromverbrauch als diesem zu betreiben. Für alle Fälle werde ich versuchen, dem Steckbrett einen Regler hinzuzufügen und sehen, ob es einen Unterschied macht.
Vergessen Sie das Steckbrett (ich benutze es nie) und verwenden Sie eine richtige Leiterplatte, das spart viel Zeit.
@Leon Heller Es kann viel Zeit sparen, aber im Moment ist die Leiterplatte teurer als meine Zeit, zumal ich nicht einmal eine Liste aller Hauptkomponenten habe, die ich verwenden werde.
Versuchen Sie, die Erdungsstifte der Ladekappen von Crystal direkt in die Erdung des PIC zu stecken. Nur meine zwei Cent und deine 1 Minute :) Ich hoffe zwar nicht, dass es funktionieren wird, aber du wirst nichts verlieren, wenn du es versuchst :)
Versuchen Sie außerdem, wenn möglich, den MCLR-Port zu deaktivieren und ihn in den Konfigurationswörtern als digitalen Eingang zuzuweisen.
@abdullah kahraman Ich habe beides versucht und es hat nicht geholfen.
Wenn Sie ein Multimeter haben, versuchen Sie, Vcc zu messen, vielleicht sehen Sie einen plötzlichen Abfall und steigen dann an, wenn die MCU zurückgesetzt wird.
@AndrejKo Das hört sich nach einem dieser Probleme an, bei denen ich mich zu einem Ball zusammenrollen und weinen möchte. Sind Sie SICHER, dass Ihre Zeit so wenig wert ist? Ich würde einfach die Platine machen - es macht normalerweise auch so viel Spaß!
@abdullah kahraman Mit einem Multimeter sehe ich nichts. Die Soundkarte sieht nur das Fehlen von Rauschen, das meiner Meinung nach durch das Umschalten der MCU verursacht wird.
@AngryEE Leider bin ich nicht gut mit der Herstellung von Leiterplatten zu Hause (ich habe tatsächlich einen schönen Stapel Leiterplatten, die nie entstanden sind). Da ich dafür irgendwann eine Platine machen muss, bin ich dabei, eine UV-Lampe zu jagen, aber es dauert seine Zeit.
Sie brauchen keine UV-Lampe, ich habe es geschafft, 10. Linienbreite, Linienabstand sehr einfach mit der Tonertransfermethode zu machen.
@abdullah kahraman Andererseits habe ich es nach zahlreichen Versuchen nicht geschafft, das Transferpapier mit Tonertransfer überhaupt von der Leiterplatte zu entfernen. Es bleibt immer auf der Leiterplatte haften und die Kraft, die erforderlich ist, um es zu bewegen, reicht aus, um das übertragene Layout auf der Leiterplatte zu entfernen.
@abdullah kahraman Ich hoffe, ich frage nicht zu viel, aber könntest du, wenn du genug Zeit hast, im Chat erklären, wie genau du den Tonerübertragungsprozess durchführst?
Natürlich.. Ich gehe jetzt in den Chat.
@AndrejaKo: Wenn es Ihnen nichts ausmacht, eine Woche oder so zu warten, ich hatte großen Erfolg mit dieser Gruppen-PCB-Bestellung: dorkbotpdx.org/wiki/pcb_order . Wenn Sie nicht Ihre eigenen machen wollen, das ist
Ich mache meine eigenen PCBs mit dem Fotoätzverfahren, es ist sehr einfach: forums.parallax.com/showthread.php?137896-Making-PCBs-at-home
Die Oszillatorkondensatoren bringen mich zum Weinen. Sehr anfällig für Probleme und enorme EMI-Emissionen. Überprüfen Sie Ihr Quarzdatenblatt, unabhängig von der Lastkapazität, verdoppeln Sie sie und subtrahieren Sie einige pF für Streu-C, obwohl Sie in dieser Situation möglicherweise 10 pF-Streu haben. Cuse = (2*Cl)-Cstray Ich bringe die Oszillatorkappen immer direkt zum nächsten Prozessor-Erdungsstift zurück und ohne irgendetwas anderes zu berühren. Das allein könnte dein Problem verursachen. In Ihrem Fall würde ich sie von dieser Schiene abziehen und direkt an den Chipstift löten. Stapelprobleme in der Software können auch die gleichen Symptome verursachen.
@ user103218 Ich bin mir nicht sicher, ob Sie sich dessen bewusst sind, aber das Problem in dieser Frage wurde vor 7 Jahren gelöst und hatte nichts mit dem Kristall zu tun.

Antworten (6)

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 aufgestöbert habe, scheint es hier gelöst worden zu sein:

Hast du das Low Voltage Programming EnableKonfigurationsbit aktiviert? Ist dein PGMPin dran PORTB? Low Voltage Programming EnableWenn dies der Fall ist, sollten Sie in Betracht ziehen, sowohl als Port B A/D Enableauch die digitalen Eingänge beim Zurücksetzen zu deaktivieren . Laut meinem alten Bericht ließen 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 am Ende haben wir dieses Projekt erfolgreich abgeschlossen, also könnte es einen Versuch wert sein.

Interessant! Erst vor ein paar Minuten habe ich bemerkt, dass die Verbindung mit dem Programmierer das Problem beeinflusst hat, und jetzt diese Antwort. Ich habe den Port BA/D und das LVP deaktiviert und bisher funktioniert es einwandfrei. Es könnte eine seltsame Interaktion auf dem PGM-Pin sein.
@AndrejaKo, das kommt mir von dem, was ich erlebt habe, sehr bekannt vor. Ich hoffe, es bleibt stabil ... knifflige Hardware kann extrem frustrierend sein, wenn man versucht, etwas zu erledigen :S
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 schaue, ob es sich zurücksetzt.
Großartig! Ich bin froh, dass es das Problem gelöst hat.
Ich habe meinen Tag versüßt, Bruder, ich habe einen ganzen Tag damit verbracht, herauszufinden, warum um alles in der Welt mein PIC 16F887 alle paar Millisekunden zurückgesetzt wurde. Die niedrige Spannung im Schaltungsprogramm wurde eingestellt und der schwebende PGM-Pin nahm Rauschen auf, das den Reset auslöste. +1 Wiederholung für Sie

Bei einem solchen Setup ist es für uns fast unmöglich, genau zu sagen, was schief läuft. Was wir jedoch sagen können, ist, was falsch ist. Vieles ist falsch, oder zumindest nicht so richtig, wie es kalt ist. Jedes dieser Dinge könnte die eigentliche Ursache Ihres Problems sein, aber es könnte auch eine Kombination von Problemen erfordern, die zusammengenommen dem Problem entsprechen, das Sie sehen.

Die einzige wirkliche Möglichkeit, 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 MCU wie diese nicht richtig läuft, müssen Sie sich fast immer auf die Grundlagen konzentrieren: Power, Clock und Reset. Bei einem Steckbrett sind alle drei verdächtig!

Der Verdächtige Nr. 1 ist für mich der 40-MHz-Takt. 40 MHz sind ziemlich schnell, um über ein in der Luft schwebendes Kabel zu laufen. 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 Leiterbahnimpedanz konsistent ist und Ihre Signale ordnungsgemäß terminieren. Leider kann man das auf einem Steckbrett 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 auf dem Taktsignal, das direkt am PIC-Pin abgetastet wird, wobei die GND-Leitung der Sonde auch direkt am nächsten GND-Pin am PIC liegt. Das wird Ihnen viel über Ihre Uhr sagen.

(Versuchen Sie, sich ein O-Scope auszuleihen, wenn Sie können. Es wird schwierig sein, Dinge ohne eines zu debuggen.)

Der Verdächtige Nr. 2 ist Macht. Die Stromversorgung 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 beim 40-MHz-Oszillator keine Entkopplungskappen haben. Für den 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 bei einem Steckbrett ist nichts normal.

Verdächtiger #3 wird zurückgesetzt. Sie haben uns keine Informationen über das Reset-Signal gegeben, und ich würde sagen, dass es das niedrigste von dem ist, was ich vermute, aber Sie sollten es trotzdem überprüfen. Setze ein O-Scope darauf und schaue, 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 der Platzierung von Kappen auf den Stromleitungen durchgeführt, mit wenigen oder verwirrenden Ergebnissen. Dies ist eine dieser Zeiten, in denen Sie nur ein paar Obergrenzen setzen müssen und sich keine Sorgen darüber machen müssen, ob sie etwas Positives bewirken oder nicht. Es könnte sein, dass Ihr Strom laut ist, aber dies ist nur eine von mehreren Ursachen des Problems. 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. Achten Sie darauf, dass die Leitungen so kurz wie möglich sind. Fahren Sie dann mit der nächsten Sache fort.

Zusätzliche Leistungsbegrenzungen sind eines der Dinge, die wahrscheinlich keine Probleme verursachen. Deshalb können Sie einfach welche anziehen und sich nicht zu viele Gedanken darüber machen. Besonders mit 10-100 uF-Kappen.

Später, sobald alles funktioniert, können Sie diese Kappen einzeln entfernen und sehen, ob das Problem erneut auftritt. Wenn es nicht zurückkehrt, waren die Kappen nicht das Problem. Aber jetzt müssen Sie dies als potenzielles Problem entfernen, aber Kappen hinzufügen.

Floating Pins können zwar ein Problem darstellen, sind aber selten groß genug, um eine MCU zum Absturz zu bringen. Es lohnt sich, es zu reparieren, da es andere Probleme verursacht, aber es ist sehr unwahrscheinlich, dass es hier das Problem ist. Hinweis: Eine einfache Möglichkeit, das Schweben unbenutzter Pins zu verhindern, besteht darin, sie als Ausgänge festzulegen! Ob hoch oder niedrig, spielt keine Rolle. Aber wenn der PIC diese Stifte antreibt, können sie nicht schweben.

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.
Schöne Liste! Ergebnisse werde ich berichten, wenn ich es durch habe.

Sie haben den PGM-Pin (manchmal auch LVP genannt) nicht erwähnt. Dies muss in den Konfigurationsbytes niedrig gebunden oder LVP deaktiviert werden.

Sind Sie sicher, dass dieser PIC 40 MHz direkt aufnehmen kann? Manche erreichen über die interne PLL nur 40 MHz. 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 Bypass-Kappen an den richtigen Stellen platzieren.

Solche Fragen kommen regelmäßig. Anstatt alle typischen Probleme zu wiederholen, siehe https://electronics.stackexchange.com/a/29620/4512 .

Scheint, als hätten wir hier zwei richtige Antworten :)

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, eine kleine Prototyp-Leiterplatte herzustellen . Diese Dinge kosten bei PCB Train nur etwa 30 £ . Ich bin sicher, es gibt jemanden in Ihrer Nähe, der ähnliches liefern kann.

Warum tun Sie dies nicht? Entwerfen Sie eine Leiterplatte, die den PIC, den Oszillator und den Regler als SMD-Komponenten enthält, und dann eine ganze Menge Perfboard-Streifen. Auf diese Weise können Sie immer noch Ihr Prototyping durchführen, aber sicher sein, dass der PIC zufrieden ist.

PC-Prototyp-Perfboard

Ah, ich liebe 3D von Altium! Übrigens, 30 £ können für einen Studenten hoch sein :) Es ist besser, ein Perfboard oder besser eine selbstgebaute Leiterplatte zu verwenden.
Sollte es gelingen, eine selbstgebaute Platine zu machen, werde ich es auf jeden Fall mit dieser Idee versuchen.
@AndrejaKo - Cool. Geben Sie uns ein Häkchen :) - Oder setzen Sie einfach zwei Reihen Stiftleisten ein, damit Sie es in ein Steckbrett stecken können.

Wenn Sie einen externen Variablen-F-Generator haben, sollten Sie diesen verwenden, um das Layout / den Chip auf Probleme zu testen. und finden Sie externes F, das Fehler verursacht. Denken Sie daran, dass verlängerte Erdungskabel als Antenne für Rauschübersprechen fungieren.

Sonde sieht so aus, als ob Sie eine Logiksonde, ein DVM oder ein Oszilloskop benötigen ... http://search.digikey.com/us/en/products/DP%2052/BKDP52-ND/227492

Legen Sie eine Kappe über den Taktchip V + / Masse und ziehen Sie ein verdrilltes Paar für 40 MHz in Betracht, wenn es weit entfernt ist. Pic xtal hat Ein- und Ausgang. Überprüfen Sie den invertierten Ausgang 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 nutzt den HS-Modus-Oszillator für Frequenzen bis zu 10 MHz. Eine PLL multipliziert dann die Oszillator-Ausgangsfrequenz mit 4, um eine interne Taktfrequenz von bis zu 40 MHz zu erzeugen. Die PLL steht dem Kristalloszillator nur zur Verfügung, wenn die FOSC3:FOSC0 Konfigurationsbits sind für den HSPLL-Modus programmiert (= 0110)."

Ich habe tatsächlich versucht, HSPLL und 10-MHz-Quarz zu verwenden, aber im HSPLL-Modus zeigt es die gleichen Ergebnisse wie der Oszillator. Im HS-Modus funktioniert es einwandfrei.
Auch wird der PIC meines Erachtens während des Betriebs nicht warm.