snekboard: Add samd21 SPI test function
authorKeith Packard <keithp@keithp.com>
Sat, 5 Nov 2022 22:18:27 +0000 (15:18 -0700)
committerKeith Packard <keithp@keithp.com>
Sat, 5 Nov 2022 22:18:27 +0000 (15:18 -0700)
Just sends 'hello'

Signed-off-by: Keith Packard <keithp@keithp.com>
src/snekboard/Makefile
src/snekboard/ao_pins.h
src/snekboard/snekboard.c

index aacd132b09220618f5cadb83601364d0bab8661f..53a37c682aa06863531bd27cd09ccd4eca95dfea 100644 (file)
@@ -28,7 +28,8 @@ ALTOS_SRC = \
        ao_panic.c \
        ao_timer.c \
        ao_mutex.c \
-       ao_usb_samd21.c
+       ao_usb_samd21.c \
+       ao_spi_samd21.c
 
 PRODUCT=SnekBoard
 PRODUCT_DEF=-DSNEKBOARD
index 01cfed653751ac7583491a723bc131e0fa845341..80b2cb778e8f77bbd97285ec5f8c1173d8a21ca4 100644 (file)
@@ -42,6 +42,6 @@
 #define AO_APBA_PRESCALER      1
 
 #define HAS_SPI_0              1
-#define SPI_0_PA08_PA09_PA10_PA11      1
+#define SPI_0_PA08_PA09_PA10   1
 
 #endif /* _AO_PINS_H_ */
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;