Mercurial > ~darius > hgwebdir.cgi > modulator
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 } }