#include "config.h"


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 ADC_TS_FREERUNNING ((0 << ADTS2) | (0 << ADTS1) | (0 << ADTS0)) |
| 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 | ) |
| void PortsInit | ( | void | ) |
| 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 }
1.5.7.1