int main() { uint8_t dir = CW; initPorts(); initADC(); // accel section halfStep(dir); _delay_us(10000); halfStep(dir); _delay_us(6000); halfStep(dir); _delay_us(4667); halfStep(dir); _delay_us(3949); while (1) { stepperVal = MOTORPORT; switch (stepperVal) { case 1: ADMUX = (ADMUX & 0b1110000) | 0x1; adctested = 1; break; case 2: ADMUX = (ADMUX & 0b1110000) | 0x2; adctested = 1; break; case 4: ADMUX = (ADMUX & 0b1110000) | 0x3; adctested = 1; break; case 8: ADMUX = (ADMUX & 0b1110000) | 0x0; adctested = 1; break; default: ADMUX = (ADMUX & 0b1110000) | 0x31; // GND adctested = 0; } if (adctested) { // trigger ADC sample ADCSRA |= _BV(ADSC); // poll delay until sample done loop_until_bit_is_clear( ADCSRA, ADSC ); DEBUGPORT = ADCH; } halfStep(dir); _delay_us(3500); } // main loop }
/*********************************************************** * Digital I/O f?r Motorensteuerung werden als Output * definiert. * @param Pointer auf Motor * @return void ***********************************************************/ void initStepper(stepper_t *aStepper) { pinMode(aStepper->statusPin, OUTPUT); pinMode(aStepper->modePin, OUTPUT); pinMode(aStepper->directionPin, OUTPUT); pinMode(aStepper->clockPin, OUTPUT); digitalWrite(aStepper->clockPin, HIGH); switch (aStepper->stepperStatus){ case DISABLED: disableStepper(aStepper); break; case ENABLED: enableStepper(aStepper); break; case RUN: enableStepper(aStepper); break; } switch (aStepper->stepperMode){ case FULL: fullStep(aStepper); break; case HALF: halfStep(aStepper); break; } switch (aStepper->direction){ case FORWARD: forward(aStepper); break; case BACKWARD: backward(aStepper); break; } }