修改为250K-操控端
This commit is contained in:
38
CAN.C
38
CAN.C
@@ -150,19 +150,15 @@ void CAN_vInit(void)
|
||||
|
||||
/// General Configuration of the Node 0:
|
||||
/// - set INIT and CCE
|
||||
/// - enable interrupt generation upon a change of BOFF or EWARN or upon a
|
||||
/// set of LLE, LOE or INIT
|
||||
/// - alert interrupt node pointer: MultiCAN SRN 0
|
||||
|
||||
//-----------CAN_NCR0 = 0x00000049-------------------------------------
|
||||
//-----------CAN_NCR0 = 0x00000041-------------------------------------
|
||||
|
||||
CAN_vWriteCANAddress(CAN_NCR0); // Addressing CAN_NCR0
|
||||
CAN_DATA0 = 0x49; // load NODE 0 control register[7-0]
|
||||
CAN_DATA0 = 0x41; // load NODE 0 control register[7-0]
|
||||
CAN_vWriteEN(D0_VALID+ADR_INC); // Data0 is Valid for transmission and
|
||||
// Write is EnabledCAN Address pointing
|
||||
// to the CAN_NSR0.
|
||||
|
||||
|
||||
// CAN Address pointing to the CAN_NIPR0
|
||||
CAN_ADCON = ADR_INC; // Auto Increment the current address(+1)
|
||||
|
||||
@@ -198,15 +194,15 @@ void CAN_vInit(void)
|
||||
/// Configuration of the Node 0 Baud Rate:
|
||||
/// - required baud rate = 250.000 kbaud
|
||||
/// - real baud rate = 250.000 kbaud
|
||||
/// - sample point = 75.00 %
|
||||
/// - there are 11 time quanta before sample point
|
||||
/// - there are 4 time quanta after sample point
|
||||
/// - sample point = 83.33 %
|
||||
/// - there are 9 time quanta before sample point
|
||||
/// - there are 2 time quanta after sample point
|
||||
/// - the (re)synchronization jump width is 2 time quanta
|
||||
|
||||
//-----------CAN_NBTR0 = 0x00003A4B-------------------------------------
|
||||
//-----------CAN_NBTR0 = 0x0000184F-------------------------------------
|
||||
|
||||
CAN_DATA0 = 0x4B; // load NBTR0_SJW, BRP
|
||||
CAN_DATA1 = 0x3A; // load NBTR0_DIV8, TSEG2, TSEG1
|
||||
CAN_DATA0 = 0x4F; // load NBTR0_SJW, BRP
|
||||
CAN_DATA1 = 0x18; // load NBTR0_DIV8, TSEG2, TSEG1
|
||||
CAN_vWriteEN(D0_VALID+D1_VALID+ADR_INC); // Data0, 1 are valid for
|
||||
// transmission and Write is
|
||||
// Enabled with Auto
|
||||
@@ -401,11 +397,11 @@ void CAN_vInit(void)
|
||||
/// - priority class 3; transmit acceptance filtering is based on the list
|
||||
/// order (like class 1)
|
||||
/// - extended 29-bit identifier
|
||||
/// - identifier 29-bit: 0x12000023
|
||||
/// - identifier 29-bit: 0x11000023
|
||||
|
||||
//--------------MOAR6 = 0xF2000023---------------------------------------
|
||||
//--------------MOAR6 = 0xF1000023---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0xF2000023); // load MO6 arbitration register
|
||||
CAN_vWriteAMData(0xF1000023); // load MO6 arbitration register
|
||||
|
||||
// CAN Address pointing to the CAN_MODATAH6
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
@@ -478,11 +474,11 @@ void CAN_vInit(void)
|
||||
/// - priority class 3; transmit acceptance filtering is based on the list
|
||||
/// order (like class 1)
|
||||
/// - extended 29-bit identifier
|
||||
/// - identifier 29-bit: 0x11000123
|
||||
/// - identifier 29-bit: 0x11000124
|
||||
|
||||
//--------------MOAR7 = 0xF1000123---------------------------------------
|
||||
//--------------MOAR7 = 0xF1000124---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0xF1000123); // load MO7 arbitration register
|
||||
CAN_vWriteAMData(0xF1000124); // load MO7 arbitration register
|
||||
|
||||
// CAN Address pointing to the CAN_MODATAH7
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
@@ -710,11 +706,11 @@ void CAN_vInit(void)
|
||||
/// - priority class 3; transmit acceptance filtering is based on the list
|
||||
/// order (like class 1)
|
||||
/// - extended 29-bit identifier
|
||||
/// - identifier 29-bit: 0x12000024
|
||||
/// - identifier 29-bit: 0x11000024
|
||||
|
||||
//--------------MOAR10 = 0xF2000024---------------------------------------
|
||||
//--------------MOAR10 = 0xF1000024---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0xF2000024); // load MO10 arbitration register
|
||||
CAN_vWriteAMData(0xF1000024); // load MO10 arbitration register
|
||||
|
||||
// CAN Address pointing to the CAN_MODATAH10
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -281,7 +281,7 @@
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>5</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>1</bDave2>
|
||||
<PathWithFileName>.\CAN.C</PathWithFileName>
|
||||
|
||||
76
User.c
76
User.c
@@ -17,9 +17,6 @@ bit FlgOneTime = 0;
|
||||
ubyte uart2RxFlag = 0;
|
||||
uword RgCanPerid = 50;
|
||||
|
||||
ubyte can_error_cnt = 0;
|
||||
ubyte can_error_flg = 0;
|
||||
|
||||
//PWM 20181227
|
||||
ubyte PwmH[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
||||
//-----------------------------------------------------------------------
|
||||
@@ -261,7 +258,7 @@ void sbusCanDecode(void)
|
||||
SBUS2CANdecodeTemp = (float)(sbus_data.channels[0]);
|
||||
SBUS2CANdecodeTemp = (DF_ZeroValue - SBUS2CANdecodeTemp)*23;//<2F><>Ҫ<EFBFBD>任һ<E4BBBB>·<EFBFBD><C2B7>ţ<EFBFBD><C5A3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
DF_Curvature = (int16_t)SBUS2CANdecodeTemp;//<2F><><EFBFBD><EFBFBD>
|
||||
if( (DF_Curvature > (-50)) && (DF_Curvature < 50) ) //<2F><><EFBFBD>ӻ<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⡣
|
||||
if( (DF_Curvature > (-200)) && (DF_Curvature < 200) ) //<2F><><EFBFBD>ӻ<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⡣
|
||||
{
|
||||
DF_Curvature = 0;
|
||||
}
|
||||
@@ -276,17 +273,17 @@ void sbusCanDecode(void)
|
||||
}
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>
|
||||
SBUS2CANdecodeTemp = (float)(sbus_data.channels[7]);
|
||||
SBUS2CANdecodeTemp = (float)(sbus_data.channels[11]);
|
||||
SBUS2CANdecodeTemp = (DF_ZeroValue - SBUS2CANdecodeTemp);//<2F><>Ҫ<EFBFBD>任һ<E4BBBB>·<EFBFBD><C2B7>ţ<EFBFBD><C5A3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
DF_Reserve = (int16_t)SBUS2CANdecodeTemp;//ת<><D7AA>
|
||||
if( (DF_Reserve > (-50)) && (DF_Reserve < 50) ) //<2F><><EFBFBD>ӻ<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⡣
|
||||
{
|
||||
DF_Reserve = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//SwA
|
||||
if(sbus_data.channels[1] >= 1700)//<2F><><EFBFBD><EFBFBD>
|
||||
if(sbus_data.channels[12] >= 1700)//<2F><><EFBFBD><EFBFBD>
|
||||
{
|
||||
DF_SwA = 1;
|
||||
}
|
||||
@@ -296,11 +293,11 @@ void sbusCanDecode(void)
|
||||
}
|
||||
|
||||
//SwB
|
||||
if(sbus_data.channels[6] >= 1700)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(sbus_data.channels[4] >= 1700)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
DF_SwB = 2;
|
||||
}
|
||||
else if(sbus_data.channels[6] <= 250)//<2F>ڶ<EFBFBD><DAB6><EFBFBD>
|
||||
else if(sbus_data.channels[4] <= 500)//<2F>ڶ<EFBFBD><DAB6><EFBFBD>
|
||||
{
|
||||
DF_SwB = 0;
|
||||
}
|
||||
@@ -310,11 +307,11 @@ void sbusCanDecode(void)
|
||||
}
|
||||
|
||||
//SwC
|
||||
if(sbus_data.channels[4] >= 1700)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(sbus_data.channels[7] >= 1700)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
DF_SwC = 2;
|
||||
}
|
||||
else if(sbus_data.channels[4] <= 250)//<2F>ڶ<EFBFBD><DAB6><EFBFBD>
|
||||
else if(sbus_data.channels[7] <= 500)//<2F>ڶ<EFBFBD><DAB6><EFBFBD>
|
||||
{
|
||||
DF_SwC = 0;
|
||||
}
|
||||
@@ -324,7 +321,7 @@ void sbusCanDecode(void)
|
||||
}
|
||||
|
||||
//SwD
|
||||
if(sbus_data.channels[5] >= 1700)//<2F><><EFBFBD><EFBFBD>
|
||||
if(sbus_data.channels[13] >= 1700)//<2F><><EFBFBD><EFBFBD>
|
||||
{
|
||||
DF_SwD = 1;
|
||||
}
|
||||
@@ -347,13 +344,41 @@ void sbusCanDecode(void)
|
||||
|
||||
SBUS2CANdecodeTemp = (float)(sbus_data.channels[3]);
|
||||
UnRemoteControlOutput_2.bit_data.curvature = (int16_t)SBUS2CANdecodeTemp;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
}
|
||||
|
||||
UnRemoteControlOutput_2.bit_data.switch_a = P1_2;//
|
||||
UnRemoteControlOutput_2.bit_data.switch_d = P1_3;//
|
||||
}
|
||||
|
||||
UnRemoteControlOutput_2.bit_data.reserve1 = (uint16_t)(sbus_data.channels[10]);
|
||||
|
||||
|
||||
//SwB
|
||||
if(sbus_data.channels[5] >= 1700)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
UnRemoteControlOutput_2.bit_data.switch_b = 2;
|
||||
}
|
||||
else if(sbus_data.channels[5] <= 500)//<2F>ڶ<EFBFBD><DAB6><EFBFBD>
|
||||
{
|
||||
UnRemoteControlOutput_2.bit_data.switch_b = 0;
|
||||
}
|
||||
else//<2F><>һ<EFBFBD><D2BB>
|
||||
{
|
||||
UnRemoteControlOutput_2.bit_data.switch_b = 1;
|
||||
}
|
||||
|
||||
//SwC
|
||||
if(sbus_data.channels[6] >= 1700)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
UnRemoteControlOutput_2.bit_data.switch_c = 2;
|
||||
}
|
||||
else if(sbus_data.channels[6] <= 500)//<2F>ڶ<EFBFBD><DAB6><EFBFBD>
|
||||
{
|
||||
UnRemoteControlOutput_2.bit_data.switch_c = 0;
|
||||
}
|
||||
else//<2F><>һ<EFBFBD><D2BB>
|
||||
{
|
||||
UnRemoteControlOutput_2.bit_data.switch_c = 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//CAN<41><4E><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
|
||||
void CanRXTX(void)
|
||||
@@ -478,18 +503,11 @@ void CanRXTX(void)
|
||||
}
|
||||
|
||||
CanTransmit(DF_SwTx,(ubyte *)&UnRemoteControlOutput_1.arr[0]);
|
||||
CanTransmit(DF_SwTx1,(ubyte *)&UnRemoteControlOutput_2.arr[0]);
|
||||
CanTransmit(DF_SwTx1,(ubyte *)&UnRemoteControlOutput_2.arr[0]);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
if( (0x40 == can_error_cnt) || (0x80 == can_error_cnt) )//20250625<32>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
||||
{
|
||||
can_error_flg = can_error_cnt;
|
||||
CAN_vInit();
|
||||
can_error_cnt = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user