void prep_pwm_steps(){ if(pwm_mask == 0){ pwm_steps_len = 0; return; } int pwm_temp_steps_len = 0; uint16_t pwm_temp_steps[17]; uint32_t pwm_temp_masks[17]; int i; for(i=0; i<17; i++){ if((pwm_mask & (1 << i)) != 0 && pwm_values[i] != 0) pwm_temp_steps[pwm_temp_steps_len++] = pwm_values[i]; } pwm_temp_steps[pwm_temp_steps_len++] = pwm_range; pwm_temp_steps_len = pwm_sort_array(pwm_temp_steps, pwm_temp_steps_len) - 1; for(i=0; i<pwm_temp_steps_len; i++){ pwm_temp_masks[i] = pwm_get_mask(pwm_temp_steps[i]); } for(i=pwm_temp_steps_len; i>0; i--){ pwm_temp_steps[i] = pwm_temp_steps[i] - pwm_temp_steps[i-1]; } ETS_FRC1_INTR_DISABLE(); pwm_steps_len = pwm_temp_steps_len; ets_memcpy(pwm_steps, pwm_temp_steps, (pwm_temp_steps_len + 1) * 2); ets_memcpy(pwm_steps_mask, pwm_temp_masks, pwm_temp_steps_len * 4); pwm_multiplier = ESP8266_CLOCK/(pwm_range * pwm_freq); ETS_FRC1_INTR_ENABLE(); }
bool Hardware_Timer::stop() { if (!started) return started; TM1_EDGE_INT_DISABLE(); ETS_FRC1_INTR_DISABLE(); started = false; return started; }
static int gpio_pulse_update(lua_State *L) { pulse_t *pulser = luaL_checkudata(L, 1, "gpio.pulse"); int entry_pos = luaL_checkinteger(L, 2); if (entry_pos < 1 || entry_pos > pulser->entry_count) { return luaL_error(L, "entry number must be in range 1 .. %d", pulser->entry_count); } pulse_entry_t *entry = pulser->entry + entry_pos - 1; pulse_entry_t new_entry = *entry; lua_pushvalue(L, 3); fill_entry_from_table(L, &new_entry); // Now do the update ETS_FRC1_INTR_DISABLE(); *entry = new_entry; ETS_FRC1_INTR_ENABLE(); return 0; }
void ICACHE_FLASH_ATTR PauseHPATimer() { TM1_EDGE_INT_DISABLE(); ETS_FRC1_INTR_DISABLE(); system_timer_reinit(); }
void ICACHE_RAM_ATTR timer1_detachInterrupt() { timer1_user_cb = 0; TEIE &= ~TEIE1;//edge int disable ETS_FRC1_INTR_DISABLE(); }
void timer1_detachInterrupt() { timer1_user_cb = 0; ETS_FRC1_INTR_DISABLE(); }