AVR based brushless motor controller
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

40 lines
801 B

#ifndef _BLMC_H_
#define _BLMC_H_
#define FLAG_RUN_MASK 0x00F
#define FLAG_PWM_SPINUP 0x001
#define FLAG_PWM_NORMAL 0x002
#define FLAG_COM_SPINUP 0x004
#define FLAG_COM_NORMAL 0x008
#define FLAG_SOFTERR_MASK 0x0F0
#define FLAG_CURRENT_LIMIT 0x010
#define FLAG_I2C_TIMEOUT 0x020
#define FLAG_HARDERR_MASK 0xF00
#define FLAG_UNDERVOLTAGE 0x100
#define FLAG_OVERCURRENT 0x200
#define FLAG_SELFTEST_FAILED 0x400
#define FLAG_INVALID_EEPROM 0x800
#define FLAG_I2C_ACTIVE 0x1000
struct blmc_ {
uint16_t flags;
uint8_t pwm; // pwm setpoint
uint8_t pwm_limit; // increased by current-limit
uint16_t rpm;
uint16_t rpm_tmp;
uint16_t rpm_tmp_old;
uint16_t current;
uint16_t voltage;
};
void trigger_adc(uint8_t channel);
void setpwm(uint8_t pwm);
void spinup(void);
#endif