3Fase120degdriver.c
#include "PE_Types.h"
#include "IO_Map.h"
#include "3Fase120degdriver.h"
/* 3Fase Motor Driver */
/* 2013/6 Witten By FujiOomagari */
/* GLOVAL */
char StateMot;
int Timer_int;
/* PWM not witten */
char motor_driver_init(char max_speed){
threefase120deggen();
Timer_int= max_speed;
StateMot=0;
//ptcinit
}
/* stop */
char motor_driver_end(void){
;
}
/* 3Fase 120Deg Drive Table */
/*11Z00Z 出力*/
/*111000 極性 180Deg*/
/*001001 3ST*/
#define DriveA 0x0038
#define Newtral 0x0009
unsigned char Pattern[6];
void threefase120deggen(void){
unsigned int wk;
int a,b;
for (a=0;a<6;a++){
wk=DriveA;
wk
=wk<<6;
wk=wk | DriveA;
wk=wk>>a;
// printf("wk %1d =%X
\n",a,wk );
Pattern[a]=0;
for(b=0;b<3;b++){
Pattern[a]=Pattern[a] | wk&0x01;
wk=wk>>2;
Pattern[a]=Pattern[a]<<1;
// printf("wk %1d =%X
\n",b,Pattern[a] );
}
wk=Newtral;
wk =wk<<6;
wk=wk |
Newtral;
wk=wk>>a;
// printf("wkN %1d =%X \n",a,wk);
for(b=0;b<3;b++){
Pattern[a]=Pattern[a] | wk&0x01;
wk=wk>>2;
Pattern[a]=Pattern[a]<<1;
}
Pattern[a]=Pattern[a]<<1;
// Bit7~2
}
}
/* StateMot 0で終了 */
char motor_driver( void){
char a,fase;
StateMot=1;
PTCD=0x80;
tslp_tsk(Timer_int);
while(StateMot){
for
(StateMot=2;StateMot<8;StateMot++){
fase=Pattern[StateMot-2];
PTCD=(fase>>2) | 0x80; //LL64
tslp_tsk(Timer_int);
}
}
}
3Fase120degdriver.h
char motor_driver_init(char max_speed);
char motor_driver(void);
void threefase120deggen(void);
char motor_driver_end(void);