Merge pull request #395 from bubnikv/MK3
Slight optimization of the fan speed interrupt routine by accessing
This commit is contained in:
commit
a0555f49c4
2 changed files with 11 additions and 2 deletions
Firmware
|
@ -242,6 +242,15 @@ void prepare_arc_move(char isclockwise);
|
||||||
void clamp_to_software_endstops(float target[3]);
|
void clamp_to_software_endstops(float target[3]);
|
||||||
void refresh_cmd_timeout(void);
|
void refresh_cmd_timeout(void);
|
||||||
|
|
||||||
|
// Timer counter, incremented by the 1ms Arduino timer.
|
||||||
|
// The standard Arduino timer() function returns this value atomically
|
||||||
|
// by disabling / enabling interrupts. This is costly, if the interrupts are known
|
||||||
|
// to be disabled.
|
||||||
|
extern volatile unsigned long timer0_millis;
|
||||||
|
// An unsynchronized equivalent to a standard Arduino millis() function.
|
||||||
|
// To be used inside an interrupt routine.
|
||||||
|
FORCE_INLINE unsigned long millis_nc() { return timer0_millis; }
|
||||||
|
|
||||||
#ifdef FAST_PWM_FAN
|
#ifdef FAST_PWM_FAN
|
||||||
void setPwmFrequency(uint8_t pin, int val);
|
void setPwmFrequency(uint8_t pin, int val);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -7443,10 +7443,10 @@ ISR(INT7_vect) {
|
||||||
|
|
||||||
if (fanSpeed < MIN_PRINT_FAN_SPEED) return;
|
if (fanSpeed < MIN_PRINT_FAN_SPEED) return;
|
||||||
if ((1 << 6) & EICRB) { //interrupt was triggered by rising edge
|
if ((1 << 6) & EICRB) { //interrupt was triggered by rising edge
|
||||||
t_fan_rising_edge = millis();
|
t_fan_rising_edge = millis_nc();
|
||||||
}
|
}
|
||||||
else { //interrupt was triggered by falling edge
|
else { //interrupt was triggered by falling edge
|
||||||
if ((millis() - t_fan_rising_edge) >= FAN_PULSE_WIDTH_LIMIT) {//this pulse was from sensor and not from pwm
|
if ((millis_nc() - t_fan_rising_edge) >= FAN_PULSE_WIDTH_LIMIT) {//this pulse was from sensor and not from pwm
|
||||||
fan_edge_counter[1] += 2; //we are currently counting all edges so lets count two edges for one pulse
|
fan_edge_counter[1] += 2; //we are currently counting all edges so lets count two edges for one pulse
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue