示例#1
0
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();
}
示例#2
0
文件: StompBox.C 项目: NY-tram/rkrlv2
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 ();
};
示例#3
0
void setup(void) {
    init_tone();
    input_init();
    configure_pot();

    set_power_led_on();

    return;
}