Fragen zum CAN-Bus Kategorie: CAN-Bus (von Markus H - 16.06.2010 20:22) | ||
| ||
Hallo Gemeinde, mir ist da was zur Programmierung des CAN-Busses nicht ganz klar und kanns momentan nicht testen, da mein rechter Arm in einer Schiene liegt, nix mit schauben und Löten... :-( Wie muss ich vorgehen wenn ich mehrere Datenframes (?) über einen Kanal senden will? Hier mal ein kleiner Auszug: /******************************** can_send.c2 Sender 4 analoge Eingänge ********************************/ byte data_s[7]; byte data_s1[7]; //------------ thread main //------------ { can.init(can.SPEED_250,0x0000,0x0000); loop { sleep 1000; //Datenframe 1 data_s[0] = globvar.N_Mot / 256; data_s[1] = globvar.N_Mot and 255; data_s[2] = globvar.p_Oel / 256; data_s[3] = globvar.p_Oel and 255; data_s[4] = globvar.Reskan1 / 256; data_s[5] = globvar.Reskan1 and 255; data_s[6] = globvar.Reskan2 / 256; data_s[7] = globvar.Reskan2 and 255; can.send(1,400,data_s,8); //Datenframe 2 data_s1[0] = globvar.Reskan3 / 256; data_s1[1] = globvar.Reskan3 and 255; data_s1[2] = globvar.Reskan4 / 256; data_s1[3] = globvar.Reskan4 and 255; data_s1[4] = globvar.Reskan5 / 256; data_s1[5] = globvar.Reskan5 and 255; data_s1[6] = globvar.Reskan6 / 256; data_s1[7] = globvar.Reskan6 and 255; can.send(1,401,data_s1,8); } } Dann am Empfänger: /******************************** can_receive.c2 Empfänger ********************************/ byte data_r[7]; byte data_r1[7]; //------------ thread main //------------ { can.init(can.SPEED_250,0x0000,0x0000); can.expect (1,400); { wait can.rxd(1); can.get(1,data_r); globvar.N_Mot = (data_r[0] * 256 + data_r[1]); globvar.p_Oel = (data_r[2] * 256 + data_r[3]); globvar.Reskan1 = (data_r[4] * 256 + data_r[5]); globvar.Reskan2 = (data_r[6] * 256 + data_r[7]); } can.expect (1,401); { wait can.rxd(1); can.get(1,data_r1); globvar.Reskan3 = (data_r1[0] * 256 + data_r1[1]); globvar.Reskan4 = (data_r1[2] * 256 + data_r1[3]); globvar.Reskan5 = (data_r1[4] * 256 + data_r1[5]); globvar.Reskan6 = (data_r1[6] * 256 + data_r1[7]); } } Kann ich einfach die CAN-ID's erhöhen (400, 401, 402, ...)? Wieso müssen diese 3-stellig sein (nur so nebenbei)? Muss beim Empfänger noch irgend wo eine loop hin? Laut Buch von André schon... Oder geht das einfacher / kürzer? Danke für Eure Hilfe, Markus H. | ||
Antwort schreiben Antworten: Re: Fragen zum CAN-Bus (von reneforster - 17.06.2010 16:15) Re: Fragen zum CAN-Bus (von Markus H - 19.06.2010 15:45) Re: Fragen zum CAN-Bus (von reneforster - 19.06.2010 16:26) Re: Fragen zum CAN-Bus (von nitraM - 18.06.2010 7:42) Re: Fragen zum CAN-Bus (von reneforster - 18.06.2010 10:19) |