Re: Datenübertragung zwischen einer Unit und einer Station Kategorie: CAN-Bus (von Cris, http://www.crisullmann.de - 10.03.2005 8:00) | ||
Als Antwort auf Datenübertragung zwischen einer Unit und einer Station von alexander - 9.03.2005 20:28 | ||
| ||
Hallo, zuerst einmal ist die Initialisierung richtig. Auffällig ist nur, dass Du die Maske des Empfangsfilters auf 0 gesetzt hat. D.h. Du empfängst auf allen Kanälen alle Frames. Sender: Ein Datenframe auf dem CAN-Bus besteht max. aus 8 Bytes. Wenn nichts anderes dagegen spricht, solltest Du die gesamten Daten in einen Frame packen. Weiterhin habe ich mit mem.putfloat anfänglich Schwierigkeiten gehabt (Fehler ILL OPA). Es kann sein, dass dieser Fehler mittlerweile beseitigt ist. Ich benutze diese Funktion jedoch nicht mehr. Bei mir gibt es wenn vermeidbat keine Gleitkommazahlen sondern nur Festkommazahlen (int und die Kommastellen berücksichtige ich per Software). Du würdest bei dieser Methode mit 6 Datenbytes auskommen und alles passt in einen Frame. Dann sendest Du den Puffer, als Framelänge hast Du aber nur 1 Byte angegeben. Du solltest hier die wirkliche Länge Deines Frames angeben sonst wird auch nur 1 Byte übertragen. Empfänger: Diesen Teil habe ich in Deinem Programm nicht gefunden. Es geht los, indem Du einem Kanal sagst, welche CAN-ID's er empfangen soll. Da Du aber die Maske ausgemacht hast, empfängst Du alles. Das wird in einem CAN-Netzwerk nicht funktionieren. Ich würde Folgendes vorschlagen: can.init(can.SPEED_50,0x7FF,0x000); can.expect(1,0x120); Die erste Zeile schaltet die volle Maske für die Kanäle 0..13 an, die zweite Zeile sagt dem Kanal 1 dass er die Frame-ID's 0x120 empfangen soll. Dann testest Du auf empfangene Daten: if can.rxd(1) { can.get(1,Buffer); //weitere Auswertung der Daten } Grü�e Cris Meine Seite: http://www.crisullmann.de | ||
Antwort schreiben Antworten: Re: Datenübertragung zwischen einer Unit und einer Station (von alexander - 11.03.2005 18:35) |