Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Atmel uc3c, can_get_mob_dlc проблем
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=14666
Страница 1 от 1

Автор:  NikB [ Вто Юли 05, 2016 12:11 pm ]
Заглавие:  Atmel uc3c, can_get_mob_dlc проблем

В Атмел студио, ползвам asf CAN драйвера.
Ако всичките CAN съобщения са с еднакъв брой Data байтове - всичко е ОК.
Обаче, при смяна на броя байтове, като че ли в DLC, който получавам от asf драйвера, се OR-ва броя на байтовете в последователните пакети.

Пробвахме да нулираме DLC - не се получи ефект :)
Код:
//      CANIF_mob_clr_dlc(channel->channel, handle);
      ((unsigned volatile long*)&(AVR32_CANIF.channel[channel->channel].mobctrl))[handle*3]=0;
      CANIF_mob_clear_status(channel->channel, handle);
      can_rx(channel->channel, handle, CAN_DATA_FRAME, &RX_DUMMY_MSG);

Къде ли е проблема?

малко Log: първият пакет е 6 байта (DLC 6), втория 5 байта, получвам DLC 7 (5 or 6):
0000000012 0000000000 00000000 7 00 00 00 00 00 00 00
0000000011 0000000000 00000000 6 00 00 00 00 00 00
ПП: Пакетите са от ДОЛУ НАГОРЕ !!!

ППП: И сме със стара версия на ASF: май 3.5.1 :), за сега.

Автор:  Dimitar [ Вто Юли 05, 2016 2:13 pm ]
Заглавие:  Re: Atmel uc3c, can_get_mob_dlc проблем

Тия съобщения авр-а ги праща или ги получава? Ако ги получава да не е проблема в рс частта или адаптера. Пробвай с нещо, дето си сигурен че работи, че така като правиш и двете страни и кой знае :D .

Автор:  NikB [ Вто Юли 05, 2016 4:55 pm ]
Заглавие:  Re: Atmel uc3c, can_get_mob_dlc проблем

Оправи се. Заблудил съм че, че
CANIF_mob_clr_dlc(channel->channel, handle);
не е подействало, защото си мислех, че проблемът е само при предаване (от ATMEL процесора към CAN интерфейса).
Оказа ае, че DLC трябва да се нулира и при приемане и при предаване.

Автор:  NikB [ Вто Юли 12, 2016 10:31 am ]
Заглавие:  Re: Atmel uc3c, can_get_mob_dlc проблем

Някой да е правил формулка (и да му се споделя? :)) за инициализация на променливите на AVR CAN скорости?
За сега ползвам табличка (тествана за 125К, 250К, 500К)
Код:
typedef struct
{
   Bool   bSupported;
   U8      swj;
   U8      pres;
   U8      prs;
   U8      phs1;
   U8      phs2;
   
}BAUD_VAL_CFG;
Код:
static const BAUD_VAL_CFG baudCfg[CAN_BAUD_MAX] =
{
   //   CAN_BAUD_10K,
   {FALSE},
   //   CAN_BAUD_20K,
   {FALSE},
   //   CAN_BAUD_50K,   Not tested
   {FALSE, 1,   19,   6,   3,   3},   
   //   CAN_BAUD_100K,   Not tested
   {FALSE, 1,   9,   6,   3,   3},
   //   CAN_BAUD_125K,
   {TRUE, 1,   7,   6,   3,   3},
   //   CAN_BAUD_250K,
   {TRUE, 1,   3,   6,   3,   3},
   //   CAN_BAUD_500K,
   {TRUE, 1,   1,   6,   3,   3},
   //   CAN_BAUD_800K,   Not tested
   {FALSE, 1,   1,   3,   2,   2},
   //   CAN_BAUD_1000K,   Not tested
   {FALSE, 1,   1,   2,   1,   1},
};

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/