eldarkg / emdr1986x-std-per-lib

Milandr MCU 1986x Standard Peripherals Library. Mirror:
https://code.launchpad.net/~eldar/emdr1986x-std-per-lib/+git/emdr1986x-std-per-lib
46 stars 29 forks source link

assert_param triggered in USB module #9

Closed vitkorob closed 8 years ago

vitkorob commented 8 years ago

When I do implementation of _assertfailed function and use #define USE_ASSERT_INFO 2, I observed that assert statement occurred in file _MDR32F9Qx_usbdevice.c line 740

static void USB_EP_SetReady(USB_EP_TypeDef EPx, uint32_t val)
{
  ...
  /* Clear pending bits */
  USB_SetSIS(USB_SIS_Msk);
  ...
}

Function _USBSetSIS uses the _IS_USB_SISVALUE(...) macro with argument _USB_SISMsk. Need fix _IS_USB_SISVALUE macro.

eldarkg commented 8 years ago

@vitkorob Please check bug fix

vitkorob commented 8 years ago

Now code is good. Thank you! But I still have triggered assert_param.

USB_Result USB_DeviceDispatchEvent(void)
{
  ...
  /* Get masked interrupt flags */
  USB_IT = USB_GetSIS();
  ...
  /* Clear pending bits, except for SCTDONE */
  USB_SetSIS(USB_IT & (~USB_SIS_SCTDONE_Set));
  ...
}

I think this time it's hardware problem, because in the manual MDR_USB->SIS has 5 first significant bits, but it can return 6th bit.

I will write letter to technical support and I'll keep you informed.

eldarkg commented 8 years ago

@vitkorob, Ok.

eldarkg commented 8 years ago

The first message:

От кого: Отдел технической поддержки ЦП ИС АО ПКК Миландр support@milandr.ru Дата: 6 июля 2016 г., 12:42 Тема: Запрос N [], Re: 1986BE92QI (aka MDR32F9Q2I) поведение MDR_USB->SIS регистра Кому: Victor Korobkovsky

Здравствуйте Виктор Андреевич,

Бит 5 (считая с 0) в регистре MDR_USB->SIS устанавливается в 1 при включении блока USB. Его необходимо игнорировать. В следующую версию спецификации будут внесены соответствующие изменения.

С наилучшими пожеланиями, Отдел технической поддержки ЦП ИС АО «ПКК Миландр» E-mail: support@milandr.ru Skype: support.milandr Телефон: +7(495)221-13-55

The second message:

От кого: Отдел технической поддержки ЦП ИС АО ПКК Миландр support@milandr.ru Дата: 11 июля 2016 г., 10:52 Тема: Запрос N [], Re: 1986BE92QI (aka MDR32F9Q2I) поведение MDR_USB->SIS регистра Кому: Victor Korobkovsky

Здравствуйте Виктор Андреевич,

Бит 5 устанавливается в "1" при вклюении блока USB в тех микроконтроллерах, в которых есть такой же блок USB. Блок USB одинаковый в 1986ВЕ1Т, 1986ВЕ9х, 1901ВЦ1Т.

С наилучшими пожеланиями, Отдел технической поддержки ЦП ИС АО «ПКК Миландр» E-mail: support@milandr.ru Skype: support.milandr Телефон: +7(495)221-13-55

eldarkg commented 8 years ago

@vitkorob Please test.

vitkorob commented 8 years ago

От кого: Отдел технической поддержки ЦП ИС АО ПКК Миландр support@milandr.ru Дата: 12 июля 2016 г., 11:03 Тема: Запрос N [], Re: 1986BE92QI (aka MDR32F9Q2I) поведение MDR_USB->SIS регистра Кому: Victor Korobkovsky

Здравствуйте Виктор Андреевич,

Да, 1986ВЕ3 это тоже касается, там такой же USB блок.

С наилучшими пожеланиями, Отдел технической поддержки ЦП ИС АО «ПКК Миландр» E-mail: support@milandr.ru Skype: support.milandr Телефон: +7(495)221-13-55