[elektro] dspic CAN lelki teher

Skandar Graun sgraun at gmail.com
Thu Oct 30 21:14:21 CET 2008


Lezártad a buszt?

2008/10/30 Ferenc Toth <toferi2 at freemail.hu>:
> 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]);
>
>
>
>
>
>
>
>  }
> }//~!
>
> -----------------------------------------
>          elektro[-flame|-etc]
>



More information about the Elektro mailing list