diff modulator.c @ 2:0d653f60dec8

Actually get data moving out. Previous shape info caused a hard fault.
author Daniel O'Connor <darius@dons.net.au>
date Mon, 29 Mar 2021 17:39:00 +1030
parents a55e39064a71
children b10097c3383d
line wrap: on
line diff
--- a/modulator.c	Mon Mar 29 13:54:55 2021 +1030
+++ b/modulator.c	Mon Mar 29 17:39:00 2021 +1030
@@ -23,11 +23,16 @@
 
 #include "dac.pio.h"
 
+#if 0
 extern void* shaped_trap_dat_size;
 extern void* shaped_trap_dat_start;
 
 extern void* sgauss_dat_size;
 extern void* sgauss_dat_start;
+#endif
+
+uint8_t shaped_trap_dat_start[] = { 0, 1, 2, 4, 8, 16, 32, 64, 128, 0, 0, 0, 0, 0, 0, 0 };
+//uint8_t shaped_trap_dat_start[] = { 0, 1, 2, 3, 1, 2, 0, 3, 1, 1, 2, 3, 0, 1, 2, 3 };
 
 int
 main() {
@@ -44,22 +49,18 @@
     PIO pio = pio0;
     uint offset = pio_add_program(pio, &dac_program);
     uint sm = pio_claim_unused_sm(pio, true);
-    dac_program_init(pio, sm, offset, 4);
+    // XXX: I would prefer starting at GPIO16 but in that case the top 2
+    // bits don't seem to work
+    dac_program_init(pio, sm, offset, 14);
 
     while (true) {
-	for (i = 0; i < (int)&shaped_trap_dat_size; i++) {
-	    if (*(uint8_t *)shaped_trap_dat_start)
-		gpio_put(LED_PIN, 1);
-	    else
-		gpio_put(LED_PIN, 0);
-	    sleep_ms(250);
+	for (int i = 0; i < sizeof(shaped_trap_dat_start) / 4; i++) {
+	    pio_sm_put_blocking(pio, sm, ((uint32_t *)shaped_trap_dat_start)[i]);
 	}
-	for (i = 0; i < (int)&sgauss_dat_size; i++) {
-	    if (*(uint8_t *)sgauss_dat_start)
-		gpio_put(LED_PIN, 1);
-	    else
-		gpio_put(LED_PIN, 0);
-	    sleep_ms(250);
-	}
+#if 0
+	gpio_put(LED_PIN, 1);
+	sleep_ms(100);
+	gpio_put(LED_PIN, 0);
+#endif
     }
 }