bldc.h File Reference

#include "config.h"

Include dependency graph for bldc.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Defines

#define ADC_MAX   0x1EB
#define ADC_PRESCALER   (1 << ADPS2)
#define ADC_TS_FREERUNNING   ((0 << ADTS2) | (0 << ADTS1) | (0 << ADTS0))
#define ADC_TWI   0x3FF
#define ADMUX_PA1   ((1 << MUX0))
#define ADMUX_PA2   ((2 << MUX0))
#define ADMUX_PA7   ((1 << MUX2) | (1 << MUX1))
#define CS1_FWD   ((1 << VL) | (1 << WH))
#define CS1_REV   ((1 << WL) | (1 << VH))
#define CS2_FWD   ((1 << VL) | (1 << UH))
#define CS2_REV   ((1 << WL) | (1 << UH))
#define CS3_FWD   ((1 << WL) | (1 << UH))
#define CS3_REV   ((1 << VL) | (1 << UH))
#define CS4_FWD   ((1 << WL) | (1 << VH))
#define CS4_REV   ((1 << VL) | (1 << WH))
#define CS5_FWD   ((1 << UL) | (1 << VH))
#define CS5_REV   ((1 << UL) | (1 << WH))
#define CS6_FWD   ((1 << UL) | (1 << WH))
#define CS6_REV   ((1 << UL) | (1 << VH))
#define GPIOR0_ADDR   0x2a
#define K_SPEED   34152
#define PWM_TOP_VALUE   0x3ff
#define UH   PB1
#define UL   PB0
#define VH   PB3
#define VL   PB2
#define WH   PB5
#define WL   PB4

Functions

void ADCInit (void)
void Commutate (void)
void HallSensorInit (void)
void MotorSetDutyCycle (U16 duty)
void PLLInit (void)
void PortsInit (void)
void PWMInit (void)
void SpeedMeasurement (void)
void Timer0Init (void)

Variables

 commTableForward [8]
 commTableReverse [8]


Define Documentation

#define ADC_MAX   0x1EB

Definition at line 81 of file bldc.h.

Referenced by ADCISR().

#define ADC_PRESCALER   (1 << ADPS2)

Definition at line 74 of file bldc.h.

Referenced by ADCInit().

#define ADC_TS_FREERUNNING   ((0 << ADTS2) | (0 << ADTS1) | (0 << ADTS0))

Definition at line 77 of file bldc.h.

Referenced by ADCInit().

#define ADC_TWI   0x3FF

Definition at line 82 of file bldc.h.

Referenced by ADCISR().

#define ADMUX_PA1   ((1 << MUX0))

Definition at line 70 of file bldc.h.

#define ADMUX_PA2   ((2 << MUX0))

Definition at line 71 of file bldc.h.

Referenced by ADCInit().

#define ADMUX_PA7   ((1 << MUX2) | (1 << MUX1))

Definition at line 69 of file bldc.h.

#define CS1_FWD   ((1 << VL) | (1 << WH))

Definition at line 16 of file bldc.h.

#define CS1_REV   ((1 << WL) | (1 << VH))

Definition at line 24 of file bldc.h.

#define CS2_FWD   ((1 << VL) | (1 << UH))

Definition at line 17 of file bldc.h.

#define CS2_REV   ((1 << WL) | (1 << UH))

Definition at line 25 of file bldc.h.

#define CS3_FWD   ((1 << WL) | (1 << UH))

Definition at line 18 of file bldc.h.

#define CS3_REV   ((1 << VL) | (1 << UH))

Definition at line 26 of file bldc.h.

#define CS4_FWD   ((1 << WL) | (1 << VH))

Definition at line 19 of file bldc.h.

#define CS4_REV   ((1 << VL) | (1 << WH))

Definition at line 27 of file bldc.h.

#define CS5_FWD   ((1 << UL) | (1 << VH))

Definition at line 20 of file bldc.h.

#define CS5_REV   ((1 << UL) | (1 << WH))

Definition at line 28 of file bldc.h.

#define CS6_FWD   ((1 << UL) | (1 << WH))

Definition at line 21 of file bldc.h.

#define CS6_REV   ((1 << UL) | (1 << VH))

Definition at line 29 of file bldc.h.

#define GPIOR0_ADDR   0x2a

Definition at line 85 of file bldc.h.

#define K_SPEED   34152

Definition at line 91 of file bldc.h.

#define PWM_TOP_VALUE   0x3ff

Definition at line 66 of file bldc.h.

Referenced by PWMInit().

#define UH   PB1

Definition at line 9 of file bldc.h.

#define UL   PB0

Definition at line 8 of file bldc.h.

#define VH   PB3

Definition at line 11 of file bldc.h.

#define VL   PB2

Definition at line 10 of file bldc.h.

#define WH   PB5

Definition at line 13 of file bldc.h.

#define WL   PB4

Definition at line 12 of file bldc.h.


Function Documentation

void ADCInit ( void   ) 

Definition at line 229 of file main.c.

References ADC_PRESCALER, ADC_TS_FREERUNNING, and ADMUX_PA2.

Referenced by main().

