ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
6 мая
1516269
Lem (Вчера, 03:36, просмотров: 1104)
Всем добрый день. Понимаю, что вопрос возможно покажется расплывчатый, но всё же попытаю удачу. Программирую контроллер C167, он опрашивает датчик скорости и посылает значения во внешний контроллер по CAN по удалённому запросу. Вращения идёт +- с одинаковой скоростью, но когда смотрю график считанной скорости, то в "ускорении"(первой разности), которое должно быть постоянна и равно примерно 0, вижу выбросы, который появляются с частотой can запроса. Пытался менять приоритеты 

CAN, делать его выше, но не помогло. Появилась мысль использовать PEC, чтобы ещё меньше задействовать такты МК. Мысль в том, чтобы использовать PEC для того, чтобы он перекладывал значение скорости в область данных сообщения объекта сообщения CAN. Попытался его настроить, вроде по документации ничего сложного: выставил определённый приоритет, указал адреса источника и приёмника и PEC. Код на втором Keil:

XP0IC = 0x79;

DSTP1 = C1MOBJ[5].msg;

SRCP1 = &x_data;

PECC1 = 0x0308;

Но не работает, на удалённый запрос отвечает, но значение не меняется. Вопрос в том, что делаю не так и можно ли вообще его так настроить? И если можно, не получится ли так, что он сначала отвечает на запрос, а потом меняет значение, то есть по сути отправляет старое значение? Так же была мысль с помощью PEC попытаться перекладывать значения, считанные с ацп в нужную область (использовать его как аналог DMA). Можно ли так сделать? Ну и более общий вопрос: Что ещё можно придумать в такой ситуации?