#include "buttons.h" #include "macro.h" #include "pico/stdlib.h" #include #include #include #include #include #include "const.h" #include "hardware/pwm.h" #include "hardware/adc.h" #include "state.h" #include "daisysp.h" state_t state; void init_all() { stdio_init_all(); puts("Starting PIN initialization"); const uint8_t out_gpio[] = {MUX_S0,MUX_S1,MUX_S2, STATUS_LED}; const uint8_t in_gpio[] = {VCO_BUTTON,QUANT_BUTTON,AMEN_BUTTON}; const uint8_t adc_gpio[] = {MUX0,MUX1}; gpio_set_function(AUDIO_OUT, GPIO_FUNC_PWM); for (uint8_t i=0; i < ARRAY_LENGTH(out_gpio); i++) { gpio_init(out_gpio[i]); gpio_set_dir(out_gpio[i], true); } for (uint8_t i=0; i < ARRAY_LENGTH(in_gpio); i++) { gpio_init(in_gpio[i]); gpio_set_dir(in_gpio[i], false); } adc_init(); for (uint8_t i=0; i < ARRAY_LENGTH(adc_gpio); i++) { adc_gpio_init(adc_gpio[i]); adc_select_input(i); } gpio_pull_down(VCO_BUTTON); gpio_set_irq_enabled_with_callback(VCO_BUTTON, GPIO_IRQ_EDGE_RISE, true, &handle_vco_change); } daisysp::Oscillator osc; __attribute__((noreturn)) int main() { init_all(); osc.Init(SAMPLE_RATE); while (1) { osc.SetFreq(state.vco_freq * 1760); } }