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
Hi haste vielleicht das configwort falsch gesetzt und haste pin1 (MCLR) über >47K an VDD ?
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
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!
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.