|
硬件:电调(蚂蚁的版本),电机(xxd2212),AVR32(uc3b0256)核心板,11V/10A直流电源
程序:电调程序使用feng_matrix的第二版无刷电调代码,uc3b的程序自己写的
电调的程序修改了一下这个函数,目的是丢失i2c数据时能保持当前转速
unsigned char SollwertErmittlung(void)
//############################################################################
{
static unsigned int sollwert = 0;
//unsigned int ppm;
sollwert = I2C_RXBuffer;
PORTC &= ~ROT;
if(sollwert > MAX_PWM) sollwert = MAX_PWM; //#define MAX_PWM 255
return(sollwert);
}
主程序:
.........
........
........
volatile unsigned char data[1] = {50};
while(1)
{
dat=usart_getchar(&AVR32_USART1);//等待从计算机发来的串口的数据
if(dat==1)
{
usart_write_char(&AVR32_USART1,2);//反馈串口信息
data[0]++;//油门++
}
if(dat==2)
{
usart_write_char(&AVR32_USART1,4);
data[0]--;//油门--
}
twi_sendonebyte(&AVR32_TWI,data[0]);//i2c发送油门数据
}
通电,通过串口调试助手发送0x01,电机转起来了,连续发送0x01,电机不断加速,然后不断发送0x02,电机逐渐减速,然后慢慢停下了,但是我还在发送0x02,也就是说data[0]一直在减一,突然,电调冒烟了,当时就没反应过来(根本没想到会出问题啊),我愣了有2秒才拔掉电源。检查板子,发现好像烧了一个IRFR1205,再上电,单片机工作正常,但电机转不起来的。
感觉问题应该就在data[0]--这里,如果data[0]=0了再--就成了255,不过就算是发送了255,pwm占空比最高,那也不应该冒烟啊?
请问feng_matrix,还有各位大侠们,到底是哪不对了呢? |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|