www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC: RS232 und CAN gleichzeitig?


Autor: Astroboy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe einen PIC18F4580 und möchte die ECAN Peripherie nutzen. Da ich auch 
den internen UART nutze möchte ich einen Baudratenquarz einsetzen... nun 
ist mir aber aufgefallen, dass sich mit einem Baudratenquarz unmöglich 
die CAN Baudraten erzeugen lassen... Mit dem internen RC Oszi konnte ich 
eine CAN Verbindung aufbauen (125 kBaud).

Muss ich mich nun entscheiden ob ich CAN oder RS232 nutzen will? Was 
verzeiht mir eher einen Baudratenfehler? Ich würde nach jetzigen 
Erkenntnisstand einen 10 MHz Quarz einsetzen und die x4 PLL nutzen 
(40MHz).

Bis auf was für eine Baudrate könnte ich damit noch (sicher!) hoch 
gehen?

Ist es so, dass schon bei geringsten Baudratenfehler es irgendwann zu 
einem Übertragungsfehler kommt (der sampling point müsste sich ja ganz 
langsam verschieben) oder synchronisiert sich der Empfänger (mein PC) 
immer wieder neu mit dem RS232 Datentakt?

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei hohen CAN Raten ist CAN sensibler spezifiziert als UART. Nimm also 
einen für CAN passenden Quarz, der die UART Baudraten mit einem Fehler 
von max 1-2% erzeugen kann. Ich weiss grad nicht ob's dem PIC so passt, 
aber 15MHz (ist dicht genug am Baudratenquarz 14,7xxxMHz) und 16MHz sind 
gute Frequenzen dafür.

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Astroboy wrote:

> Ist es so, dass schon bei geringsten Baudratenfehler es irgendwann zu
> einem Übertragungsfehler kommt (der sampling point müsste sich ja ganz
> langsam verschieben) oder synchronisiert sich der Empfänger (mein PC)
> immer wieder neu mit dem RS232 Datentakt?

Leider hast Du nicht geschrieben, wie Du über RS232 kommunizieren 
willst. RS232 definiert Pegel und Stecker, aber nicht Datenformate etc.

Die meisten meinen jedoch mit RS232 die asynchron-serielle 
Schnittstelle, wie sie auch im PC anzutreffen ist (oder schon war?).

Bei dieser Schnittstelle werden ein Startbit, typischerweise 7 oder 8 
Datenbits sowie ein oder zwei Stopbits übertragen. Der Empfänger 
synchronisiert sich auf das Startbit und wartet anschliessend zuerst mal 
ca. 1,5 x Bitzeit, bevor er das erste Datenbit liest. Somit liest der 
Empfänger ziemlich genau in der Mitte des Datenbytes.
Eine Abweichung von 10% der Bitzeit führt somit nach fünf Bits dazu, 
dass der Empfänger an der "Grenze" zwischen zwei Bits liest, was 
definitiv schief geht. Das heisst aber auch, dass eine Abweichung von 1% 
erst nach 50 Bits wirklich definitiv schief geht, in der Praxis 
jedenfalls erst nach mehr als 10 Bits, und dann ist das Byte ja fertig 
übertragen.

Alles klar?

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.