Forum: Mikrocontroller und Digitale Elektronik 18F46K22 Genauigkeit Taktfrequenz


von Gert S. (treg)


Angehängte Dateien:

Lesenswert?

Moin Moin Forum,
ich habe auf Basis von Platinen und Schaltplänen von SPRUT eine Platine 
gebaut, auf der 3 PIC 18F46K22 ihren Dienst tun sollen. Es geht dabei um 
ein Projekt, bei dem LEDs, in grafischen Mustern aufgebaut, blinken 
sollen.
Eigentlich ein simples Projekt.
Alle drei PICs haben eigene Spannungsversorgungen und werden jeweils 
über einen 8Mhz Quartz getaktet.
Als Funktionstest für die Platine sollen die PICs jeweils an PIN RA0 
einmal alle 2 Sekunden für 1 Sekunde aufleuchten.
Bei eingeschalteter Spannung fangen alle drei PICs brav an zu blinken - 
aber nach ca. 10 Minuten kann man beobachten, dass die PICs nicht mehr 
im Takt sind - die Blinkfrequenz der drei PICs ist dann nicht mehr 
parallel.
Nun frage ich mich, ob dies "normal" ist. Eigentlich sollte doch eine 
mittels Quarz vorgegebene Taktfrequenz stabiler sein. Oder irre ich 
mich?
Jeder Quarz hat seine keramischen Kondensatoren als Ansteuerung - die 
Spannungsversorgung ist konstant 5V und die Programme aller PICs sind 
(bisher zum Testen) völlig identisch...
Ich freue mich auf Rückmeldungen.

Beste Grüße und einen schönen Wochenstart
Treg

von Thomas E. (picalic)


Lesenswert?

Gert S. schrieb:
> Nun frage ich mich, ob dies "normal" ist.

Daß man nach 10 Minuten schon eine merkliche Abweichung im 
Sekundenbereich hat, ist sicher nicht normal. Kann es sein, daß Deine 
PICs evtl. durch eine falsche Konfiguration gar nicht vom Quarz, sondern 
vom internen Oszillator getaktet werden? Wenn der PIC eine Überwachung 
des Oszis hat (nehme ich an): vielleicht schwingen die Quarze nicht und 
er schaltet auf internen Oszi um. Das müsste dann an irgenwelchen 
Statusbits zu sehen sein. Kannst Du die Quarzschwingungen per 
Oszilloskop messen?

Was mir beim Betrachten des Bildes auffällt: Wo sind die 
Abblock-Kondensatoren der PICs?
Wenn die langen Drähte, die von den Kondis an den Quarzen zum Rand der 
Platine gehen, die Masseleitungen sein sollen: das ist zu lang. Verbinde 
die Masse am Oszillator direkt mit der Masse am PIC.

: Bearbeitet durch User
von Volker S. (vloki)


Lesenswert?

Gert S. schrieb:
> Bei eingeschalteter Spannung fangen alle drei PICs brav an zu blinken -
> aber nach ca. 10 Minuten kann man beobachten, dass die PICs nicht mehr
> im Takt sind - die Blinkfrequenz der drei PICs ist dann nicht mehr
> parallel.

Auch wenn die Abweichung innerhalb von 10min ein bisschen extrem 
scheint, ganz (Langzeit)synchron kann das nie werden.
Wäre es nicht einfacher überall den internen Takt zu nehmen und ein 
zusätzliches Sync-Signal hinzuzunehmen, mit dem ein Master alle anderen 
synchronisieren kann?

von Gert S. (treg)


Angehängte Dateien:

Lesenswert?

Hallo Thomas,
danke für Deine schnelle rückmeldung.
Ich habe Dir den Schaltplan beigefügt, der gleichzeitig auch der Bauplan 
für die Platine ist.
In der Tat ist auf der einen Seite die Spannungsversorgung aufgebaut und 
über die "langen Drähte" kommt Masse und +5V zu dem PIC. Allerdings geht 
die Masse sehr direkt zum PIC und der Quartz ist unmittelbar am PIC.
Daran sollte es nicht liegen, oder? Aber was meinst Du mit den 
"Abblock-Kondensatoren"? den Begriff habe ich bei SPRUT nicht (bewußt) 
gelesen?.
Deine Idee hinsichtlich interner Oszillator Takt vs. externem Takt werde 
ich einmal nachvollziehen und werde mich mit dem MIKROELEKTRONIK Board 
und dem Programm im Detail beschäftigen...
Über eine Rückmeldung zu Masse und Abblock-Kondi freute ich mich sehr.
Danke Gert

von Thomas E. (picalic)


Lesenswert?

Gert S. schrieb:
> Aber was meinst Du mit den
> "Abblock-Kondensatoren"?

Je ein 100nF keramischer Kondensatore an jedem(!) der 
Versorgungsspannungs-Pins, zwischen VDD und VSS, und zwar sehr direkt 
(max. wenige Millimeter Leitung dazwischen!)
Gilt für praktisch alle digitalen Schaltkreise. Google mal...

von Klaus (Gast)


Lesenswert?

Volker S. schrieb:
> Wäre es nicht einfacher überall den internen Takt zu nehmen und ein
> zusätzliches Sync-Signal hinzuzunehmen, mit dem ein Master alle anderen
> synchronisieren kann?

Ich würd bei einem den internen Takt nehmen und Clockout aktivieren. 
Dieser ist dann Clockin für die beiden anderen. Mit Prescaler und PLL 
bringt man dann, wenn nötig, alle auf den gleichen CPUtakt. Dann noch 
alle Resets verbinden, damit sie gleich loslaufen.

MfG Klaus

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.