Приветствую!
Устройство на базе AT90CAN128 новое и нет 100% уверенности, что в нём отсутствуют аппаратные ошибки. При тщательном изучении аппаратных ошибок не выявлено.
Имеется заведомо работающий датчик с CAN, который постоянно сыпет в линию CAN своё значение. Имеется конвертер, который получает то, что кидает датчик и тупо передаёт по RS232.
Цифры осмысленные, расшифровке поддаются. Коечная цель сделать так, чтобы устройство на базе AT90CAN128 воспринимало то, что кидает в линию датчик.
На текущий момент получается так, что устройство на базе AT90CAN128 "подвешивает" датчик после инициализации CAN контроллера в устройстве на базе AT90CAN128. Да так подвешивает, что датчик возобновляет нормальную работу только после передёргивания питания. Специально сделал задержку инициализации CAN на 10 секунд. Когда на линии CAN сидят три устройства - датчик, конвертер, контроллер вижу, как сыпятся посылки от датчика. Прошло 10 секунд, произошла инициализация датчика, посылки прекратились. Методом исключения было установлено, что контроллер вешает датчик, когда в инициализации делается только сброс контроллера, задание скорости, включение CAN контроллера. Если в процедуре инициализации убрать задание скорости, но оставить включение CAN контроллера, то датчик не подвешивается.
Код
void CAN_Init(unsigned char set_brp, unsigned char set_prs, unsigned char set_phs1, unsigned char set_phs2)
{
CAN_CONTROLLER_RESET; //сброс общего регистра управления CAN
/*
CANBT1 = 0x06;
CANBT2 = 0x0C;
CANBT3 = 0x37;
*/
CANBT1 = 0x0E;
CANBT2 = 0x04;
CANBT3 = 0x13;
CANGCON |= 0x02; //Разрешить контроллер CAN
}
Значение CANBT взяты из мануала AT90CAN128. Пробовал оба значения для данного кварца. Результат один. Конечно можно предположить, что датчик неправильный. Но ведь другое CAN устройство с этим датчиком подружилось.
Пробовал делать передачу на моём контроллере, используя вот этот пример
http://forum.cxem.net/index.php?app=core&a...ttach_id=137917 Смущает, что светодиод, подключенный на линию CAN горит ровным свечением, без мерцания. Когда я цеплял тот же светодиод на линию CAN, когда был подключен датчик и конвертер, наблюдалось характерное мерцание светодиода.
Заранее благодарен за советы!
Сообщение отредактировал IgorKossak - Jun 29 2016, 08:10
Причина редактирования: [codebox] для длинного кода. [code]-для короткого!!!