LINUX.ORG.RU

PIC pic18f258 CAN-протокол


0

0

Есть у кого-нибудь работающий образец кода для sdcc, чтобы завести CAN-шину на этой железяке? Поделитесь, пожалуйста.

Мучаюсь, мучаюсь, а в шине сигнал так и не появляется...

☆☆☆☆☆
Ответ на: комментарий от LamerOk

На самом деле, можно и в основной цикл вложить проверку флагов и выполнение различных фукнций в зависимости от значения флагов. В принципе, по барабану, в каком месте отбрасывать «лишние» прерывания (чтобы DOS'а не было): в обработчике прерывания (если там функции вызываются), или в основном цикле.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

Можно, но не нужно. Это ничем не оправданное усложнение логики работы программы.

В ядре реальную обработку прерываний выносят за пределы обработчиков не от хорошей жизни - нужда заставляет.

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

Спорить с ламером бессмысленно!

А если уж такой умный, покажи мне код для пика18 в котором используется хотя бы 10 источников прерываний и вся обработка выполняется в обработчике.

vanner
()
Ответ на: комментарий от vanner

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

Ну вы загнули... Флагов там может быть и больше, но источников прерываний не так уж и много. А вектор прерываний вообще один и надо в нем проверять все флаги и действовать, сообразно им.

Но у меня обычно все функции по прерываниям вызываются прямо из обработчика (по прерыванию от таймера - изменение полярности на ключах для питания, например, шагового двигателя; по прерываниям от концевиков - остановка двигателя, отсылка сообщений и т.п.)

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

Я прекрасно знаю как устроен контроллер прерываний в пик18. Не одно устройство разработал на них. В старых семействах вектор один, в более новых два (высокий приоритет и низкий). У твоего чипа два, если ты не заметил. И источников прерываний там достаточно, открой в даташите раздел interrupts и посчитай.

vanner
()
Ответ на: комментарий от vanner

Хм, почитаю даташит еще раз. Я-то до этого писал для PIC16, думал, что 18-й от него практически ничем не отличается. Но все равно, эти контроллеры довольно просты. В отличие от всяких атмеловских, у которых уйма векторов прерываний и не надо в одном-двух обработчиках делать проверку 100500 ключей.

Eddy_Em ☆☆☆☆☆
() автор топика

Если кому интересно, вот исходники простой «тестилки» CAN-протокола (мигание светодиодами). «Мигалка» - на пяти светодиодах, подвешенных на порт А pic18f258, «управлялка» - контроллер NuCOM PCI-7841.

Пришлось малость повозиться с микрочиповской библиотечкой, т.к. sdcc как-то странно «оптимизировал» указатели на отображаемые буферы (со статическими буферами все ОК).

Eddy_Em ☆☆☆☆☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.