Compare commits
1 Commits
main
...
250K-Contr
| Author | SHA1 | Date | |
|---|---|---|---|
| 0bac0a1b23 |
38
CAN.C
38
CAN.C
@@ -150,19 +150,15 @@ void CAN_vInit(void)
|
|||||||
|
|
||||||
/// General Configuration of the Node 0:
|
/// General Configuration of the Node 0:
|
||||||
/// - set INIT and CCE
|
/// - 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_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
|
CAN_vWriteEN(D0_VALID+ADR_INC); // Data0 is Valid for transmission and
|
||||||
// Write is EnabledCAN Address pointing
|
// Write is EnabledCAN Address pointing
|
||||||
// to the CAN_NSR0.
|
// to the CAN_NSR0.
|
||||||
|
|
||||||
|
|
||||||
// CAN Address pointing to the CAN_NIPR0
|
// CAN Address pointing to the CAN_NIPR0
|
||||||
CAN_ADCON = ADR_INC; // Auto Increment the current address(+1)
|
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:
|
/// Configuration of the Node 0 Baud Rate:
|
||||||
/// - required baud rate = 250.000 kbaud
|
/// - required baud rate = 250.000 kbaud
|
||||||
/// - real baud rate = 250.000 kbaud
|
/// - real baud rate = 250.000 kbaud
|
||||||
/// - sample point = 75.00 %
|
/// - sample point = 83.33 %
|
||||||
/// - there are 11 time quanta before sample point
|
/// - there are 9 time quanta before sample point
|
||||||
/// - there are 4 time quanta after sample point
|
/// - there are 2 time quanta after sample point
|
||||||
/// - the (re)synchronization jump width is 2 time quanta
|
/// - the (re)synchronization jump width is 2 time quanta
|
||||||
|
|
||||||
//-----------CAN_NBTR0 = 0x00003A4B-------------------------------------
|
//-----------CAN_NBTR0 = 0x0000184F-------------------------------------
|
||||||
|
|
||||||
CAN_DATA0 = 0x4B; // load NBTR0_SJW, BRP
|
CAN_DATA0 = 0x4F; // load NBTR0_SJW, BRP
|
||||||
CAN_DATA1 = 0x3A; // load NBTR0_DIV8, TSEG2, TSEG1
|
CAN_DATA1 = 0x18; // load NBTR0_DIV8, TSEG2, TSEG1
|
||||||
CAN_vWriteEN(D0_VALID+D1_VALID+ADR_INC); // Data0, 1 are valid for
|
CAN_vWriteEN(D0_VALID+D1_VALID+ADR_INC); // Data0, 1 are valid for
|
||||||
// transmission and Write is
|
// transmission and Write is
|
||||||
// Enabled with Auto
|
// Enabled with Auto
|
||||||
@@ -401,11 +397,11 @@ void CAN_vInit(void)
|
|||||||
/// - priority class 3; transmit acceptance filtering is based on the list
|
/// - priority class 3; transmit acceptance filtering is based on the list
|
||||||
/// order (like class 1)
|
/// order (like class 1)
|
||||||
/// - extended 29-bit identifier
|
/// - 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 Address pointing to the CAN_MODATAH6
|
||||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
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
|
/// - priority class 3; transmit acceptance filtering is based on the list
|
||||||
/// order (like class 1)
|
/// order (like class 1)
|
||||||
/// - extended 29-bit identifier
|
/// - 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 Address pointing to the CAN_MODATAH7
|
||||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
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
|
/// - priority class 3; transmit acceptance filtering is based on the list
|
||||||
/// order (like class 1)
|
/// order (like class 1)
|
||||||
/// - extended 29-bit identifier
|
/// - 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 Address pointing to the CAN_MODATAH10
|
||||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
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>
|
<GroupNumber>1</GroupNumber>
|
||||||
<FileNumber>5</FileNumber>
|
<FileNumber>5</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>1</bDave2>
|
<bDave2>1</bDave2>
|
||||||
<PathWithFileName>.\CAN.C</PathWithFileName>
|
<PathWithFileName>.\CAN.C</PathWithFileName>
|
||||||
|
|||||||
64
User.c
64
User.c
@@ -17,9 +17,6 @@ bit FlgOneTime = 0;
|
|||||||
ubyte uart2RxFlag = 0;
|
ubyte uart2RxFlag = 0;
|
||||||
uword RgCanPerid = 50;
|
uword RgCanPerid = 50;
|
||||||
|
|
||||||
ubyte can_error_cnt = 0;
|
|
||||||
ubyte can_error_flg = 0;
|
|
||||||
|
|
||||||
//PWM 20181227
|
//PWM 20181227
|
||||||
ubyte PwmH[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
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 = (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>
|
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>
|
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;
|
DF_Curvature = 0;
|
||||||
}
|
}
|
||||||
@@ -276,7 +273,7 @@ void sbusCanDecode(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD>
|
//<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>
|
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>
|
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>⡣
|
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>⡣
|
||||||
@@ -286,7 +283,7 @@ void sbusCanDecode(void)
|
|||||||
|
|
||||||
|
|
||||||
//SwA
|
//SwA
|
||||||
if(sbus_data.channels[1] >= 1700)//<2F><><EFBFBD><EFBFBD>
|
if(sbus_data.channels[12] >= 1700)//<2F><><EFBFBD><EFBFBD>
|
||||||
{
|
{
|
||||||
DF_SwA = 1;
|
DF_SwA = 1;
|
||||||
}
|
}
|
||||||
@@ -296,11 +293,11 @@ void sbusCanDecode(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//SwB
|
//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;
|
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;
|
DF_SwB = 0;
|
||||||
}
|
}
|
||||||
@@ -310,11 +307,11 @@ void sbusCanDecode(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//SwC
|
//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;
|
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;
|
DF_SwC = 0;
|
||||||
}
|
}
|
||||||
@@ -324,7 +321,7 @@ void sbusCanDecode(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//SwD
|
//SwD
|
||||||
if(sbus_data.channels[5] >= 1700)//<2F><><EFBFBD><EFBFBD>
|
if(sbus_data.channels[13] >= 1700)//<2F><><EFBFBD><EFBFBD>
|
||||||
{
|
{
|
||||||
DF_SwD = 1;
|
DF_SwD = 1;
|
||||||
}
|
}
|
||||||
@@ -348,12 +345,40 @@ void sbusCanDecode(void)
|
|||||||
SBUS2CANdecodeTemp = (float)(sbus_data.channels[3]);
|
SBUS2CANdecodeTemp = (float)(sbus_data.channels[3]);
|
||||||
UnRemoteControlOutput_2.bit_data.curvature = (int16_t)SBUS2CANdecodeTemp;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
UnRemoteControlOutput_2.bit_data.curvature = (int16_t)SBUS2CANdecodeTemp;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
UnRemoteControlOutput_2.bit_data.switch_a = P1_2;//
|
//SwC
|
||||||
UnRemoteControlOutput_2.bit_data.switch_d = P1_3;//
|
if(sbus_data.channels[6] >= 1700)//<EFBFBD><EFBFBD><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>
|
//CAN<41><4E><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
|
||||||
void CanRXTX(void)
|
void CanRXTX(void)
|
||||||
@@ -479,17 +504,10 @@ void CanRXTX(void)
|
|||||||
|
|
||||||
CanTransmit(DF_SwTx,(ubyte *)&UnRemoteControlOutput_1.arr[0]);
|
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