|
|
|
|
@ -33,6 +33,7 @@ void timer5_init()
|
|
|
|
|
OCR5C = 500;
|
|
|
|
|
|
|
|
|
|
DDRL |= 1 << 5;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void do_spule(){
|
|
|
|
|
@ -57,10 +58,6 @@ void do_spule(){
|
|
|
|
|
else{
|
|
|
|
|
/* speed regulation - keep taenzer at 10% */
|
|
|
|
|
int32_t tmp = (100 - (int32_t)taenzer_state.pos/1000)*10;
|
|
|
|
|
|
|
|
|
|
if(tmp < -75000/abzug_speed/2)
|
|
|
|
|
tmp = -75000/abzug_speed/2;
|
|
|
|
|
|
|
|
|
|
ICR5=75000/abzug_speed + tmp;
|
|
|
|
|
OCR5C = ICR5/2;
|
|
|
|
|
|
|
|
|
|
@ -78,8 +75,6 @@ void do_spule(){
|
|
|
|
|
|
|
|
|
|
if (read_Input(BTN_INIT, RISING)) {
|
|
|
|
|
spule_trans_homed = 0;
|
|
|
|
|
taenzer_state.homed = 0;
|
|
|
|
|
taenzer_state.active = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -87,52 +82,23 @@ void do_spule(){
|
|
|
|
|
ISR(TIMER1_OVF_vect) {
|
|
|
|
|
if(ioHelperReadBit(outStates, MOTOR_TRANS_DIR)){
|
|
|
|
|
spule_trans_pos -= 1;
|
|
|
|
|
if(spule_trans_homed && spule_trans_pos == 84999){
|
|
|
|
|
TCCR1B &= ~(_BV(CS11));
|
|
|
|
|
TIMSK5 |= 1<<TOIE5;
|
|
|
|
|
printf("nachlauf aufbauen");
|
|
|
|
|
}
|
|
|
|
|
if(spule_trans_homed && spule_trans_pos == 4*3540){
|
|
|
|
|
ICR1 = 0.5*(ICR5/0.7);
|
|
|
|
|
OCR1A = ICR1/2;
|
|
|
|
|
printf("nachlauf abbauen");
|
|
|
|
|
}
|
|
|
|
|
if(spule_trans_homed && spule_trans_pos <= 0){
|
|
|
|
|
ICR1 = ICR5/0.7;
|
|
|
|
|
OCR1A = ICR1/2;
|
|
|
|
|
//TCCR1B &= ~(_BV(CS11));
|
|
|
|
|
//TIMSK5 |= 1<<TOIE5;
|
|
|
|
|
printf("front stop\n");
|
|
|
|
|
set_Output(MOTOR_TRANS_DIR, 0); // direction: back
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
spule_trans_pos += 1;
|
|
|
|
|
if(spule_trans_homed && spule_trans_pos == 3540){
|
|
|
|
|
TCCR1B &= ~(_BV(CS11));
|
|
|
|
|
TIMSK5 |= 1<<TOIE5;
|
|
|
|
|
printf("nachlauf aufbauen");
|
|
|
|
|
}
|
|
|
|
|
if(spule_trans_homed && spule_trans_pos == (85000 - (4*3540)) ){
|
|
|
|
|
ICR1 = 0.5*(ICR5/0.7);
|
|
|
|
|
OCR1A = ICR1/2;
|
|
|
|
|
printf("nachlauf abbauen");
|
|
|
|
|
}
|
|
|
|
|
if(spule_trans_pos >= 85000){
|
|
|
|
|
ICR1 = ICR5/0.7;
|
|
|
|
|
OCR1A = ICR1/2;
|
|
|
|
|
//TCCR1B &= ~(_BV(CS11));
|
|
|
|
|
//TIMSK5 |= 1<<TOIE5;
|
|
|
|
|
printf("end stop\n");
|
|
|
|
|
set_Output(MOTOR_TRANS_DIR, 1); // direction: front
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ISR(TIMER5_OVF_vect) {
|
|
|
|
|
static int16_t cnt = 0;
|
|
|
|
|
cnt++;
|
|
|
|
|
|
|
|
|
|
if(cnt >= 2*4000){
|
|
|
|
|
cnt = 0;
|
|
|
|
|
TCCR1B |= _BV(CS11); //TURN ON
|
|
|
|
|
TIMSK5 &= ~(1<<TOIE5);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|