Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Mozg 05 августа 2004 г. 00:35
В ответ на: Кто работал с CAN в PIC18F458 помогите разобраться с инициализацией (+) отправлено KT 14 апреля 2004 г. 00:05

Вот, правда на Pascal

function Can_Write(Len,TxID_H,TxID_L:Byte): Byte;
{Идентификатор сообщения в старшем байте - старшая часть,
остальные в младший битах младшего}
{Копирование данных джелать самим!}
begin
Result:=False;
if TestBit(TXB0CON,TXREQ)=0 then begin
SetBit(CANCON,WIN2); {c кем работа - передающй буфер ноль}
ClearBit(CANCON,WIN1);
ClearBit(CANCON,WIN0);
SetBit(TXB0CON,TXPRI1); {Установка приоритета}
SetBit(TXB0CON,TXPRI0);
TXB0SIDH:=TxID_H; {Установка идентификатора}
TXB0SIDL:=TxID_L shl 5;
Len:=Len and $07; {Защита от сбоя}
TXB0DLC:=Len;
SetBit(TXB0CON,TXREQ); {Передать}
CANCON:=CANCON and $F1; {Указатель памяти}
Result:=true;
end;
end;


procedure Can_Ini(BR1,BR2,BR3,MIDH,MIDL,FIDH,FIDL:byte);
{маска полносью старший байт и старшие биты в младшем
фильтр полностью старший байт и младшие биты младшего}
begin
ClearBit(TRISB,2); //Сконфигурировать ноги
SetBit(TRISB,3);
SetBit(CANCON,7); //режим настройки
BRGCON1:=BR1; //скорости
BRGCON2:=BR2;
BRGCON3:=BR3;
SetBit(BRGCON2,7); //фаза2 - программно
ClearBit(BRGCON2,6); //одна точка выборки
ClearBit(BRGCON3,6); //без пробуждения
CIOCON:=$50; //задействовать
RXB0CON:=$20; //сконфигурировать приемный буфер
Can_SetMask(MIDH,MIDL);//маска
Can_SetFilter(FIDH,FIDL);//фильтр
CANCON:=CANCON and $F; //нормальная работа
end;

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru