Hi, nachdem ich nun alles, was zum Bau meines Auto-Diagnosegeräts nötig ist, fertig habe, hänge ich an einer letzten Hürde, die ich mir auch nicht ergooglen konnte. Ich habe zwei Prozessoren, einen Mega und einen ELM323. http://www.elmelectronics.com/DSheets/ELM323DS.pdf Der ELM ist eigentlich ein PIC und sendet und empfängt RS232-Daten. Ich habe ihn gekreuzt mit Rx(Pin5) und Tx(Pin6) an den ATMEL gehangen, beide liegen außerdem auf der gleichen Masse, haben aber eine getrennte 5V-Zufuhr (Beide einen eigenen 7805). Das Problem ist nun aber, dass ich nur Datenmüll empfange. Ich habe den ELM323 streng nach dem Datenblatt Seite 18 aufgebaut, ans Auto habe ich Ihn noch nicht angeschlossen. Man kann ihn über "AT-Befehle" nach seiner Versionsnummer fragen, anscheinend empfängt er da auch irgendwas, denn er gibt mir ja was aus, was er sonst - so jebenfalls das Datenblatt - nicht machen würde. Das was er empfängt, gebe ich auf einem Display aus. Da andere Texte einwandfrei auf dem Display landen, scheidet für mich eine Fehlerquelle hier auch aus. Auch die Baudrate, Stopbit etc stimmen. Jetzt habe ich gelesen, dass die Signale für einen PC invertiert sein müssen. Wenn mich nicht alles trügt im Datenblatt, invertiert der PIC aber nicht extern, sondern tut dies wohl intern. Das könnte erklären, warum ich IMMER DEN GLEICHEN Müll erhalte (und auch sende???). Mir ist es eigentlich herzlich egal, ob ich das per Software im AVR korrigiere oder per Transistor, ich weiss nur leider beide Male nicht wie. Zu meinem bisherigen Programm in BASCOM: Daten sende ich einfach per PRINT-Befehl. Das funktioniert bei anderen Applikationen einwandfrei. Daten empfange ich per RS232-Interrupt. Den aktuellen RS232-Wert, der in der Variablen UDR steht, packe ich in einen String der Länge eins. Den wiederum packe ich aufs Display. Auch hier: Andere Schaltungen funktionieren mit diesen Befehlen einwandfrei. Man kann in BASCOM zur Not auch ASM einfügen, nur hier steige ich wissenstechnisch aus, wenn ich sowas selbst machen soll. Dennoch wäre mir eine Softwarelösung am liebsten, wenn das nicht möglich ist, dann gerne auch eine Hardware-Lösung. Ich hoffe auf Euch! Das gesamte Projekt werde ich natürlich veröffentlichen, wenn es fertig ist. Und das ist es fast, wenn diese &%§$/! Kommunikation klappt... Vielen Dank Gruß Sebezahn
Hallo, Normalerweise invertiert der verwendete RS232-Treiber MAX 232 das Signal in Schaltungen mit dem AVR. Er hat dafür vier Kanäle. Das Invertieren eines Digitalsignals gelingt ganz einfach per Hardware mittels Inverter. Das sind beispielsweise ein 4069, 4049, 4009, 7406 (offener Kollektor), mit NAND-Gattern oder mit einem Transistor in Emitterschaltung. Z.B NPN-Transistor, B über 4,7kOhm ist der Eingang, E an Ground, C über einen Widerstand von 10 kOhm an +5V. C ist gleichzeitig der Ausgang. Per Software könnte das mit einer Exor-Verknüpfung des einen Bits mit logisch 1 gehen. Das Andere Bit ist der Eingang. Am besten nochmal in die Wahrheitstabelle EXOR schauen. Gruß Chris
Hi, ich würde dann einen BC547A nehmen. dann B über 4,7kOhm an den TX E an Masse C an den Rx vom empfangenen Prozessor und C und 5V über 100k verbinden. Und dann wird das Signal invertiert? Ist es Schlimm, dass die zwei Prozessoren zwar die gleiche Masse, aber nicht die gleiche 5V-Quelle haben? Gruß Sebezahn
>Ist es Schlimm, dass die zwei >Prozessoren zwar die gleiche Masse, aber nicht die gleiche 5V-Quelle >haben? Denke ich eigentlich nicht - pass aber bloß auf, dass Du nicht die beiden 5V-Schienen irgendwo verbindest. Denn durch Toleranzen in den 7805ern hat da jeder eine andere Meinung, was 5V sind und dann schaffen die gegeneinander. MfG, Khani
Hallo, "ich würde dann einen BC547A nehmen." paßt! "dann B über 4,7kOhm an den TX" paßt! "E an Masse" paßt! "C an den Rx vom empfangenen Prozessor" paßt! "und C und 5V über 100k verbinden. " siehe unten Und dann wird das Signal invertiert?" Dann ist es definitiv invertiert! Das macht jede Emitterschaltung, Sourceschaltung oder Kathodenschaltung. Grundlagen der Elektronik. Das läßt sich mittles LED oder Voltmeter leicht nachweisen. 100kOhm sind etwas viel. Ich empfehle eher 4,7kOhm bis 27 kOhm, damit sich der Eingang keine Störungen einfängt. Geschrieben habe ich 10kOhm beim letzten Mal. Ach ja, der Transistor darf nicht zu sehr in die Sättigung kommen. Falls es nicht zu gehen scheint mit µC, dann den Widerstand an der Basis etwas vergrößern, bis etwa zum zehnfachen und die Baudrate vermindern. Ansonsten stimme ich Khani nur zu. Gruß
hallo, ich hatte das gleiche problem mit einem elm323 und eine 2313. ich hab den TX vom avr mit einem BC547 invertiert und dann gings. grüsse
ES KLAPPT!!! Es FUNKTIONIERT!!! Er LEBT!!! DANKE! DANKE! DANKE! Das Ausgangssignal vom AVR habe ich "einfach" mit einem BC547 invertiert und 10kOhm und 4,7Ohm wie oben angegeben benutzt. Und schon reden die beiden miteinander ;-) VIELEN VIELEN DANK! Sebezahn
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.