Forum: Mikrocontroller und Digitale Elektronik PIC16F84 heftige Probleme, kein Oscillator schwingt an MPLAB, MPSIM.etc.bin Neuling!


von René M. (Firma: Mahee.AG) (majavi)


Lesenswert?

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

von Gast (Gast)


Lesenswert?

Bitte Schaltplan posten...

von René M. (Firma: Mahee.AG) (majavi)


Lesenswert?

Alles klar, den stelle ich von zu Hause aus rein! Denke er ist 
spätestens heute abend gegen 23 Uhr on!

von Gast (Gast)


Lesenswert?

Wie kommst du denn darauf, dass der Quarz nicht schwingt?
Vielleicht läuft auch einfach das Programm nicht wie gewünscht...

von Sebastian (Gast)


Lesenswert?

XT müßte richtig sein, Kondensatoren nicht vergessen! Falls vorhanden, 
mit Oszi nachsehen, ob da wirklich nichts passiert.

von René M. (Firma: Mahee.AG) (majavi)


Lesenswert?

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!

von René M. (Firma: Mahee.AG) (majavi)


Lesenswert?

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! ;-)

von René M. (Firma: Mahee.AG) (majavi)


Angehängte Dateien:

Lesenswert?

So, hier einmal die Schaltung! Habe nen netten Chef ;-) Durfte Sie grad 
hochladen ^^ Irgendwie fehlen leider einige Verbindungen, versuche Sie 
nachher nochmal besser hochzuladen....

von sei ruhig du kleine fotze (Gast)


Lesenswert?

buuuuuuuuuuuuuuuuuuuuuu

von René M. (Firma: Mahee.AG) (majavi)


Lesenswert?

Was buuuuuuuuuuuuu?

von René M. (Firma: Mahee.AG) (majavi)


Lesenswert?

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?

von Gast (Gast)


Lesenswert?

Ist es ein Quarz, oder ein Quarzoszillator?
Wenn es ein Quarz ist, dann fehlen die Kapazitäten!!!!

von Gast (Gast)


Lesenswert?

Ok, gerade gefunden...
Bisschen $%§$%$&§ gezeichnet...
Was haben die denn für einen Wert?

von Enrock J. (Firma: studi) (enrock)


Lesenswert?

musst im Datenblatt schauen unter crystal... in der Regel um die 22 pF

von René M. (Firma: Mahee.AG) (majavi)


Lesenswert?

Also ich habe 27pF genommen. Das ist ein Quarz!

von Atlas (Gast)


Lesenswert?

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

von René M. (Firma: Mahee.AG) (majavi)


Lesenswert?

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?

von Claus P. (claus)


Lesenswert?

watchdog off?

von René M. (Firma: Mahee.AG) (majavi)


Lesenswert?

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?

von Gast (Gast)


Lesenswert?

JAAAAAAAAAAAAAAAAAAAAAAA!

von Mike (Gast)


Lesenswert?

Hast Du die Oszillator Selection Bits FOSC0 und FOSC1 richtig gesetzt?

von Sven W. (woehlb)


Lesenswert?

Also was ich in der Schaltung bei allen IC's wirklich vermisse, sind die 
Stützkondensatoren.

von Sven W. (woehlb)


Lesenswert?

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.

von Sven W. (woehlb)


Lesenswert?

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!

von René M. (Firma: Mahee.AG) (majavi)


Lesenswert?

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!!!!

von Severino R. (severino)


Lesenswert?

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.

von René M. (Firma: Mahee.AG) (majavi)


Lesenswert?

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!

von René M. (Firma: Mahee.AG) (majavi)


Lesenswert?

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!

von René M. (Firma: Mahee.AG) (majavi)


Angehängte Dateien:

Lesenswert?

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....    ;-)

von Severino R. (severino)


Lesenswert?

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?

von René M. (Firma: Mahee.AG) (majavi)


Lesenswert?

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  )
    (   /_\   )
     (   =   )
      ( --- )
       /   \

von Sergey (Gast)


Lesenswert?

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

von René M. (Firma: Mahee.AG) (majavi)


Lesenswert?

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!

von Murratalover (Gast)


Lesenswert?

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 !

von René M. (Firma: Mahee.AG) (majavi)


Lesenswert?

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
Noch kein Account? Hier anmelden.