Полная версия этой страницы:
вопрос по CAN в 18Fxx8
valeroon
Mar 17 2008, 10:02
Помогите разобраться.Пытаюсь освоить CAN на базе 18f458.Экспериментирую на одном контроллере в режиме LOOP.Сконфигурировал по самому простому варианту с использованием одного буфера -0.Все маски сброшены,идентификатор-расширенный,прием по прерыванию RXB0IF.Принять сообщение удается только в режиме RXM1-RXM0=11(все сообщения).При RXM1-RXM0=10 ничего.Посоветуйте как решить проблему.
Madeveloper
Mar 19 2008, 20:19
PDF: Mode 0:
10 = Receive only valid messages with extended identifier; EXIDEN in RXFnSIDL must be ‘1’
Если используешь расширенную адресацию, EXIDEN должен быть выставлен.
valeroon
Mar 20 2008, 12:35
Есть движение в лучшее будущее.При конфигурировании на прием-передачу стандартного ИД. все работает как надо.А EXIDEN (когда пытался работать с расширенными сообщениями был установлен)
НЕ ПОНЯТНО где проморгал?
Madeveloper
Mar 20 2008, 13:41
CAN_Init();
ECANCON = 0;
RXB0CON = 0b01000000;
RXF0SIDL = 0b00001000;
RXM0SIDL = 0b00000000;
RXM0SIDH = 0b00000000;
RXM0SIDL = 0b00000000;
RXM0EIDH = 0b00000000;
RXM0EIDL = 0b00000000;
CAN_Mode(Mode_Loopback);
Специально проверил - работает (правда на 18F4585)
Может не учли что после выхода из режима конфигурирования маски и EXIDEN менять нельзя?
Всмысле сначала все устанавливаем, а потом только в Loopback переходим.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.