Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT90CAN128. Отправка пакета в сеть CAN.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Alexeus
Сам я начинающий, много вопросов. Даташиты читаю, но сразу врубиться сложно... Помогите кто в теме.
------------
Мне нужно хотя бы для примера послать один пакет в сеть КАН. Можете помочь написать код начиная с инициализации? (на ассемблере)
стандартный 11бит идентиф.

Нужно: Mob0, id=28F, Data=C0 03 C0 18 40 00 00 00
------------
Еще вопрос: При создании проекта в CvAVR с инициализацией КАН, предлагается менять много параметров, и к желаемой скорости в 250Kbps могут вести различные комбинации. Если программа отмечает что данные параметры верны для скорости 250кбпс, то я смогу работать с этими настройками в любой сети КАН с такой же скоростью или нужно знать такие же параметры той сети, с которой собираюсь работать?
Alexeus
Код
can_send:

ldi temp,0x00
sts CANPAGE,temp;  //mob0 с автоинкрементом

ldi temp,0b00001000  
sts CANCDMOB,temp; //8 байт в сообщении, передача разрешена, 2.0A

ldi temp,0x00
sts CANSTMOB,temp; // очистим ош-ки и прерывания

ldi temp,0x51      
sts CANIDT1,temp;  //  

ldi temp,0xE0
sts CANIDT2,temp;  //

ldi temp,0xFE
sts CANIDM1,temp;

ldi temp,0xE0
sts CANIDM2,temp;

ldi temp,0
sts CANIDT4,temp
ldi temp,0x02
sts CANIDM4,temp


      
      //=== вкладываем байты данных ===

ldi temp,0
ldi counter,6
data:
inc temp
sts CANMSG,temp; //clear data
dec counter
brne data

      //===============================

ldi temp,0xFF
sts CANSTMOB,temp; // очистим ош-ки и прерывания
ldi temp,0b01001000      
sts CANCDMOB,temp; //8 байт в сообщении, передача разрешена, 2.0A
nop
nop
reti


что не так?

Не отправляет...
Dog Pawlowa
Цитата(Alexeus @ Mar 13 2009, 18:30) *
Не отправляет...

Почитайте здесь на форуме CAN-bus.
Там есть подобные крики о помощи человека, который ничего к контроллеру не подключил, и ждал отправки сообщений.
Alexeus
у меня немного другая ситуация, к контроллеру подключен USB-CAN адаптер и пользую прогу CANHACKER. Практически тот же код на Си (даже не знаю в чем разница, вроде все так же перевел на асм) работает и шлет пакет.
Alexeus
а как настроить таймер, что бы периодично в 100мс отправлял моб?

прописал CANTCON=0x63; в инициализации КАН и в самом мобе, вызываю инициализацию моба один раз, по идее теперь этот моб должен автоматически повторяться с периодом 100мс, а он не повторяется, так один раз и отправляет...
galjoen
Цитата(Alexeus @ Mar 14 2009, 18:26) *
а как настроить таймер, что бы периодично в 100мс отправлял моб?

прописал CANTCON=0x63; в инициализации КАН и в самом мобе, вызываю инициализацию моба один раз, по идее теперь этот моб должен автоматически повторяться с периодом 100мс, а он не повторяется, так один раз и отправляет...

Всё работает так, как и д.б. Таймер не имеет никакого отношения к периоду отправки. Перечтите ДШ. Тут где-то даже ссылка пробегала на русский перевод (хороший).
Alexeus
А как вообще нужно подключать can адаптер к шине? там есть Vcc, Gnd, CanL, CanH. Нужно Vcc заводить или достаточно CanL, CanH, Gnd?
vseqwe
Цитата(Alexeus @ Mar 15 2009, 15:52) *
А как вообще нужно подключать can адаптер к шине? там есть Vcc, Gnd, CanL, CanH. Нужно Vcc заводить или достаточно CanL, CanH, Gnd?


Достаточно CanL, CanH, Gnd
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.