snekboard: Add samd21 SPI test function
[fw/altos] / src / snekboard / snekboard.c
index 19f5975cb3cafb586f887d1092dabb84b702948d..09581affa4be5dc76833cfc3c4edc981439e4d1a 100644 (file)
 #include <ao.h>
 #include <ao_led.h>
 
+#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 void
+ao_spi_test(void)
+{
+       ao_spi_get_bit(SNEK_CS_PORT, SNEK_CS_PIN, SNEK_SPI_INDEX, SNEK_SPI_SPEED);
+       ao_spi_send("hello", 5, 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 },
+};
+
 int main(void)
 {
        ao_led_init();
        ao_clock_init();
        ao_task_init();
        ao_timer_init();
+       ao_spi_init();
        ao_usb_init();
+       ao_cmd_register(ao_spi_cmds);
+       ao_spi_init_cs(&samd21_port_a, 1 << 11); /* analog 8 for CS */
        ao_cmd_init();
        ao_start_scheduler();
        return 0;