Начинаем програмную реализацию. Американская м/сх mc9s12dp512. Немного о том как предполагается работоспособность робота. Квантовый компьютер от информации от зрения, анализирует. Затем команда по Can. 9s12dp512 считывает команду и последовательный интерфейс отправляет пакеты данных к 68hc08dt64. Далее отработка двигателем всей информации. Ещё зрение не выбрал. Датчики красного цвета, так сам решил. Прием осуществляет такая задача.
Код:
static void Task1(void*pdata){
for ( ; ; ){
CAN0IDM0=0xFF;
CAN0IDM1=0xFF;
CAN0IDM2=0xFF;
CAN0IDM3=0xFF;
CAN0IDM4=0xFF;
CAN0IDM5=0xFF;
CAN0IDM6=0xFF;
CAN0IDM7=0xFF;
CAN0CTL0=CAN0CTL0&0xFE;
if((
CAN0CTL0&0x10)==0){
if(CAN0RFLG||0x01){ CAN0RFLG|=0x01;
Uchar pn, op, clear;
pn=CAN0RXFG0;//ном.
op=CAN0RXFG1;//код
//sci0 9600 bits 8bit
SC0BDL=0x34;
SC0BDH=0x00;
SC0CR1=0x04;
clear=SC0SR1;
SC0DRL=SC0SR1;
SC0CR2=0x08;
SC0DRL=pn;
while(SC0SR1|=0x80){;};
SC0CR2=0x08;
clear=SC0SR1;
SC0DRL=op;
while(SC0SR1|=0x80){;};
asm("swi")
}
} } }
Static void AppStartTask(void*pdata) {
//частота кварца 8МГц,прерыв.rti 100мс
RTICTL=0x85;//rti init
RTIFLG=0x80;
COPCTL=0;//can init
CAN0CTL1=CAN0CTL1|0x80;
CAN0CTL1=CAN0CTL1&0xEF;
while((CAN0CTL1|0x01)==0)
{CAN0CTL0=CAN0CTL0|0x01;}
#pragma interrupt_handler RTIISR()
#pragma abs_address:0xFFF0 void (*Timer_interrupt_vector[])()={RTIISR}
#pragma end_abs_address
OSTaskCreate(Task1,(void*)0,(OS_STK*)&stk2[TASK_STK_SIZE-1],9); }
void RTIISR(void)
{
OSTimeTick();
}