Mit welchem CAN-Protokoll arbeitest du denn?
Mit welchem CAN-Protokoll arbeitest du denn?
Kultuverein Metal Resurrection, für mehr Bands und Konzerte in Österreich (:
Was meinst du mit Protokoll?
Soweit ich weiß ist der Aufbau einer CAN-Nachricht festgelegt. Ich mache es erstmal recht einfach, indem ich einen 11Bit Identifier habe +1Byte als Datenpaket.
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Nein, CAN als sich selbst definiert nur die Topologie und die den Aufbau der Messages. Das wären Layer 1 und 2 im OSI/ISO-Model. CAN-Geräte verwenden dann ein höheres Protokoll zur Kommunikation, z.B. CANopen oder DeviceNet
Kultuverein Metal Resurrection, für mehr Bands und Konzerte in Österreich (:
Ahh ok.
Naja so weit bin ich noch nicht
Ich will erstmal eine vernünftige Kommunikation mit dem MCP2515 hinbekommen, sprich Nachricht + festgelegten Identifier versenden und richtig empfangen. Dabei Identifier berücksichtigen und dann die Daten richtig zusammensetzen.
Wenn das alles klappt wie ich es mir wünsche kommt ein Protokoll da rein
Ich stehe ja gerade noch am Anfang von dem ganzen und muss mich da erstmal vernünftig reindenken![]()
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
So wiedermal ein Update vom Bus:
Empfangsroutine ist nun auch fertig. Das Programm ließt die Daten einzelnt ein und setzt die ID zusammen (im moment nur Standard ID aber es ist auch geplant das die Extended ID verwendet werden kann). Anschließend ließt das Programm die Länge aus und ließt dann dementsprechend die Datenbytes.
In dem Sendeprogramm hat man eine Sendefunktion um eine ID vorzugeben und man kann entscheiden ob Extended oder Normal (wobei erst Normal implemetiert ist). Anschließend wird die ID zerlegt und passend verteilt. Die Daten werden in die richtigen Register geschrieben und der ganze Rummel wird abgesendet.
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Ein neues Update zum Bus:
Das Wochenende habe ich mal damit verbracht um schonmal ein wenig an der PC Software zu arbeiten.
Der erste Entwurf sieht so aus:
Bild hier
Im Grunde erstmal nur ein "Terminal" aber die eigentlichen Funktionen werden noch dazukommen
Gedacht ist, dass es ein Feld für den Identifier gibt, ein Feld für 1-8 Datenbytes und das die Filter noch über die Software eingestellt werden können.
Zudem dachte ich, dass vielleicht auch eine Möglichkeit kommt angeschlossene I²C Devices auszulesen.
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Heyho,
ich wollte den Thread mal ein wenig Updaten.....die letzten freien Tage habe ich mal wieder dazu genutzt um an dem Bus weiter zu arbeiten (wird auch demnächst auf meiner Homepage aktualisiert usw.).
Herausgekommen ist, dass ich das Programm etwas umdesignt habe. Außerdem habe ich noch ein kleines Userinterface für eine einfache Konsole entwickelt (der UART soll später über Interrupts arbeiten.....nicht wie in der aktuellen Version über "Input". Damit wird das ganze Programm Interruptgesteuert und ich habe die Mainloop frei):
Bild hier
Die Befehle die das Interface verwendet, wollte ich dann (irgendwann) auch für eine PC-Software verwenden.
Im Gegensatz zu meinem ersten Programmentwurf ist dieses Programm etwas variabler, sprich durch den Aufruf der "Data" Funktion werden nicht wie beim ersten Entwurf permanent 8 Byte gesendet sondern dies ist unterschiedlich (je nachdem wie viel gesendet werden soll).
Ein Wechsel des Controllers in den "Loopback" Modus + Senden und Empfangen von Daten sieht dann z.B. so aus:
Bild hier
Der Befehl "Data,7,8,15,7,12,78,16,1,144,179" ist dabei wie folgt aufgebaut:
1. Data -> Wählt die Funktion zum Senden von Daten aus
2. 7 -> der Identifier (0-2047)
3. 8 -> Anzahl der zu übertragenden Bytes
4. Die 8 Werte die übertragen werden soll.
Eine ähnliche Funktion gibt es für den Remoteframe. Hier jetzt im Nomalmode und als Antwort kommen 8 Bytes von einem zweiten Knoten zurück wo ein LM75 angeschlossen ist, der die Temperatur meines Wohnzimmers ausgibt (der Knoten hat noch die aller erste Softwareversion drauf, deswegen 8 Bytes die gesendet werden obwohl er nur ein Wert ermittelt):
Bild hier
An der Funktion zum einstellen der Filter arbeite ich noch....irgendwie verwirft der Controller die Einstellungen beim verlassen des Unterprogramms.....
Ebenso Suche ich noch einen Weg einen Mega32 als I²C Slave zu betreiben.....ich habe gesehen, dass es da sogar eine Bascomfunktion für gibt aber die ist bei mir wohl irgendwie nicht drin, sprich ich muss es händisch machen.
Im Anhang ist mal der (aktuelle) Quellcode. Falls irgendjemand was dazu sagen möchte....nur zu
Posten tue ich den mal nicht, weil das über 1000 Zeilen sind und das ist glaube ich zuviel für einen Beitrag.
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Lesezeichen