Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Ausgangslage: > > Mehrere Geräte senden über CAN, es sollen mehr als 15 ID's verwertet werden. > > Gruppen: 0x300-0x307, 0x0C0-0x0C4, 0x0D0-0x0D8 z.B. > > also kann nicht jeder ID ein exklusiver Kanal zugeordnet werden. Wenn ich exklusiv jedem Kanal > einzeln zuordne, funktioniert alles tiptop (Alle LED's blinken unisono). (Sendefrequenz: 1Sek, Zeit zwischen zwei ID's: 4ms) > > mit > > <code> > can.init(4,0x7FF,0x000); > > thread test > { > byte temp[8]; > can.expect(0,0x305); // Erwarte auf Kanal 0, > can.expect(1,0x307); // Erwarte auf Kanal 1 > can.expect(2,0x300); // Inv Power > can.expect(3,0x301); // Grid Power > can.expect(4,0x304); // Frequency > > loop > { > if can.rxd(0) > { can.get(0,temp); stports.togLED(0x01); } > if can.rxd(1) > { can.get(1,temp); stports.togLED(0x02); } > if can.rxd(2) > { can.get(2,temp); stports.togLED(0x03); } > if can.rxd(3) > { can.get(3,temp); stports.togLED(0x04); } > if can.rxd(4) > { can.get(4,temp); stports.togLED(0x05); > } > } > } > > </code> > > Wenn ich nun versuche, mehrere in einem Kanal zuzuweisen, um Kanäle zu sparen, dann blinken nicht > mehr alle Unisono - es gehen Frames verloren.: > > <code> > > can.init(4,0x7F8,0x000); //Letzte 8 Bites egal. Somit 0x300-0x307 im selben Postfach > thread test2 > { > byte temp[8]; > int adress; > can.expect(0,0x305); // Erwarte auf Kanal 0, letzten 8 Bites egal, da Global Mask entsprechend. > > loop > { > wait can.rxd(0); //Neue Daten? > { adress=can.getID(0); //Welche Adresse? > can.get(0,temp); //Daten auslesen, Eingangskanal leeren > if adress==0x300 > stports.togLED(0x01); > if adress==0x301 > stports.togLED(0x02); > if adress==0x304 > stports.togLED(0x03); > if adress==0x305 > stports.togLED(0x04); > if adress==0x307 > stports.togLED(0x05); > > }//if zu > > }//Loop zu > } > </code> > > Ist was ich erreichen will nicht möglich? Oder gibt es einen besseren Ansatz? > > Danke für eure Hilfe! > > Mike > > > >