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