Gast
#1282363
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
