void tone(uint8_t pin, uint16_t frequency, uint32_t duration) { uint32_t count, load; volatile uint32_t *config; init_tone(); if (pin >= CORE_NUM_DIGITAL) return; if (duration) { count = (frequency * duration / 1000) * 2; } else { count = 0xFFFFFFFF; } load = (F_BUS / 2) / frequency; config = portConfigRegister(pin); __disable_irq(); if (pin != tone_pin) { if (tone_pin < CORE_NUM_DIGITAL) { tone_reg[0] = 1; // clear pin } tone_pin = pin; tone_reg = portClearRegister(pin); tone_reg[0] = 1; // clear pin tone_reg[384] = 1; // output mode; *config = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); } tone_toggle_count = count; if (PIT_LDVAL3 != load) { PIT_TCTRL3 = 0; PIT_LDVAL3 = load; PIT_TCTRL3 = 3; } __enable_irq(); }
void StompBox::changepar (int npar, int value) { switch (npar) { case 0: setvolume (value); break; case 1: Phigh = value; if( value < 0) highb = ((float) value)/64.0f; if( value > 0) highb = ((float) value)/32.0f; break; case 2: Pmid = value; if( value < 0) midb = ((float) value)/64.0f; if( value > 0) midb = ((float) value)/32.0f; break; case 3: Plow = value; if( value < 0) lowb = ((float) value)/64.0f; if( value > 0) lowb = ((float) value)/32.0f; break; case 4: Pgain = value; gain = dB2rap(50.0f * ((float)value)/127.0f - 50.0f); break; case 5: Pmode = value; init_mode (Pmode); break; }; init_tone (); };
void setup(void) { init_tone(); input_init(); configure_pot(); set_power_led_on(); return; }