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-software.html#libs 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
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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.