48 lines
876 B
C
48 lines
876 B
C
#ifndef _BLMC_H_
|
|
#define _BLMC_H_
|
|
|
|
#include <avr/io.h>
|
|
|
|
#define PHASE_A_H (1<<PORTB1)
|
|
#define PHASE_B_H (1<<PORTB2)
|
|
#define PHASE_C_H (1<<PORTB3)
|
|
#define PHASE_H_MASK (PHASE_A_H | PHASE_B_H | PHASE_C_H)
|
|
|
|
#define PHASE_A_L (1<<PORTD4)
|
|
#define PHASE_B_L (1<<PORTD3)
|
|
#define PHASE_C_L (1<<PORTD2)
|
|
#define PHASE_L_MASK (PHASE_A_L | PHASE_B_L | PHASE_C_L)
|
|
|
|
#define SENSE_A 0
|
|
#define SENSE_B 1
|
|
#define SENSE_C 2
|
|
|
|
#define SENSE_VOLTAGE 3
|
|
#define SENSE_CURRENT 6
|
|
|
|
#define FLAG_PWM_SPINUP 0x01
|
|
#define FLAG_PWM_NORMAL 0x02
|
|
|
|
#define FLAG_COM_SPINUP 0x10
|
|
#define FLAG_COM_NORMAL 0x20
|
|
|
|
struct blmc_ {
|
|
uint8_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_tmp2;
|
|
|
|
uint16_t current;
|
|
uint16_t voltage;
|
|
};
|
|
|
|
void trigger_adc(uint8_t channel);
|
|
void setpwm(uint8_t pwm);
|
|
void spinup(void);
|
|
|
|
#endif
|