Hallöchen Ich verwenden die LIB die man von Atmel runterladen kann. Das Senden von Daten funktionert einwandfrei. Aber mit dem Empfangen von Daten komme ich nicht zu 100% klar. Ich möchte Daten mit nur einer CAN-ID empfangen. Ich empfange aber immer auch andere CAN-Messages ? Die CAN-ID der empfangenen Message kann ich dann auslesen. Kennt sich jemand damit aus und kann mir helfen ? Hier mein Code : ............................ st_cmd_t message2; // INIT message2.pt_data = &CanRecBuffer[0]; message2.cmd = CMD_RX; message2.id.ext = 0x02; message2.dlc = 8; message2.ctrl.ide = 0; message2.ctrl.rtr = 0; can_cmd(&message2); // empfangen if (can_get_status(&message2) == CAN_STATUS_COMPLETED) { EmpfangenAuswerten (); can_cmd(&message2); } Danke für Eure Hilfe. mfg Mandi
> Beitrag "AT90CAN128 Bit und Form Errors"
Der Codeschnippsel ist arg knapp. Bist du sicher, dass du
1) nicht auf den Status CAN_CMD_ACCEPTED warten musst, der anzeigt, dass
dein can_cmd() akzeptiert wurde?
2) eine Schleife um das einzelne if nicht brauchst? ich würde in einer
Schleife pollen, ob der Status CAN_STATUS_COMPLETED (oder eine
Fehlermeldung bzw. Timeout) erreicht wird.
Hallöchen >>Der Codeschnippsel ist arg knapp. Bist du sicher, dass du OK es steht aber alles nötige drinnen >>1) nicht auf den Status CAN_CMD_ACCEPTED warten musst, der anzeigt, dass >>dein can_cmd() akzeptiert wurde? Stimmt. Aber ich sehe keinen Grund warum das Command nicht akzeptiert werden sollten. Haber daher drauf verzichtet. Es sind 6 MOB's vorhanden und ich brauche nur 2 davon. Was kann passieren , dass das COommand nicht akzeptiert wird ? >>2) eine Schleife um das einzelne if nicht brauchst? ich würde in einer >>Schleife pollen, ob der Status CAN_STATUS_COMPLETED (oder eine >>Fehlermeldung bzw. Timeout) erreicht wird. Es handelt sich um eine Schleife. Mache aber andere Dinge dazwischen. ( z.B.: die MosFet für einen BLCD in Abhängigkeit der Hallsensoren ansteuern, SPI zur Slave uC usw ... ) Muss beim Empfangen nicht eine MASK gesetzt werden ? Erfolgt dies Automatisch mit der ID ? Danke Euch. hmg Mandi
> Muss beim Empfangen nicht eine MASK gesetzt werden ? Du wirst wohl eine Filterfunktion einbauen müssen. Das habe ich seinerzeit auch gemacht, um Messages selektiv empfangen zu können. Der SJA1000 von Philips hat dafür extra ein Register -> ACCEPTANCE FILTER (ACF).
Hallöchen >> Muss beim Empfangen nicht eine MASK gesetzt werden ? >Du wirst wohl eine Filterfunktion einbauen müssen. In die Software ? Ich dachte der integrierte CAN-Receiver kann das ? Ich dachte der hat einen ACCEPTANCE FILTER ? hmg Mandi
Hallöchen Muss es erst testen aber "Can_set_mask_mob ();" sollte mein Problem lösen. hmg Mandi
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.