Hallo Zusammen Ich stelle hier meinen sehr einfachen Code zur Verfügung, mit dem es möglich ist, eine bestimmte CAN-Botschaft zu empfangen und deren Daten über den UART zu schicken. Grundlage für den Code war die CAN-Bibliothek von Jürgen Harms: http://www.mikrocontroller.net/articles/CAN_Bibiliothek_f%C3%BCr_AT90CAN_Prozessoren Diese hat auch auf Anhieb funktioniert, war aber mit der Datenrate am CAN-BUS meines Toyota RAV4 3. Generation total überfordert. Die Datenrate des CAN-BUS der über OBD herausgeführt ist liegt bei ca. 1100 Botschaften/s @ 500kbit. Dies entspricht allerdings nur ca. 20% Buslast ( alle Daten mit Vector CanAlyzer ermittelt). Aus diesem Grund habe ich die Bibliothek stark vereinfacht und an meine Bedürfnisse angepasst. Die ursprüngliche CAN-Bibliothek von J. Harms bildet ein rudimentäres Multitasking-System nach und behandelt neben dem Empfangen von Botschaften auch das Senden von Botschaften und Fehlererkennung. Dies war aber für meinen Fall alles zu aufwändig und überladen, daher habe ich das Programm so konfiguriert, dass nur auf eine bestimmte Nachricht gewartet wird (Identifier 0x25), und wenn diese empfangen wurde werden deren Daten ausgewertet (DLC, Datenbytes) und über UART geschickt. Dabei werden die Interrupt-Fähigkeiten des CAN-Moduls nicht genutzt, der Empfang der Botschaft wird durch Polling ermittelt. Da ich erst nach langem Studium von Jürgens Quellcode und des Datenblatt hinter fast alle Mechanismen des in die AT90CANxx integrierten CAN-Controllers gekommen bin und ich leider für mein einfaches Problem keinen Quellcode hier im Forum gefunden habe, will ich euch meinen Quellcode zur Verfügung stellen, vielleicht kann es ja jemand gebrauchen. Und wozu benötige ich den Code? An meinem Toyota RAV4 3. Generation ist eine Rückfahrkamera verbaut. Die hat allerdings den Nachteil, dass in das Bild der Kamera keinen Lenkwinkel-abhängigen Linien eingeblendet werden, womit der Fahrer abschätzen kann wo das Auto beim aktuellen Lenkradeinschlag hinfährt. Mit Vector CanAlyzer hab ich relativ einfach die CAN-Botschaft ausgemacht, die den Lenkwinkel überträgt. Die Datenbytes in denen der Lenkwinkel codiert ist, war auch nicht schwer zu finden. Mit dem hier vorgestellten Quellcode wird diese eine Botschaft aus dem Datenstrom herausgefiltert, der Lenkwinkel berechnet und dieser über UART0 einem ATMega88 zur Verfügung gestellt. Dieser modifiziert das Videosignal der Rückfahrkamera und blendet lenkwinkelabhängig die Linien ein. Das Einblenden der Linien erfolgt mit einem umgebauten Bausatz von ELV: http://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=22054&flv=1&bereich=&marke= Vielleicht kann ja jemand etwas mit meinem Quellcode anfangen. Wer Fragen hat meldet sich einfach, ich versuche diese dann nach bestem Wissen und Gewissen zu beantworten. Viele Grüße, Felix
Hallo Felix, danke für Deinen Code - was mich besonders interessiert: Wie genau blendest Du mit dem modifizierten ELV-Bausatz die Linien in das Signal der Rückfahrkamera ein ? Das wäre ein Feature, welches ich auch sehr gerne hätte ! Gruss Otto
Hallo Otto Wenn du auf den ELV-Link von oben klickst kommst du zu der Produktbeschreibung des Bausatzes. Dort findest du weiter unten die Bauanleitung als PDF. In der Bauanleitung findest du die Schaltung des Bausatzes und einer meiner Meinung nach sehr gute Erklärung der Schaltung. Den Analogteil der Schaltung hab ich zwar nicht zu 100% verstanden aber das ist auch nicht so wichtig. Wichtig ist der Teil, der aus dem analogen Videosignal zwei digitale Signale ableitet, den V-Sync und den H-Sync. Beide digitalen Signale gehen als externer Interrupt in den ATMega88. Das V-Sync-Signal signalisiert den Beginn eines neuen Frame, also sozusagen der Beginn der ersten Zeile eine Bildes. Das V-Sync-Signal kommt also bei PAL mit ca. 50Hz. Das H-Sync-Signal kommt immer dann wenn eine neue Zeile beginnt. Das bedeutet, dass bei 320 übertragenen horizontalen Zeilen der H-Sync im 62,5us-Raster kommt. Wenn man die beiden Signale hat ist der Rest eigentlich nicht mehr schwer. Mit V-Sync weiß der Controller ab wann ein neues Bild beginnt und kann dann ab diesem Zeitpunkt die H-Sync-Signale mitzählen und weiß somit immer in welcher Zeile sich das Videosignal befindet. Der Bildaufbau erfolgt von oben nach unten zeilenweise fortlaufend von links nach rechts. Mit Hilfe von PINB3 und PIND1kann dann der Controller das Videosignal (welches im Normalfall einfach nur durchgeleitet wird) auf schwarz oder weiß umschalten. Wenn also der Controller weiß, er ist z.B. in Zeile 160 und dann 30us nach dem H-Sync-Signal für 2us erst auf Schwarz schaltet, dann 4us auf weiß und anschließend wieder 2us auf schwarz und das Ganze die nächsten 30 Zeilen wiederholt, so hast du also schlussendlich ungefähr in der Mitte des Bildes einen kurzen senkrechten Strich der in der Mitte weiß ist und links und rechts schwarze Streifen hat. Diese Art von Strich kann man auf jedem Hintergrund erkennen, der Kontrast ist sehr hoch. Ich hab die Schaltung nur minimal geändert, z.B. sind die Controller-Ausgänge für schwarz und weiß nicht mehr PINB3 und PIND1. Sind jetzt andere Pins, welche genau muss ich erst nochmal nachsehen, aber diese lassen sich dann mit meinem Programm besser und schneller programmieren. Praktisch ist auch, dass auf der Platine von ELV (SMD-Bauteile inkl. Controller sind schon vorbestückt) gleich der SPI-Programmieranschluß vorbereitet ist, da muss man nur noch ein paar Kabel anlöten. Die Pinbelegung (MISO, MOSI, RST etc.) muss man aber mit einem Multimeter und dem Controller-Pinout aus dem Datenblatt selber rausfinden. So ich hoffe ich konnte dir erstmal weiterhelfen. Gruß, Felix
Hallo Felix, vielen Dank für Deine exakten Ausführungen - wahrscheinlich habe ich mich falsch ausgedrückt - eine "echte" Rückfahrkamera bzw. das Toyota-IPA-System blendet (einfach ausgedrückt) Linien ein, welche anzeigen, ob und wie wie der PKW mit dem momentanen Lenkwinkel in die Parklücke gelangen kann. Welche Information gibt der von Dir eingeblendete kontrastreiche weisse Strich - nur den Lenkwinkel ? Über eine weitere Antwort würde ich mich sehr freuen Viele Grüsse
Hallo Otto Ich weiß nicht genau was du mit Toyota-IPA-System meinst, aber das Original-Toyota-Navigationssystem inkl. Rückfahrkamera welches bei mir eingebaut ist bietet lediglich den Blick nach hinten. Außer dem Schriftzug "Prüfen sie ihre Umgebung" wird nichts eingeblendet, auch keine starren Hilfslinien. Bei mir soll es dann ungefähr so aussehen: http://www.conexx-video.de/audi_mmi_kamera.jpg Abhängig vom Lenkwinkel schwenken dann die Linien an ihrem oberen Ende nach links oder Rechts und zeigen an wo das Fahrzeug langfährt. Gruß, Felix
Hallo Felix, vielen Dank für Deine Antwort. IPA = "Intelligent Park Assist" - das Fahrzeug kann eigenständig einparken siehe: http://www.priuswiki.de/wiki/Einparkautomatik Automatisches Einparken ist natürlich nicht mein Ziel - bei meiner nachgerüsteten Rückfahrkamera fehlen die Linien, da es bisher eine rein analoge Lösung ist (NTSC-Kamera auf Multifunktionsdisplay). Jedoch habe ich wie Du den CAN angezapft und hätte so die Möglichkeit mittels des ELV-Bausatzes Linien einzublenden. Hast Du evtl. Fotos von Deinem Monitor mit eingeblendeten Linien? Gruss Otto
Hallo euch allen, ich bin schon seit einiger Zeit auf der Suche nach einem CAN-Bootlader für den AT90CAN. Leider konnte ich dazu aber kein fertiges Projekt finden. Genauere Informationen gibt es unter fogendem Link: Titel - Beitrag "CAN BUS Bootloader AT90CAN" Ich hoffe es finden sich einige um dieses Projekt zu realisieren oder die dabei helfen können. Grüße martin
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.