Forum: Mikrocontroller und Digitale Elektronik 16F877A Taktproblem


von arminb (Gast)


Angehängte Dateien:

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

von K. J. (Gast)


Lesenswert?

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

von arminb (Gast)


Lesenswert?

Meine Config sieht so aus:
1
__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

von Sven S. (stepp64) Benutzerseite


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!

von arminb (Gast)


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

von Michael (Gast)


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.

von arminb (Gast)


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

von M. K. (sylaina)


Lesenswert?

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

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.