PIC und Takterzeugung

Gast #274794
Lesenswert?
• ▲
▼
Hallo!

Ich plane zwei PIC16F877 einzusetzen, die über eine längere
Datenleitung mit etwa 10-100kbit/s kommunizieren sollen. Dabei kann es
möglich sein, dass auf beiden Seiten Temeparturunterschiede von etwa
30° herrschen.

Kann ich damit zur Takterzeugung immer noch auf die interne
zurückgreifen, oder bieten externe Quarze eine höhere Genauigkeit? Als
Geschwindigkeit reichen 4MHz aus.

Gruß,
Rainer
Gast #274796
Lesenswert?
• ▲
▼
Die Quarze kriegst Du niemals synchron, egal wie die Temperatur ist. Der
Drift (Abweichungsgeschwindigkeit) ist immer zu hoch; selbst sauteure
Quarze müssen nach einer gewissen Zeit nachsynchronisiert werden. Der
interne Oszillator besteht nur aus Widerstand und Kondensator, und hat
eine sehr schlechte Genauigkeit; ist eigentlich nur für Projekte
geeignet wo das Timing nicht besonders kritisch ist. Selbst billige
Quarze sind viel genauer.

Du solltest den Takt auf jeden Fall mitübertragen. Kommt auf das
Protokoll an, welches Du verwendest; bei I2C hast Du eine separate
Taktleitung, aber es gibt auch selbsttaktende Codes, wie sie z.B. bei
Ethernet benutzt werden; da brauchst Du keine eigene Taktleitung.

Wie lang soll das Kabel denn sein? Vielleicht ist I2C durchaus
geeignet.
#274797
Lesenswert?
• ▲
▼
Hallo Kowalkowski!

Danke für die Antwort. Das mit dem Timing der Taktgeber habe ich mir
schon gedacht. Nachsynchronisieren ist auf jeden Fall notwendig.

Ich wollte nur auf den EUSART zugreifen, der im PIC enthalten ist. Auf
eine eigene Taktleitung wollte ich verzichten, da nachher die Daten
über RS-485 übertragen werden, und somit zwei Leitungen weniger
anfallen. Da bei jedem übertragenen Byte synchronisiert wird, dürfte
eine Taktabweichung nicht so ins Gewicht fallen.

Die Kabellänge soll 10m sein.

Dann werde ich auf einen externen Taktgeber zurückgreifen. Welche sind
denn gut und günstig bis 4MHz?

Gruß,
Rainer
#274800
Lesenswert?
• ▲
▼
So wie es aussieht, werde ich bei 4MHz Takt bei 19.2kbit/s landen mit
einem Fehlerprozent von 0.16. Das reicht immerhin für geplante 600
Aktualisierungszyklen pro Sekunde. Wenn es dann technisch noch
funktionieren sollte - in der Klimakammer unter der Höhensonne - dann
kann ich noch in der Übertragungsrate höher gehen.
Gast #274801
Lesenswert?
• ▲
▼
Du könntest auf einen PIC18F umsteigen, die laufen bis zu 10x schneller
(40Mhz).

Ich weiß ja nicht welche Daten Du übertragen willst, aber Du könntest
evtl. auch eine intelligente Komprimierung einbauen. Wenn sich die
Werte nicht extrem schnell ändern kann man z.B. so Sachen machen wie:
Absolut Wert übertragen (z.B. 32 Bit), danach 50x nur noch relative
Änderungen (8 Bit), dann wieder Absolut Wert usw. Wenn die Werte nicht
sehr stark schwanken, kann man mit so Verfahren die Übertragungsrate
recht einfach verdoppeln oder verdreifachen.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.