AT90CAN128: Endlose Sendungsversuche wenn kein ACK kommt?

Gast #426348
Lesenswert?
• ▲
▼
Hallo!

Nachfolgender Code funktioniert, solange ein weiteres CAN-Device 
angeschlossen ist. Fehlt dieses, bleibt CanTX(..) an der Whileschleife 
"while (!(CANSTMOB & (1<<TXOK)));   //wait until complete" hängen.

-Ist das Standardverhalten von CAN, wenn kein Ack kommt, endlos weiter 
zu senden?
-Kann man beim AT90CANxx das (ohne eigene Timeout-Überwachung) 
unterbinden oder sonstwie weitere Sendeversuche abbrechen?

Vorab schonmal Danke!
Frank

void canInit(void){
   //250kb/s @12MHz
   CANBT1 = 0x04;
   CANBT2 = 0x0C;
   CANBT3 = 0x37;

   //MB0..MB14: CANSTMOB=0, CANCDMOB=0,
   //           CANIDTn=0, CANIDMn=0, CANMSG(*8)=0
   canClearAllMob();

   CANGCON = (1<<ENASTB);   //start CAN interface

   while (!(CANGSTA & (1<<ENFG)));   //wait until module ready
}

void canTx (MOB_T msg){

   //enable MOb0, auto increment index, start with index = 0
   CANPAGE = (0<<4);
   canClearMob();

   canSetExtId(msg.id);      //CANIDTn setzen, CANCDMOB|=(1<<IDE)
   for (U8 i=0; i<8; i++)    //put data in mailbox
      CANMSG = msg.data[i];
   CANCDMOB |= (8<<DLC0);    //8 Bytes senden

   CANCDMOB |= (1<<CONMOB0);          //enable transmission
   while (!(CANSTMOB & (1<<TXOK)));   //wait until complete
   CANSTMOB &= ~(1<<TXOK);        //reset flag
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.