00001
00002 #ifndef BLDC_H
00003 #define BLDC_H
00004
00005 #include "config.h"
00006
00007
00008 #define UL PB0
00009 #define UH PB1
00010 #define VL PB2
00011 #define VH PB3
00012 #define WL PB4
00013 #define WH PB5
00014
00015
00016 #define CS1_FWD ((1 << VL) | (1 << WH))
00017 #define CS2_FWD ((1 << VL) | (1 << UH))
00018 #define CS3_FWD ((1 << WL) | (1 << UH))
00019 #define CS4_FWD ((1 << WL) | (1 << VH))
00020 #define CS5_FWD ((1 << UL) | (1 << VH))
00021 #define CS6_FWD ((1 << UL) | (1 << WH))
00022
00023
00024 #define CS1_REV ((1 << WL) | (1 << VH))
00025 #define CS2_REV ((1 << WL) | (1 << UH))
00026 #define CS3_REV ((1 << VL) | (1 << UH))
00027 #define CS4_REV ((1 << VL) | (1 << WH))
00028 #define CS5_REV ((1 << UL) | (1 << WH))
00029 #define CS6_REV ((1 << UL) | (1 << VH))
00030
00031
00032 #ifdef __ICCAVR__
00033 code U8
00034 #elif __GNUC__
00035 U8
00036 #endif
00037 commTableForward[8] = {
00038 0x00,
00039 CS6_FWD,
00040 CS2_FWD,
00041 CS1_FWD,
00042 CS4_FWD,
00043 CS5_FWD,
00044 CS3_FWD,
00045 0x00
00046 };
00047
00048
00049 #ifdef __ICCAVR__
00050 code U8
00051 #elif __GNUC__
00052 U8
00053 #endif
00054 commTableReverse[8] = {
00055 0x00,
00056 CS2_REV,
00057 CS6_REV,
00058 CS1_REV,
00059 CS4_REV,
00060 CS3_REV,
00061 CS5_REV,
00062 0x00
00063 };
00064
00065
00066 #define PWM_TOP_VALUE 0x3ff
00067
00068
00069 #define ADMUX_PA7 ((1 << MUX2) | (1 << MUX1))
00070 #define ADMUX_PA1 ((1 << MUX0))
00071 #define ADMUX_PA2 ((2 << MUX0))
00072
00073
00074 #define ADC_PRESCALER (1 << ADPS2)
00075
00076
00077 #define ADC_TS_FREERUNNING ((0 << ADTS2) | (0 << ADTS1) | (0 << ADTS0))
00078
00079
00080
00081 #define ADC_MAX 0x1EB // Based on measurement
00082 #define ADC_TWI 0x3FF // When TWI connected to ADC
00083
00084
00085 #define GPIOR0_ADDR 0x2a
00086
00087
00088
00089
00090
00091 #define K_SPEED 34152 // max speed : 7000 (MC100 motor)
00092
00093
00094
00095
00096
00097
00098
00099 extern void Commutate(void);
00100 extern void PLLInit(void);
00101 extern void PWMInit(void);
00102 extern void HallSensorInit(void);
00103 extern void ADCInit(void);
00104 extern void Timer0Init(void);
00105 extern void PortsInit(void);
00106 extern void MotorSetDutyCycle(U16 duty);
00107 extern void SpeedMeasurement(void);
00108
00109
00110 #endif