в фирмваре нашел принципиальный косяк:
в файле usb_function_cdc.c
вообще в системе для работы с двумя комплектами дескрипторов сделана структура. все хорошо, НО, в структуре вместо массивов cdc_data_rx и cdc_data_tx поставлены указатели на массивы. тоже правильно, НО, далее по коду используется такая форма:
sizeof(cdcInfo[cdc_id].cdc_data_rx) вместо обычной sizeof(cdc_data_rx) для одного порта. соответственно получаем вместо размера массива размер указателя на него, т.е. ДВА байта.
ЗЫ: есть еще пара моментов - не работает в режиме прерываний, если разберусь, выложу проект, правда делаю для PIC24. оказались очень нужны два порта, причем один виртуальный (внутри мк) передает служебную инфу одной программе, а второй работает с другой железкой и сторонней программой. такие дела.
sandbox/два.виртуальных.com.порта.на.pickit2.txt · Последние изменения: 27/11/2022.20:47 (внешнее изменение)
Дискуссия
в фирмваре нашел принципиальный косяк: в файле usb_function_cdc.c
вообще в системе для работы с двумя комплектами дескрипторов сделана структура. все хорошо, НО, в структуре вместо массивов cdc_data_rx и cdc_data_tx поставлены указатели на массивы. тоже правильно, НО, далее по коду используется такая форма: sizeof(cdcInfo[cdc_id].cdc_data_rx) вместо обычной sizeof(cdc_data_rx) для одного порта. соответственно получаем вместо размера массива размер указателя на него, т.е. ДВА байта. ЗЫ: есть еще пара моментов - не работает в режиме прерываний, если разберусь, выложу проект, правда делаю для PIC24. оказались очень нужны два порта, причем один виртуальный (внутри мк) передает служебную инфу одной программе, а второй работает с другой железкой и сторонней программой. такие дела.