00230 {
00231   ADMUX = (0 << REFS1) | (0 << REFS0) | //VCC as voltage reference.
00232           (0 << ADLAR) |                //Right adjusted result.
00233           ADMUX_PA2;                    //ADC channel. MC301 rev B
00234 
00235   ADCSRB = (1 << REFS2) |               //Last reference selection bit.
00236            ADC_TS_FREERUNNING;          //Free running mode.
00237 
00238   ADCSRA = (1 << ADEN) |                //Enable.
00239            (1 << ADSC) |                //Start first conversion.
00240            (1 << ADATE) |               //Auto triggering.
00241            (1 << ADIE) |                //Enable interrupt.
00242            ADC_PRESCALER;
00243 }

void Commutate ( void   ) 

Definition at line 160 of file main.c.

References commTableForward, commTableReverse, motorControlFlags_t::direction, DIRECTION_FORWARD, and hall.

Referenced by HallChangeISR(), and main().

00161 {
00162    uint8_t temp;
00163    //Read hall sensor inputs.
00164     temp = ( PINA & ((1 << PA5) | (1 << PA4) | (1 << PA1)) );
00165     hall = (((temp&0x30)>>3) | (temp&0x02)>>1);
00166 
00167     
00168   //Activate output pattern corresponding to current direction and position.
00169   if (mcFastFlags.direction == DIRECTION_FORWARD) {
00170     TCCR1E = commTableForward[hall];
00171   }
00172   else {
00173     TCCR1E = commTableReverse[hall];
00174   }
00175     
00176 }

void HallSensorInit ( void   ) 

Definition at line 216 of file main.c.

Referenced by main().

00217 {
00218   //Enable pin change interrupts for PA1-PA4-PA5 (PCINT1-4-5).
00219   PCMSK0 = (1 << PCINT1) | (1 << PCINT4) | (1 << PCINT5);
00220 
00221   //Zero out PCMSK1, since it is initialized to a non-zero value.
00222   PCMSK1 = 1;
00223 
00224   //Enable pin change interrupt 1.
00225   GIMSK |= (1 << PCIE1);
00226 }

void MotorSetDutyCycle ( U16  duty  ) 

Definition at line 260 of file main.c.

Referenced by ADCISR(), and main().

00261 {
00262 TC1_WRITE_10_BIT_REGISTER(OCR1A, duty);
00263 }

void PLLInit ( void   ) 

Definition at line 192 of file main.c.

Referenced by main().

00193 {
00194   //Enable fast peripheral clock (64MHz for Timer1).
00195   PLLCSR = (1 << PCKE);
00196 }

void PortsInit ( void   ) 

Definition at line 246 of file main.c.

Referenced by main().

00247 {
00248   //Set PWM pins as output. (PWM output is still controlled through TCCR1E register.)
00249   DDRB = (1 << PB0) | (1 << PB1) | (1 << PB2) | (1 << PB3) | (1 << PB4) | (1 << PB5)| (1 << PB6) ;
00250 }

void PWMInit ( void   ) 

Definition at line 199 of file main.c.

References PWM_TOP_VALUE, and TC1_WRITE_10_BIT_REGISTER.

Referenced by main().

00200 {
00201  
00202   //Clear on up-counting.
00203   TCCR1A = (1 << COM1A1) | (0 << COM1A0) | (1 << PWM1A);
00204 
00205   //Set WGM to PWM6, dual slope mode.
00206   TCCR1D = (1 << WGM11) | (1 << WGM10);
00207 
00208   //Set top value.
00209   TC1_WRITE_10_BIT_REGISTER(OCR1C, PWM_TOP_VALUE);
00210 
00211   //Run timer at full speed.
00212   TCCR1B = (1 << CS10);
00213 }

void SpeedMeasurement ( void   ) 

Definition at line 179 of file main.c.

References FALSE, and is_speed_to_read.

Referenced by main().

00180 {
00181 //   if (timer_value == 0) 
00182   //  {timer_value += 1 ;} // warning DIV by 0
00183 /*
00184     new_measured_speed = K_SPEED / timer_value;
00185     if(new_measured_speed > 255) new_measured_speed = 255; // Variable saturation
00186     SpeedMeasure=(U16)new_measured_speed;
00187 */    
00188     is_speed_to_read=FALSE;
00189   
00190 }

void Timer0Init ( void   ) 

Definition at line 344 of file main.c.

References TC0_WRITE_TCNT0.

Referenced by main().

00345 {
00346   TCCR0B = ((1<<CS02)|(0<<CS01) |(1<<CS00)); // Timer clock =
00347                                 // system clock /
00348                                 // 128 : 16µs
00349   TIFR |= (1<<TOV0); //Clear TOV0 / clear
00350 
00351   TC0_WRITE_TCNT0(0x0);
00352   //pending interrupts
00353   TIMSK |= (1<<TOIE0); //Enable Timer0
00354   //Overflow Interrupt
00355 }


Variable Documentation

Initial value:

 {
  0x00,     
  CS6_FWD,  
  CS2_FWD,  
  CS1_FWD,  
  CS4_FWD,  
  CS5_FWD,  
  CS3_FWD,  
  0x00      
}

Definition at line 37 of file bldc.h.

Referenced by Commutate().

Initial value:

 {
   0x00,     
  CS2_REV,  
  CS6_REV,  
  CS1_REV,  
  CS4_REV,  
  CS3_REV,  
  CS5_REV,  
  0x00      
}

Definition at line 54 of file bldc.h.

Referenced by Commutate().


Generated on Wed Oct 22 16:03:25 2008 for AVR496 : Atmel BLDC control on ATAVRMC301 with ATtiny861 by  doxygen 1.5.7.1