mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ISO9141/K-Line bzw. Atmega HW UART: 10400baud Problem


Autor: Kermit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
nachdem ich 1 1/2 Tage nun an einem Problem suche, frage ich mal hier 
nach, ob vielleicht noch jemand ein Tipp oder Idee hat:

Ich habe einen Atmega644 und nutze die Hardware UART mit der UART 
Ringbuffer-Library von Peter Fleury: 
http://homepage.hispeed.ch/peterfleury/avr-softwar...

Als UART_BAUD_RATE definiere ich dann 10400. Ich habe es sowohl mit dem 
UART_BAUD_SELECT_DOUBLE_SPEED() und dem UART_BAUD_SELECT() Makro 
probiert. Ich habe auch testweise mal von 8N1 auf 7O1 umgestellt, weil 
ich gelesen habe, dass es K-Line auch so geben soll.

Ich möchte nur auf dem Bus mitlauschen und lasse mir die empfangenen 
Zeichen auf ein Display ausgeben. Das erste 3byte, die ich empfange, 
sollten 0x55, 0x08, 0x08 sein. Mit einem ELM323 kann ich das auch so 
mitloggen (ATH1, ATMA eingeschaltet - nur RX angeschlossen).
Nur mit meiner Atmega644 UART bekomme ich immer 0x55, 0x0F, 0X0F, 0x04 
...

Ich verstehe das echt nicht. Der ELM323 läuft m.W. auch nur fest mit 
10400baud. Ich habe das übrigens mit internem 1MHz RC-Takt (Teiler 8) 
und mit einem externen 20MHz Quarz (ohne Teiler) probiert. Jedesmal 
exakt das selbe Resultat auf der K-Line.

Hat jemand eine Idee, woran das noch liegen könnte? Im Programm benutze 
ich auch keinerlei weitere Interrupts, geschweige denn schalte irgendwo 
Interrupts aus. Das Programm stellt bloß die HEX-Werte der K-Line auf 
einem 4x27 Display da.

Achja, wenn ich UART_BAUD_RATE auf 9600 stelle, dann kann ich 
einwandfrei von einem PC-Terminal Zeichen empfangen und es werden auch 
die korrekten HEX-Werte der Zeichen wiedergegeben!
UART_FRAME_ERROR, UART_OVERRUN_ERROR oder UART_BUFFER_OVERFLOW treten 
bei der K-Line auch nicht auf, weil ich dann auf dem LCD eine 
entsprechende Ausgabe kriegen müsste.


Danke im voraus,
Kermit

Autor: Kermit (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So, mal eine Nacht drüber geschlafen und das Problem ist gelöst!

Der UART-Eingang musste noch invertiert werden. Habe einfach zwischen 
der K-Line Eingangsschaltung vom ELM323 (=seltsam geschalteter 
PNP-Transistor und eine Diode) und dem Atmega noch einen NPN-Transistor 
in Emitterschaltung als Invertierer geschaltet.

Jetzt mal eine einfachere Frage:
Problem: Das ist mir zuviel Schaltaufwand! Kann der Atmega irgendwie 
vielleicht selbst das UART-Eingangssignal invertieren?

Ansonsten habe ich die K-Line Anschaltung aus dem ELM323 Datenblatt mal 
angehangen. Oben kommt direkt die K-Line und rechts der 
Mikrocontrollereingang.
Kann ich eventuell den 4,7K einfach am Emitter gegen +5V schalten statt 
am Kollektor gegen Masse (und den Kollektor folglich direkt an Masse 
legen)? Wenn ich dann mit dem Emitter zum Mikrokontrollereingang gehe, 
müsste ich doch auch ein invertiertes Signal haben? Ich arbeite sonst 
nie mit PNP Transistoren, darum frage ich lieber noch mal nach.
Aber am liebsten wäre es mir, wenn der Atmega den UART-Eingang intern 
noch irgendwie invertieren kann? Geht das? Im Datenblatt habe ich bis 
jetzt nichts gefunden.


Danke im voraus,
Kermit

Autor: aasass (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello Kermit,
I am doing that project too. Do you invert Tx line from Atmega? And 
maybe do you know what is protocol for paugeot 406 with 30 pin 
connector?

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.