помогите с CAN Никогда не сталкивался с CANом, потому достаточно чайницкие вопросы.
Есть некое ТЗ, по которому контроллер должен принимать пакеты с определенными адресами и отвечать на запросы с определенных адресов.
процессор AT90CAN32
Правильно ли я себе представляю алгоритм:
1. Нужно включить прерывание по приходу пакета. Можно ли организовать маску, чтобы сразу отсечь ненужные пакеты (в сети предполагается достаточно много сторонней информации)? Наверно, для этого служат регистры CANIDM1-4. Но чего-то не понимаю, как они работают.
2. По возникновению прерывания проверяю регистры CANIDT1-4 на соответствие требуемого идентификатора
3. Если идентификатор соответствует, то получаю данные в регистре CANMSG. Опять же, в пакете может быть до 8 байт - где остальные байты брать?
4. Для отправки пакета заполняю идентификатор в регистры CANIDT1-4 и первый байт данных в CANMSG. Куда остальные 7 байт пихать? Наверно, за это отвечает бит AINC в регистре CANPAGE
5. Чет не соображу, как начать передачу данных
6. Правильно ли я понимаю, что возможно всего 15 вариантов маски, по которым можно настроить прерывания. Номер маски задается в регистре CANPAGE, после чего следует заполнять регистры CANIDM1-4. Если да, то как работает маска? По полному совпадению или какая-то логическая функция?
Пока писал вопрос, понимания стало чуть больше. Тем не менее, очень надеюсь на помощь...