X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fmetro-m0%2Fmetro-m0.c;fp=src%2Fmetro-m0%2Fmetro-m0.c;h=65a0e05a0dc3156f12a2e51b0a61198a4c94262b;hb=9c556954d25daa6fda6771ca6d011d76b5d17524;hp=1a5d3c609262406aa383637b60b176ed7067a6f7;hpb=7bcde16c96f05595969bceef76905aa2e285c66b;p=fw%2Faltos diff --git a/src/metro-m0/metro-m0.c b/src/metro-m0/metro-m0.c index 1a5d3c60..65a0e05a 100644 --- a/src/metro-m0/metro-m0.c +++ b/src/metro-m0/metro-m0.c @@ -17,31 +17,6 @@ #include #include -#define SNEK_CS_PORT (&samd21_port_a) -#define SNEK_CS_PIN (11) -#define SNEK_SPI_INDEX AO_SPI_0_PA08_PA09_PA10 -#define SNEK_SPI_SPEED ao_spi_speed(1000000) - -static const uint8_t spi_test[] = { - 0xaa, - 0xcc, - 0xff, - 0x00 -}; - -static void -ao_spi_test(void) -{ - ao_spi_get_bit(SNEK_CS_PORT, SNEK_CS_PIN, SNEK_SPI_INDEX, SNEK_SPI_SPEED); - ao_spi_send(spi_test, sizeof(spi_test), SNEK_SPI_INDEX); - ao_spi_put_bit(SNEK_CS_PORT, SNEK_CS_PIN, SNEK_SPI_INDEX); -} - -const struct ao_cmds ao_spi_cmds[] = { - { ao_spi_test, "s \0Send some bytes over spi" }, - { 0, NULL }, -}; - static int pressed; static void @@ -51,24 +26,37 @@ ao_button_callback(void) ao_wakeup(&pressed); } +static void +ao_beep_test(void) +{ + AO_BEEP_TCC->ctrlbset = (SAMD21_TCC_CTRLB_CMD_READSYNC << SAMD21_TCC_CTRLB_CMD); + printf("pressed timer %ld\n", AO_BEEP_TCC->count); + fflush(stdout); + ao_beep_for(AO_BEEP_MID_DEFAULT, AO_MS_TO_TICKS(200)); +} + static void ao_button(void) { - ao_exti_setup(&samd21_port_a, 11, AO_EXTI_MODE_FALLING | AO_EXTI_MODE_PULL_UP, ao_button_callback); - ao_exti_enable(&samd21_port_a, 11); + ao_exti_setup(&samd21_port_a, 10, AO_EXTI_MODE_FALLING | AO_EXTI_MODE_PULL_UP, ao_button_callback); + ao_exti_enable(&samd21_port_a, 10); for (;;) { ao_arch_block_interrupts(); pressed = 0; while (!pressed) ao_sleep(&pressed); ao_arch_release_interrupts(); - printf("pressed\n"); - fflush(stdout); + ao_beep_test(); } } static struct ao_task ao_button_task; +const struct ao_cmds ao_test_cmds[] = { + { ao_beep_test, "b \0beep" }, + { 0, NULL }, +}; + int main(void) { ao_led_init(); @@ -78,12 +66,15 @@ int main(void) ao_dma_init(); ao_exti_init(); ao_spi_init(); + ao_adc_init(); + ao_beep_init(); ao_usb_init(); - ao_cmd_register(ao_spi_cmds); - ao_spi_init_cs(&samd21_port_a, 1 << 11); /* analog 8 for CS */ ao_storage_init(); ao_cmd_init(); + + ao_cmd_register(ao_test_cmds); ao_add_task(&ao_button_task, ao_button, "button"); ao_start_scheduler(); + return 0; }