Перейти к содержанию
    

С вероятностью 99% что у вас на шине CAN нет другого устройства. Поэтому, как правильно заметил Pheel, контроллер передает сообщение до получения подтверждения. Скорее всего в слове статуса у вас стоит соответствующий флаг. Эта ошибка (отсутствие подтверждения) должна определяться CAN-контроллером.

После подключения второго CAN-устройства (не забудте про терминаторы), сообщение должно отправляться 1 раз.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

C передачей вроде разобрался.

Но беспокоит момент с прерываниями:

 

ISR(CANIT_vect)
{

PORTC|=(1<<PC4);  // зажигаю лампочку
    
}

 

 

настройка прерываний

 

    CANGIT=0x00;
    
    CANGIE=0xFE;
    
    CANIE1=0xFF;
    CANIE2=0xFF;
    
sei();

 

 

--------------------------------------------

 

так вот... в функцию ISR - попадаю не всегда... через раз или через два а может и реже.

 

1.что может быть не так?

 

2. в библиотеке atmel пишет.

#define CANIT_vect_num        18
#define CANIT_vect            _VECTOR(18)
#define SIG_CAN_INTERRUPT1        _VECTOR(18)

 

для чего тогда остальные варианты когда я подставляю CANIT_vect ??

 

3. в даташите вектор прерывания по шине у at90can128 -- имеет номер 19

здесь же -- 18 ..??? не понятно(((

 

заранее спасибо)))

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите плииз, кто с CAN-ом разбирался, 2ой декнь туплю сижу :(. Для начала хочется увидеть передачу на шине, те на ножке TXCAN свою посылку. Частота настроена, начинаю передавать. Вижу импульсы на TX и каким то боком на RX, это разве нормально? Меняю значения адреса в посылке CANIDT2 и CANIDT1 ничего схожего почему то на осцилографе не вижу? Подключать второй контроллер пока с передачей первого не рахзобрался как то особо не хочется. В прерывание попадаю с флагами CANSTMOB (BERR и SERR), после несокльких неудачных передач, я так понимаю потому что АСК не получена, шина входит в BOFF, это так и должно быть? Пробовал подключить второй контроллер ничгео не именилось, те передача не проходит, АСК не возвращается (

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разобрался с соединением опторазвязка сделана, поставил резистор 120Ом и заработала, хотя фронты все равно завалины идут. Скорость стоит на 8Мгц 500Kbps.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может у кого естьобработчик ошибок от CAN, в интернете много всякой информации, но как конкретно надо обрабаотывать ошибки представление как то не сложилось :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Люди есь кто живой? Что может быть такое, на подтверждение отправки приходит TXOK, на приемной стороне тоже все получается, только почему то при чтении регистра CANMSG, там одни нули записаны :(.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ещё лучше, если существует финансовая возможность приобретения CAN-сниффера, который позволяет мониторить состояние и обмен по шине. Поищите в интернете, есть много вариантов.

Не надо сниффера. В AT90CAN32 есть возможность аппаратно подключить внутренний передатчик на внутренний приёмник, только почтовые ящики правильно настроить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...