![]() |
roboforum.ruТехнический форум по робототехнике. |
|
|
Реклама | ||||
|
|
|||
![]() |
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();
}
файл includes.h
#ifndef INCLUDES_H
#define INCLUDES_H
#include <stdio.h>
#include <string.h>
#include <stype.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
#include <setjmp.h>
#include "OS_CPU.h"
#include "os_cfg.h"
#include "pc.h"
#include "ucos_ii.h"
#endif
//начало
#define OS_GLOBALS;
#include "includes.h"
#define OS_MASTER_FILE
#include "os_core.c"
#include "os_flag.c"
#include"os_mem.c"
#include"os_mbox.c"
#include"os_mutex.c"
#include"os_q.c"
#include"os_sem.c"
#include"os_task.c"
#include"os_time.c"
#define TASK_STK_SIZE 512
#define N_TASKS 10
#define _REG_BASE 0
#define P(off)*(uchar volatile*)(_REG_BASE+off)
#define COPCTL _P(0x3C)
#define CAN0CTL0 _P(0x0140)
#define CAN0CTL1 _P(0x0141)
#define CAN0BTR0 _P(0x0142)
#define CAN0BTR1 _P(0x0143)
#define CAN0RFLG _P(0x0144)
#define CAN0TFLG _P(0x0146)
#define CAN0TBEL _P(0x014A)
#define CAN0IDM0 _P(0x0154)
#define CAN0IDM1 _P(0x0155)
#define CAN0IDM2 _P(0x0156)
#define CAN0IDM3 _P(0x0157)
#define CAN0IDM4 _P(0x015C)
#define CAN0IDM5 _P(0x015D)
#define CAN0IDM6 _P(0x015E)
#define CAN0IDM7 _P(0x015F)
#define CAN0RXFG0 _P(0x0160)
#define CAN0RXFG1 _P(0x0161)
#define CAN0RXFG2 _P(0x0162)
#define CAN0RXFG3 _P(0x0163)
#define CAN0RXFG4 _P(0x0164)
#define CAN0RXFG5 _P(0x0165)
#define CAN0RXFG6 _P(0x0166)
#define CAN0RXFG7 _P(0x0167)
#define CAN0RXFG8 _P(0x0168)
#define CAN0RXFG9 _P(0x0169)
#define CAN0RXFGA _P(0x016A)
#define CAN0RXFGB _P(0x016B)
#define CAN0RXFGC _P(0x016C)
#define CAN0RXFGD _P(0x016D)
#define CAN0RXFGE _P(0x016E)
#define CAN0RXFGF _P(0x016F)
#define CAN0TXFG0 _P(0x0170)
#define CAN0TXFG1 _P(0x0171)
#define CAN0TXFG2 _P(0x0172)
#define CAN0TXFG3 _P(0x0173)
#define CAN0TXFG4 _P(0x0174)
#define CAN0TXFG5 _P(0x0175)
#define CAN0TXFG6 _P(0x0176)
#define CAN0TXFG7 _P(0x0177)
#define CAN0TXFG8 _P(0x0178)
#define CAN0TXFG9 _P(0x0179)
#define CAN0TXFGA _P(0x017A)
#define CAN0TXFGB _P(0x017B)
#define CAN0TXFGC _P(0x017C)
#define CAN0TXFGD _P(0x017D)
#define CAN0TXFGE _P(0x017E)
#define CAN0TXFGF _P(0x017F)
int main(void) {
OSInit();
OSTaskCreate(AppStartTask, (void*)0, (OS_STK*)
&Stk1[TASK_STK_SIZE-1]
, TASK_START_5);
OSStart();
return 0; }
Реклама | ||||
|
|
|||
![]() |
Вернуться в Новичкам или основы основ роботостроения.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5