Проясните ситуацию, для чего нужны прерывания CAN ( interrupt [CAN_IT] void can_isr(void) ), если команды на получения все равно приходится вставлять в while(). Мне нужно, чтобы во время работы основной программы, если приходят нужные сообщения, то паралельно выполнилось бы какое то условие, но чтобы я постоянно везде в коде не вставлял функцию на считывание ящиков, а пока приходится именно так и делать, но смысла тогда нет в прерывании, если с помощью масок и фильтрации я и так могу все сверить и сравнить. Т.е. по сути все одинаково. А я себе представлял прерывние, это когда например пришло сообщение в процессе основной работы, выполнился нужный код и продолжает все дальше работать, а еще удобнее, если это все паралельно работает. Я попытался запихнуть функцию чтения ящиков в отдельный таймер, а это был бы идеальный вариант, вроде работает, но к сожалению в какое то неопределенное недолгое время, камень зависает, если в основной программе идет частая паралельная отправка пакетов .
|