Hello TI:
在使用F28027做BLDC的有感控制时,使用GPIO16 17 18作为外部触发中断读取HALL的值,在中断中使用下面的语句读取HALL值。
Hall= (GpioDataRegs.GPADAT.all >>16) & 0x00000007; (Hall的类型为unsigned char)
GpioDataRegs.GPADAT.all对应16 17 18的bit值是正确的,但是最终得到的结果并不正确。为何不能这样直接读取???
注意到在BLDC_Sensored(28035)例程中读取HALL的方式为
temp = (GpioDataRegs.GPADAT.all>>24)&0x00000007; /* read all three GPIOs at once*/ \
\
HallGpioBitA = (temp&0x00000001); /* save GPIO24 – A*/ \
HallGpioBitB = (temp&0x00000002)>>1; /* save GPIO25 – B*/ \
HallGpioBitC = (temp&0x00000004)>>2; /* save GPIO26 – C*/ \
HallGpioBitA = HallGpioBitA; /*<<2; shift GPIO24 – A*/ \
HallGpioBitB = HallGpioBitB<<1; /* shift GPIO25 – B*/ \
HallGpioBitC = HallGpioBitC<<2; /*<<1; shift GPIO26 – C*/ \
\
v.HallGpio = HallGpioBitA + HallGpioBitB + HallGpioBitC;
这里为何不直接采取temp的值作为HALL结果呢???