hardwarecontrol.c Page 1 of 2 #pragma vector=INT0 90 __interrupt
Transcription
hardwarecontrol.c Page 1 of 2 #pragma vector=INT0 90 __interrupt
hardwarecontrol.c 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 #pragma vector=INT0 __interrupt void motor1_impuls_interrupt(void) { #ifdef USE_MOTOR1_IMP2 if(motor1_can_measure_next_impulse) { motor1_can_measure_next_impulse=false; //Bis wir d #endif motor1_timeout=MOTOR1_MAX_IMPULS_DELAY; //Impulstim __enable_interrupt(); motor1_boot_real_impuls_counter++; //Wird nur #ifdef BOOT_SET_MOTOR1_POSITION_0_SOFT if(bootstep!=BOOT_CHK_M1_RIEMENTEST) { #else if((bootstep!=BOOT_CHK_M1_RIEMENTEST)&&(bootstep!=BOOT_SET_MOTOR1_POSITION_0)) { #endif if((!motor1_mindelay_complete) && (!motor1_mindelay)) { motor1_mindelay=MOTOR1_DELAY_AFTER_FIRST_IMPULS; //Verzoeger } motor1_try_reset=true; if(motor1_status&MOTOR1_status_DIRECTION) { //vorwaerts motor1_ist_position++; if((motor1_ist_position>system_cfg.motor1_impuls_position[2]+8)) { MOTOR_1_ONOFF=MOTOR1_OFF; //Emergency motor1_timeout=0; //Notfallti motor1_abschalt_incremente=motor1_ist_position; turnoff_motor1_request=true; } if(motor1_ist_position>=motor1_stop_position) { //Motor abschalten, den Rest erledigt der Nachlauf if(! motor1_mindelay) { MOTOR_1_ONOFF=MOTOR1_OFF; //Motor jet motor1_abschalt_incremente=motor1_ist_position; } turnoff_motor1_request=true; motor1_timeout=0; //Notfallti } } else { //rueckwaerts motor1_ist_position--; if(motor1_ist_position>100) { //eventuelle Uebertraege abfangen motor1_ist_position=0; } Page 1 of 2 hardwarecontrol.c 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 if(motor1_ist_position<=motor1_stop_position) { //Motor abschalten, den Rest erledigt der Nachlauf if(! motor1_mindelay) { MOTOR_1_ONOFF=MOTOR1_OFF; motor1_abschalt_incremente=motor1_ist_position; } turnoff_motor1_request=true; motor1_timeout=0; } } } #ifdef USE_MOTOR1_IMP2 } #endif return; } Page 2 of 2 //Motor jet //Notfallti __interrupt voidmotor1_impuls_interrupt ( void) #ifdef USE_MOTOR1_IMP2 Compile rSwitch is off Compiler-Switch is on if ( motor1_can_measure_next_impulse ) FALS E TRUE motor1_can_measure_next_impulse= false Bis wir den naechsten Impulsgeber nicht gesehen haben darf hier nicht mehr gezaehlt werden #endif motor1_timeout =MOTOR1_MAX_IMPULS_DELAY Impulstimeout nachtriggern __enable_interrupt ( ) motor1_boot_real_impuls_counter ++ Wird nur beim Riemenabrisstest benoetigt, ueberlaeufe stoeren nicht #ifdef BOOT_SET_MOTOR1_POSITION_0_SOFT Compil erCompiler-Switch is on Switch is off if ( bootstep !=BOOT_CHK_M1_RIEMENTEST ) FALS E TRUE #else if ( ( bootstep !=BOOT_CHK_M1_RIEMENTEST ) & & ( bootstep !=BOOT_SET_MOTOR1_POSITION_0 ) ) FALS E TRUE #endif if ( ( ! motor1_mindelay_complete ) & & ( ! motor1_mindelay ) ) TRUE FALSE motor1_mindelay =MOTOR1_DELAY_AFTER_ FIRST_IMPULS Verzoegerung nach dem 1. Impuls bis zum Anschalten des Motors, damit kein klemmen auf dem Impulsgeber zustande kommt motor1_try_reset = true if ( motor1_status & MOTOR1_status_DIRECTION ) TRUE FALSE vorwaerts motor1_ist_position ++ if ( ( motor1_ist_position > system_cfg . motor1_impuls_ position [2]+8 ) ) rueckwaerts motor1_ist_position -if ( motor1_ist_position > 100 ) TRUE FALSE eventuelle TRUE FALSE Uebertraege MOTOR_1_ abfangen ONOFF=MOTOR1_ motor1_ist_position OFF =0 Emergency Break! if ( motor1_ist_position < = Motor jetzt motor1_stop_position ) abschalten motor1_timeout =0 FALS Notfalltimeout TRUE E deaktivieren, wenn Motor abschalten, den wir hier sind hat der Rest erledigt der der sich auf jeden fall Nachlauf bewegt if ( ! motor1_ motor1_abschalt_ mindelay ) incremente = motor1_ ist_position FALS turnoff_motor1_ TRUE E request = true MOTOR_1_ if ( motor1_ist_position > = ONOFF=MOT motor1_stop_position ) OR1_OFF Motor jetzt FALS TRUE abschalten E motor1_ Motor abschalten, den abschalt_ Rest erledigt der incremente = Nachlauf motor1_ist_ if ( ! motor1_ position mindelay ) turnoff_motor1_ request = true FALS TRUE motor1_timeout =0 E Notfalltimeout MOTOR_1_ deaktivieren, wen wir ONOFF=MOT hier sind hat der der OR1_OFF sich auf jeden fall Motor jetzt bewegt abschalten motor1_ abschalt_ incremente = motor1_ist_ position turnoff_motor1_ request = true motor1_timeout =0 Notfalltimeout deaktivieren, wen wir hier sind hat der der sich auf jeden fall bewegt #ifdef USE_MOTOR1_IMP2 Compiler-Switch is on Lonly block-end reached return CompilerSwitch is off