提交 c6419389 作者: wysheng

完善模块管理

上级 3fce6c2f
......@@ -247,26 +247,26 @@ void TCUCanInit(void)
// 最小时间份额 TQ = 2 * ( BRP + 1 ) / Fosc = 2*(7+1)/16M = 1uS
// 同步段 Sync Seg = 1TQ
// 传播段 Prop Seg = ( PRSEG + 1 ) * TQ = 1 TQ
// 相位缓冲段 Phase Seg1 = ( PHSEG1 + 1 ) * TQ = 3 TQ
// 相位缓冲段 Phase Seg2 = ( PHSEG2 + 1 ) * TQ = 3 TQ
// 相位缓冲段 Phase Seg1 = ( PHSEG1 + 1 ) * TQ = 1 TQ
// 相位缓冲段 Phase Seg2 = ( PHSEG2 + 1 ) * TQ = 1 TQ
// 同步跳转长度设置为 CNF1.SJW[1:0] = 00, 即 1TQ
// 总线波特率 NBR = Fbit = 1/(sync seg + Prop seg + PS1 + PS2 )
// = 1/(8TQ) = 1/8uS = 125kHz
// = 1/(4TQ) = 1/4uS = 250kHz
//设置分频控制器CNF1.BRP[5:0] = 7,同步跳转长度设置为 CNF1.SJW[1:0] = 00
MCP2515_WriteReg( CNF1, (1<<BRP0)|(1<<BRP1)|(1<<BRP2) );
// 设置传播段 Prop Seg 为00,即1TQ,相位缓冲段 Phase Seg1的长度3TQ
MCP2515_WriteReg( CNF2, (1<<BTLMODE)|(1<<PHSEG11) );
// 设置 相位缓冲段 Phase Seg2为 3TQ , 禁用唤醒滤波器
MCP2515_WriteReg( CNF3, (1<<PHSEG21) );
// 设置传播段 Prop Seg 为00,即1TQ,相位缓冲段 Phase Seg1的长度1TQ
MCP2515_WriteReg( CNF2, (1<<BTLMODE)|(0<<PHSEG10) );
// 设置 相位缓冲段 Phase Seg2为 1TQ , 禁用唤醒滤波器
MCP2515_WriteReg( CNF3, (0<<PHSEG20) );
*/
MCP2515_B_WriteReg(CNF1, (1 << BRP0) | (1 << BRP1) | (1 << BRP2)); //125K
MCP2515_B_WriteReg(CNF1, (1 << BRP0) | (1 << BRP1) | (1 << BRP2));
// 设置传播段 Prop Seg 为00,即1TQ,相位缓冲段 Phase Seg1的长度3TQ
// 设置传播段 Prop Seg 为00,即1TQ,相位缓冲段 Phase Seg1的长度1TQ
MCP2515_B_WriteReg(CNF2, (1 << BTLMODE) | (0 << PHSEG11));
// 设置 相位缓冲段 Phase Seg2为 3TQ , 禁用唤醒滤波器
// 设置 相位缓冲段 Phase Seg2为 1TQ , 禁用唤醒滤波器
MCP2515_B_WriteReg(CNF3, (0 << PHSEG21));
// 设置MCP2515中断使能寄存器,使能接收缓冲器中断
......
......@@ -40,5 +40,5 @@ typedef struct
}StructDcModuleGroupCtrl;
extern StructDcModuleGroup DcModuleGroup[];
extern StructDcModuleManage DcModuleManage_A;
#endif /*__DRV_SMARTALLOCATION_H__*/
......@@ -123,19 +123,16 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
{
DcModuleGroup[3].status = Hold_B;
DcModuleManage_B.ValidNum += DcModuleGroup[3].ValidNum;
//切换继电器
}
else if(DcModuleGroup[2].status == Valid)
{
DcModuleGroup[2].status = Hold_B;
DcModuleManage.ValidNum += DcModuleGroup[2].ValidNum;
//切换继电器
}
else if(DcModuleGroup[1].status == Valid)
{
DcModuleGroup[1].status = Hold_B;
DcModuleManage.ValidNum += DcModuleGroup[1].ValidNum;
//切换继电器
}
}
else
......@@ -144,19 +141,16 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
{
DcModuleGroup[1].status = Valid;
DcModuleManage.ValidNum -= DcModuleGroup[1].ValidNum;
//切换继电器
}
else if(DcModuleGroup[2].status == Hold_B)
{
DcModuleGroup[2].status = Valid;
DcModuleManage.ValidNum -= DcModuleGroup[2].ValidNum;
//切换继电器
}
else if(DcModuleGroup[3].status == Hold_B)
{
DcModuleGroup[3].status = Valid;
DcModuleManage.ValidNum -= DcModuleGroup[3].ValidNum;
//切换继电器
}
}
UniChgTick = 0;
......
......@@ -845,7 +845,7 @@ void TCUComm(void const * argument)
for (; ; )
{
#if 1
TCURecvProcess(); //帧接收
TCUWorkProcess(); //遥测遥信息处理
TCULinkProcess(); //心跳包处理配置信息
......@@ -853,21 +853,6 @@ void TCUComm(void const * argument)
// TCUCodeDone();//告警故障处理
// TCUSaveEventDone();
#endif
#if 0
static u8 StatusGetCnt = 0;
StatusGetCnt++;
if(StatusGetCnt > 255)
StatusGetCnt = 0;
u8 Data[8] ={0};
Data[0] = StatusGetCnt;
TCUSinglePackSendMsg(Data, 8, eCmd_stopAck, 4);
#endif
osDelay(100);
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论