Forum: Mikrocontroller und Digitale Elektronik 18F46K22 Genauigkeit Taktfrequenz


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Gert S. (treg)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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

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]
  • [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.