Hallo an alle Nutzer, ich hoffe dass mir hier jemand weiterhelfen kann, ich habe nämlich ein erhebliches Problem. Ich bin vollkommener Neuling auf dem Gebiet der Microcontroller, nun habe ich den ICD2 und schon etwas mit Ihm, MPLAB und MPSIM rumgespielt. Ich habe ein eigenes Projekt entworfen und ein Programm geschrieben. Es war möglich das Programm in ein .ASM und ein .HEX file zu konvertieren. Ich kann den Controller (PIC16F84) auch programmieren und alles. Das Proghramm läuft in der Simulation MPSIM. Allerdings ist es halt ein Anfängerprogramm und somit nicht besonders elegant geschrieben, aber es läuft. Wenn ich den PIC aber nun programmiere und in die Schaltung stecke, schwingt der Oszillator (4Mhz Quarz´) nicht an. Auch ein RC Glied schwingt nicht an. Habe mit der Konfiguration auch schon alles versucht, also als RC Glied, als Xt, HS, LP und alles! Mit einem Oszilloskop konnte ich feststellen, dass alle diese Glieder keine Frequenz liefern. Ich bitte hiermit flehentlich um eine Auskunft wenn mir jemand helfen kann! BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE MfG: Manjavi
Bitte Schaltplan posten...
Alles klar, den stelle ich von zu Hause aus rein! Denke er ist spätestens heute abend gegen 23 Uhr on!
Wie kommst du denn darauf, dass der Quarz nicht schwingt? Vielleicht läuft auch einfach das Programm nicht wie gewünscht...
XT müßte richtig sein, Kondensatoren nicht vergessen! Falls vorhanden, mit Oszi nachsehen, ob da wirklich nichts passiert.
oder das, aber wenn ich am Quarz keine Frequenz messe...? Habe da leider noch keine Erfahrung mit... und in der Simulation lief das Programm ja auch!
Also mit dem Oszilloskop habe ich das ganze schonmal etwas untersucht, ich messe dort lediglich 5V und keine Frequenz! Mit dem Oszi kann ich umgehen... und mein Chef hat da auch nix gefunden (Techniker). Aber danke erstmal, ich werde es fröhlich weiter versuchen! Wenn Ihr sonst noch Ideen habt...immer her damit! ;-)
So, hier einmal die Schaltung! Habe nen netten Chef ;-) Durfte Sie grad hochladen ^^ Irgendwie fehlen leider einige Verbindungen, versuche Sie nachher nochmal besser hochzuladen....
buuuuuuuuuuuuuuuuuuuuuu
Was buuuuuuuuuuuuu?
An unseren lieben Gast hier: Ich denke wir sind bgebildete vernünftige Menschen und können uns gebildet artikulieren, ich glaube auch dass solche Gastnamen nicht unbedingt nötig sind! Oder hast du dich im Forum vertan?
Ist es ein Quarz, oder ein Quarzoszillator? Wenn es ein Quarz ist, dann fehlen die Kapazitäten!!!!
Ok, gerade gefunden... Bisschen $%§$%$&§ gezeichnet... Was haben die denn für einen Wert?
musst im Datenblatt schauen unter crystal... in der Regel um die 22 pF
Also ich habe 27pF genommen. Das ist ein Quarz!
Ich habe für einen 4 MHz Quarz an 16F PIC's Kondensatoren von 15 pF bis 22 pF verwendet. Lief immer ohne Probleme. Wenn die Kondensatoren zu groß sind, kann es sein, dass der Oszillator nicht anschwingt. MfG
auch bei so kleinen werten? ich habe nun nochmal ein neues kleines Programm geschrieben welches nur alle LEDs des PORTB blinken lässt, das Programm funktioniert, auch inner Schaltung, allerdings schwingt nicht der Quarz, sondern es blinkt in ungleicher Zeitfolge ohne besc haltung an den OSC Pins. Und das macht es mit der Konfiguration HS, LP, RC, und XT.... ist das normal?
watchdog off?
Nein, der ist eingeschaltet, hatte ihn aber auch mal aus! Jetzt beim neuen Programm habe ich den wieder drin, aber beim vorherigen habe ich ihn rausgenommen weil er einen Überlauf gemacht hat! Sollte ich den lieber rausnehmen?
JAAAAAAAAAAAAAAAAAAAAAAA!
Hast Du die Oszillator Selection Bits FOSC0 und FOSC1 richtig gesetzt?
Also was ich in der Schaltung bei allen IC's wirklich vermisse, sind die Stützkondensatoren.
Noch zwei weitere Probleme. 1) Wenn du nach dem Einschalten nicht immer per Hand den Resetschalter betätigen willst, dann brauchst Du parallel zum Schalter einen Kondensator. Aus der minimalen Resetdauer (siehe Datenblatt) und dem Pull-up Widerstand kannst du über die Zeitkonstante Tau den Kondensator berechnen. Tau = R*C (für Zeit zum Aufladen eines Kondensators setzt man ca. 3...5 * Tau) 2) Der PIC16F84 hatte noch kein internes Brown out. Er erkennt also ein langsames absinken der Spannung nicht, und löst dann auch keinen automatischen Reset aus. Mit Hilfe eines Komparators mit digitalen Ausgang und vorgeschalteten Spannungsteiler, könntest Du eine Resetschaltung realisieren. Sollte der Quarz nicht anschwingen, kann es am Quarz selber liegen. Ein ähnliches Problem hatte ich auch schon. Dann passen eventuell die Kennwerte des quarzes nicht. Ich habe damals den ursprünglichen Quarz gegen einen Quarz von Epson tauschen müssen. Schau mal im PDF "Mid-Range MCU Familie" auf Seite 2-7 dort werden Quarze empfohlen.
Ich kann die PDF-Datei "Mid-Range MCU Familie" nicht hochladen. Anscheined ist die Datei zu groß. Mein PDF hat die Nummer DS31002A und ist aus dem Jahr 1997. Die Quarz Empfehlungen waren dort im Abschnitt "2.3.2 Component Selection". Das aktuelle PDF kannst Du Dir auf der Seite von Microchip herunterladen. www.microchip.com Tschau Sven!
Mike wrote:
> Hast Du die Oszillator Selection Bits FOSC0 und FOSC1 richtig gesetzt?
Wo kann ich diese Bits denn setzen? Oder wie mache ich das? Doch nicht
in der .inc oder? Soll ich die bei der Initialisierung im ASM file
setzen?
SCHONMAL HERZLICHEN DANK AN ALLE, DIE SICH SOLCHE MÜHE GEBEN MIR ZU
HELFEN!!!!
René Manjavi wrote: > Mike wrote: >> Hast Du die Oszillator Selection Bits FOSC0 und FOSC1 richtig gesetzt? > > Wo kann ich diese Bits denn setzen? Oder wie mache ich das? Doch nicht > in der .inc oder? Soll ich die bei der Initialisierung im ASM file > setzen? in Assembler in der Zeile: __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ^^^^^^^ Alternativ _HS_OSC Diese Symbole sind in der Datei P16F84.INC definiert und beeinflussen eben die FOSC1:FOSC0 Bits. Daraus wird ein entsprechender Eintrag in der Hexdatei erzeugt, welche der Programmer dann nutzt, um die Bits korrekt zu programmieren. Alternativ kannst Du die Bits im Programmer bzw. in MPLAB einstellen (Configure -> Configuration bits). Aber im Sourcecode ist es besser, da es nicht vergessen werden kann. (die AVR-Fans können sicher ein Lied davon singen...) P.S.: Hast Du wirklich einen PIC16F84, nicht einen '84A? Weil der '84A den alten '84 schon seit langem abgelöst hat. Hat aber auf Dein Problem wohl keinen Einfluss.
Genauso wie Du es geschrieben hast sieht meine Konfigurationszeile auch aus.... aber tut sich dennoch nix.... Vielleicht kann ich auch mal versuchen die FOSC0, FOSC1 Bits direkt zu setzen! Ich habe momentan einen 16F84 drin, habe es mit dem 84A auch schon getestet, habe alle 5 Stück günstig in einem Set erhalten, deshalb habe ich den neuen und auch den alten Typen. Ich denke zum Einstieg soll das wohl reichen! Auch wenn er veraltet ist.... DANKE Dir aber schonmal für Deine Mühe!
Auch ganz dollen Dank an Sven Wohlbier!!!!! An die Stützkondensatoren werde ich bei der neuen Schaltung denken, bringe sie vorerst auf meinem Steckbrett mit unter! Der RESET stimmt! Das ist logisch, habe ich vorher auch nicht dran gedacht, werde die neue Platine auch damit ausstatten! DANKE DANKE DANKE!
Ich habe hier mal grad das Programm hochgeladen, wenn das wen interessiert. Wundert Euch nicht über die Kommentare, ich habe die Datei von Microchip ins Deutsche übersetzt um erstmal zu verstehen was da alles so passiert ;-) Ist mein erstes Programm, habe es in ein Beispielprogramm von Microchip geschrieben! Hoffe, Ihr findet meinen Fehler.... ;-)
René Manjavi wrote:
> Hoffe, Ihr findet meinen Fehler.... ;-)
Welchen Fehler? Ist das ein Quiz im Stil: Finde die zehn Unterschiede?
Und was bekommt der Gewinner?
Im Ernst: Läuft jetzt Dein Oszillator? Läuft das Programm? Lässt es sich
korrekt assemblieren? Wenn nicht, wie lautet die Fehlermeldung?
Was sollte das Programm tun, und was tut es statt dessen?
Also, das Programm läuft, es läuft im PIC, es läuft in der Simulation, es gibt weder Error noch Fehlermeldungen, noch Warnings im MPLAB. Mein einziges Problem ist, dass das Programm im PIC nur sehr ungenau läuft, die Zeit passt nicht im geringsten (das Programm lässt alle 8 LEDs am PortB des PICs blinken). Außerdem läuft der PIC nur wenn weder Oszillator, noch RC-Glied angeschlossen sind und ich den OSC1 Pin mit einem Draht berühre der mit meinem Körper (Hand) verbunden ist, ansonsten stockt das Programm sehr häufig und überschlägt sich indem es in unkontrollierten Abständen blinkt! Am Oszillator messe ich eine Frequenz von exakt 100Hz P.S.: Der Gewinner erhält ein fettes Danke und RESPECT ^^^^^^^^^ ( o o ) ( /_\ ) ( = ) ( --- ) / \
Das Problem, dass der PIC stockend das Programm abarbeitet, kann auch an einer nicht oder falsch angeschlossenen MCLR-Leitung liegen. Dann resettet er andauernd. Die MCLR Leitung muss durch 10K mit VDD verbunden sein. Probier mal einen Resonator (MURATA CST x.xx) aus, der braucht keine Kondensatoren, damit muss es also funktionieren. Vergiss ausserdem den normalen 100nf Bypass-Kondensator nicht. Hier findest du weitere Infos: http://www.sprut.de/electronic/pic/osc/index.htm
Soweit ich weiß ist nun mit der Schaltung alles in Ordnung, läuft aber immernoch nicht mit richtiger Frequenz, sprich der Oscillator ,macht immernoch nix.... :-( Aber dennoch herzlichen Dank an alle, die mir hier so zur Seite stehen!
Jepp, die Murrata-Teils sind wirklich cool.. http://www.conrad.ch/goto.php?artikel=726406 Ich verwende immer selbige, gibts aber bei Conrad nur bis 10MHZ.. Unlöblich !
Nja, das mit dem Resonator kann ich ja nochmal testen. Muss ich dann auch auf RC_OSC konfigurieren?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.