#define _E_BIKE_W79E83X_C_
#include "intrins.h"
#include "E_BIKE_W79E83X.H"
#include"W79E834.h"
/******************************************************************** *********
* 主函数
********************************************************************* *********/
void main(void)
{
Init(); // 初始化
Init_IO(); // 初始化端口
H_Sample(); // 霍尔信号采样
Phase_Change(); // 相位变换
AutoHelpEN(1,0x1AA,200);
/*
第一个参数设定助力功能允许与否,1为允许,0为禁止
第二个参数设定助力力量(PWM占空比),数值范围:0~0x355,数值越大,力量越大
第三个参数设定助力时间,数值越大,时间越长
*/
Keep_SpeedEN(1,0x20,6);
/*
第一个参数设定定速巡航功能允许与否,1为允许,0为禁止
第二个参数设定定速巡航最低速设置
第三个参数设定在巡航点保持多长时间后才进入巡航 */
Current_Lim(0xB48);
/*
过流保护上限值设定
0xB00对应限电流最大大约为2.6A
0xB80对应限流值最大大约为3.8A
*/
LowVoltage_Lim(0x9B0);
/*
欠压保护下限值设定
电池电压为47.9V时ADC采样值为0xB6 ==> 0xB60 推算电池电压为41V时的采样值为0x9B ==> 0x9B0
推算电池电压为40V时的采样值为0x98 ==> 0x980 */
EABS_Set(1,1);
/*
第一个参数为滑行充电功能使能,1为允许,0为禁止第二个参数为电刹车功能使能,1为允许,0为禁止 */
Speed_LimHW(0,0,0,1);
/*
硬件控制最大速度
参数只能有一个为1。
第一个参数对应15km/h
第二个参数对应20km/h
第三个参数对应30km/h
第四个参数对应40km/h
*/
Speed_LimSW(0x01);
/*
软件控制最大速度
参数数值由0x00~0x20,数值越小速度越大,反之则越小
*/
while(1)
{
_nop_();
//AutoHelpEN(0,0x1AA,100);
//Keep_SpeedEN(1,0x20,6);
//Current_Lim(0xB50);
//LowVoltage_Lim(0x9B0);
//EABS_Set(0,0);
//Speed_LimHW(0,0,0,1);
}
}
/******************************************************************** **********
* I/O端口初始化
********************************************************************* *********/
void Init_IO(void)
{
//------P0端口设置------//
P0M1=0xBE;
P0M2=0x01;
/*
P0M1.Y P0M2.Y=00 设置I/O端口为普通双向模式
P0M1.Y P0M2.Y=01 设置I/O端口为推拉模式
P0M1.Y P0M2.Y=10 设置I/O端口为输入(高阻)模式
P0M1.Y P0M2.Y=11 设置I/O端口为开漏模式
*/
//P0ID=0x78; // 设置四个AD端口0数字输入禁止
P0=0xFF;
//------P1端口设置------//
P1M1=0x1C;
P1M2=0xC0;
P1=0xFF;
//------P2端口设置------//
P2M1=0x01;
P2M2=0x1E;
P2=0xFF;
}
/******************************************************************** **********
* 初始化程序
********************************************************************* *********/
void Init(void)
{
unsigned char i;
//------PWM设置------//
// PWMP > PWMn 高电平,反之低电平
PWMPH=0X03;
PWMPL=0X55;
PWM0H=0X00;
PWM0L=0X00;
PWM1H=0X00;
PWM1L=0X00;
PWM2H=0X00;
PWM2L=0X00;
PWMCON1=0XC7; // 打开PWM电路,三个PWM口反相输出 PWMCON3=0xF0;
//------飞车保护--------//
EA=1;
/*do {
ADCCON=1;
ADCCON&=0xef;
ADCCON|=0x08;
ADC_Ready=0;
while(ADC_Ready);
}
while (ADCH>0x60);*/
//-----相位检测-------//
while(P02==0)
{
H_Sample();
Phase_Detect();
继续阅读