[elektro] dspic CAN lelki teher

Ferenc Toth toferi2 at freemail.hu
Thu Oct 30 20:41:51 CET 2008


Sziasztok.
Segijjen lécci valaki,mert nem boldogulok a CAN modullal .
Összekapcsoltam egy 30f4013 és egy 30f6014 -et CAN on keresztül és nem 
látják egymást.Eloször azt hittem,hogy a baud rate nem stimmel,de azonos 
órajel (és nincs pll szorzó sem)   egyforma konfigokat használok SJW BRP 
SEG2PHTS SEG2PH meg még egy csomó regiszter.......már odáig jutottam ,hogy 
bemásoltam a forditóba mindkét konfigot igy még csak el sem irhattam.A baud 
rate 125kbps -re számoltam ki ,ráakasztottam egy CAN tracert ,de ecceruen 
nincs rajta kommunikáció.Látok szkóppal CAN jelet,de mintha mindig ugyanaz 
jönne ismétlodve ,viszont a vevo látszólag nem vesz semmit és a logger sem 
tud rászinkronizálódni.....naszóval ha valaki tudna segíteni akkor nagyon 
megköszönném .
igy néz ki a progi ezzel egy ismétlodo adatot küldök ki a hálózatra:
a kiküldendo adat :  RxTx_Data[8]
az id :Tx_ID = 455;
és 125kbps / 8MHz es órajellel


unsigned int Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags;  // can flags
unsigned int Rx_Data_Len;                                    // received 
data length in bytes
char RxTx_Data[8];                                           // can rx/tx 
data buffer
char Msg_Rcvd;                                               // reception 
flag
unsigned long Tx_ID, Rx_ID;                                  // can rx and 
tx ID

void main() {

  ADPCFG = 0xFFFF;
  PORTB = 0;
  TRISB = 0;
   trisd=0;




  Can_Init_Flags = 0;                            //
  Can_Send_Flags = 0;                            // clear flags
  Can_Rcv_Flags  = 0;                            //

  Can_Send_Flags = CAN_TX_PRIORITY_3 &           // Form value to be used
                   CAN_TX_XTD_FRAME &            //  with CAN1Write
                   CAN_TX_NO_RTR_FRAME;

   Can_Init_Flags = CAN_CONFIG_SAMPLE_ONCE      &    // Form value to be 
used
                   CAN_CONFIG_PHSEG2_PRG_ON &    //  with CAN1Initialize
                   CAN_CONFIG_XTD_MSG &
                   CAN_CONFIG_DBL_BUFFER_ON &
                   CAN_CONFIG_MATCH_MSG_TYPE &
                   CAN_CONFIG_LINE_FILTER_OFF;

 RxTx_Data[8] = 0X6B,0X76,0XA5,0XBC,0X0E,0X4C,0X00,0X00; 
// set initial data to be sent
//  CAN1Initialize(1,3,5,5,1,Can_Init_Flags);      // initialize CAN1
    CAN1Initialize(4,24,6,6,4,Can_Init_Flags);      // initialize CAN1
  CAN1SetOperationMode(CAN_MODE_CONFIG,0xFF);    // set CONFIGURATION mode

  C1CTRL.F11=1;

  CAN1SetOperationMode(CAN_MODE_NORMAL,0xFF); 
// set NORMAL mode



  portd.F9=1;      //a power led ON állásba
  Tx_ID = 455; 
// set transmit ID
   portb=0xffff;
   delay_ms(1000);


  while(1) 
{                                                                    // 
endless loop
 Msg_Rcvd = CAN1Write(Tx_ID, RxTx_Data, 8, Can_Send_Flags);
if ( Msg_Rcvd==0xFFFF)    portd.F3=1;      // egy led a kimeneten
else portd.F+=0;
  //  portd.f3=C1CTRL.F11;
 delay_ms(10);
    //if (Msg_Rcvd==0X00)  PORTD.F3=1;

// Msg_Rcvd = CAN1Read(&Rx_ID , RxTx_Data , &Rx_Data_Len, &Can_Rcv_Flags);

//  PORTB = (((RxTx_Data[1])<<8 )| RxTx_Data[2]);







  }
}//~!



More information about the Elektro mailing list