mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 16F877A Taktproblem


Autor: arminb (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich bin ein ziemlicher Neuling in der Materie µC. Deswegen hätte ich 
eine Frage zu meinem "Problem".
Ich arbeite mit einem PIC16F877A. Was ich bereits geschafft habe, ist es 
ein Programm reinzuspielen (Das Programm ist definitiv drinnen, ich kann 
es über den Brenner [Brenner9N - 
http://sprut.de/electronic/pic/projekte/brenner9/index.htm)] wieder aus 
dem µC auslesen). Woran es aber scheitert ist die Ausführung des 
Programms. Das Programm soll einfach eine LED auf PIN19 ein- und 
ausschalten. Das Programm ist fehlerfrei - ich habe es in der Schule 
getestet.
Nun, alles schön und gut. Ich bringe es jedoch nicht zusammen einen Takt 
zu erzeugen. Ich habe schon alle Methoden versucht: RC-Schaltung, Quarz 
(20MHz und 3.579MHz) und sogar eine externe Taktquelle (NE555).
Beim Quarz habe ich auch beachtet zwei Kondensatoren (22pF) an den 
Anschlüssen mit Masse zu verbinden und dass er zwischen PIN13 und PIN14 
hängt.
Die externe Taktquelle habe ich lediglich an PIN13 angeschlossen und 
PIN14 freigelassen.

Erkennt vielleicht irgendwer in meiner Vorgehensweise irgendwo den Wurm, 
es ist nämlich recht frustrierend :D Bin für jede Hilfe dankbar!


mfg

Autor: K. J. (theborg0815) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi haste vielleicht das configwort falsch gesetzt und haste pin1 (MCLR) 
über >47K an VDD ?

Autor: arminb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meine Config sieht so aus:
__config _XT_OSC & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_OFF

PIN1 habe ich direkt auf Vdd angeschlossen. Meinst du ich muss einen 47k 
Widerstand davorschalten?

mfg

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also bei 20Mhz musst du den HS Mode benutzen. Der XT Mode geht nur bis 
4MHz. Für den 3.579MHz Quarz wäre der XT Mode zwar der richtige, da 
steht aber im Datenblatt, dass die Kondensatoren nur 15pF haben sollen. 
Also 20MHz, 22pF und der HS-Mode sollten gehen. Bau den Quarz und die 
Kondensatoren so nah wie möglich an den PIC (also so maximal 1-2cm weg 
von den PINs). Dann sollte der Quarz auch anschwingen.

Sven

PS: und die obligatorischen 100nF zwischen +5V und GND nicht vergessen!

Autor: arminb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt habe ich bereits versucht:

20MHz mit 22pF (Abstand auch beachtet)
100nF zwischen Vdd und Vss(GND) - verstehe den Zweck davon nicht
47k Widerstand zwischen Vdd und MCLR - verstehe den Zweck davon nicht

... und die LED leuchtet weiter munter vor sich hin, kein Anzeichen von 
einem Blinken. Das einzige Blinken zeigt sich nach dem Einspielen vom 
Programm. Das ist aber unregelmäßig und dauert nur kurz an.

mfg

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie sieht denn dein Programm aus? Nicht in der Art

start  Pin1 = !Pin1
         goto start

oder? Wenn doch, dann blinkt die LED verdammt schnell. Um es genauer zu 
formulieren:

Wie lang ist die An- und Auszeit deiner LED?

>100nF zwischen Vdd und Vss(GND) - verstehe den Zweck davon nicht

Das dient dazu, hochfrequente Störungen auf der Versorgungsleitung kurz 
zu schließen. Diese Störungen können nämlich deinen Pic aus dem Takt 
bringen was du ja nicht willst.

>47k Widerstand zwischen Vdd und MCLR - verstehe den Zweck davon nicht

MCLR muss, für korrekten Betrieb, auf High liegen. Du könntest also auch 
einfach einen Draht zwischen Vdd und MCLR legen. Beim ICSP jedoch müssen 
die beiden Potentiale getrennt sein. Ein Widerstand ist da das 
Einfachste. Beim ICSP wird MCLR auf ein wesentlich höheres Potential 
gehoben als Vdd, klar was passiert wenn der Widerstand nicht da wäre. Es 
gibt z.B. auch eine sogenannte Brown-Out-Schaltung, wenn da mal die 
Versorgungsspannung unter einen bestimmten Pegel fällt und wieder zurück 
kommt resettet die Brown-Out-Schaltung den Pic (ein abfallen der 
Versorgungspannung kann den Pic nämlich auch aus dem Takt hebeln) aber 
das ist dann schon komplizierter als ein Widerstand.

Autor: arminb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Der Fehler lag doch im Programmcode. Ich habe PIN19 zwei mal gesetzt und 
nicht wie es richtig gewesen wäre ein mal gesetzt und ein mal 
rückgesetzt.

Der Takt funktioniert jetzt mit einem 4MHz Quarz (lag hier noch rum), 
jedoch auch ohne irgendwelche Kondensatoren, die gegen Masse geschlossen 
sind.

Danke euch auf jeden Fall für eure Hilfe!

mfg

Autor: M. Köhler (sylaina)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na dann reichen wohl die parasitären Kapazitäten aus, Lastkondensatoren 
sind aber nie schlecht die zu verwenden ;)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.