2007-09-20 22:54:11 +02:00
|
|
|
#ifndef _BLMC_H_
|
|
|
|
#define _BLMC_H_
|
|
|
|
|
|
|
|
#include <avr/io.h>
|
|
|
|
|
2008-02-17 18:17:28 +01:00
|
|
|
#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
|
2007-09-20 22:54:11 +02:00
|
|
|
|
2008-02-17 18:17:28 +01:00
|
|
|
#define FLAG_SOFTERR_MASK 0x0F0
|
2008-03-05 17:08:33 +01:00
|
|
|
#define FLAG_CURRENT_LIMIT 0x010
|
|
|
|
#define FLAG_I2C_TIMEOUT 0x020
|
2008-02-17 18:17:28 +01:00
|
|
|
|
|
|
|
#define FLAG_HARDERR_MASK 0xF00
|
|
|
|
#define FLAG_UNDERVOLTAGE 0x100
|
|
|
|
#define FLAG_OVERCURRENT 0x200
|
2008-03-05 17:08:33 +01:00
|
|
|
#define FLAG_SELFTEST_FAILED 0x400
|
|
|
|
#define FLAG_INVALID_EEPROM 0x800
|
|
|
|
|
|
|
|
#define FLAG_I2C_ACTIVE 0x1000
|
2007-09-20 22:54:11 +02:00
|
|
|
|
|
|
|
struct blmc_ {
|
2008-02-17 18:17:28 +01:00
|
|
|
uint16_t flags;
|
2007-09-20 22:54:11 +02:00
|
|
|
|
|
|
|
uint8_t pwm; // pwm setpoint
|
|
|
|
uint8_t pwm_limit; // increased by current-limit
|
|
|
|
|
|
|
|
uint16_t rpm;
|
|
|
|
uint16_t rpm_tmp;
|
2008-02-17 18:17:28 +01:00
|
|
|
uint16_t rpm_tmp_old;
|
2007-09-20 22:54:11 +02:00
|
|
|
|
|
|
|
uint16_t current;
|
|
|
|
uint16_t voltage;
|
|
|
|
};
|
|
|
|
|
|
|
|
void trigger_adc(uint8_t channel);
|
|
|
|
void setpwm(uint8_t pwm);
|
|
|
|
void spinup(void);
|
|
|
|
|
|
|
|
#endif
|