diff options
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/rpi-pico-w/src/pio.rs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/examples/rpi-pico-w/src/pio.rs b/examples/rpi-pico-w/src/pio.rs index 8017f4f44..1cefb1734 100644 --- a/examples/rpi-pico-w/src/pio.rs +++ b/examples/rpi-pico-w/src/pio.rs | |||
| @@ -41,6 +41,9 @@ where | |||
| 41 | "in pins, 1 side 1" | 41 | "in pins, 1 side 1" |
| 42 | "jmp y-- lp2 side 0" | 42 | "jmp y-- lp2 side 0" |
| 43 | 43 | ||
| 44 | "wait 1 pin 0 side 0" | ||
| 45 | "irq 0 side 0" | ||
| 46 | |||
| 44 | ".wrap" | 47 | ".wrap" |
| 45 | ); | 48 | ); |
| 46 | 49 | ||
| @@ -106,6 +109,7 @@ where | |||
| 106 | } | 109 | } |
| 107 | 110 | ||
| 108 | pub async fn write(&mut self, write: &[u32]) { | 111 | pub async fn write(&mut self, write: &[u32]) { |
| 112 | self.sm.set_enable(false); | ||
| 109 | let write_bits = write.len() * 32 - 1; | 113 | let write_bits = write.len() * 32 - 1; |
| 110 | let read_bits = 31; | 114 | let read_bits = 31; |
| 111 | 115 | ||
| @@ -124,11 +128,10 @@ where | |||
| 124 | let mut status = 0; | 128 | let mut status = 0; |
| 125 | self.sm.dma_pull(dma, slice::from_mut(&mut status)).await; | 129 | self.sm.dma_pull(dma, slice::from_mut(&mut status)).await; |
| 126 | defmt::trace!("{:#08x}", status); | 130 | defmt::trace!("{:#08x}", status); |
| 127 | |||
| 128 | self.sm.set_enable(false); | ||
| 129 | } | 131 | } |
| 130 | 132 | ||
| 131 | pub async fn cmd_read(&mut self, cmd: u32, read: &mut [u32]) { | 133 | pub async fn cmd_read(&mut self, cmd: u32, read: &mut [u32]) { |
| 134 | self.sm.set_enable(false); | ||
| 132 | let write_bits = 31; | 135 | let write_bits = 31; |
| 133 | let read_bits = read.len() * 32 - 1; | 136 | let read_bits = read.len() * 32 - 1; |
| 134 | 137 | ||
| @@ -144,8 +147,6 @@ where | |||
| 144 | 147 | ||
| 145 | self.sm.dma_push(dma.reborrow(), slice::from_ref(&cmd)).await; | 148 | self.sm.dma_push(dma.reborrow(), slice::from_ref(&cmd)).await; |
| 146 | self.sm.dma_pull(dma, read).await; | 149 | self.sm.dma_pull(dma, read).await; |
| 147 | |||
| 148 | self.sm.set_enable(false); | ||
| 149 | } | 150 | } |
| 150 | } | 151 | } |
| 151 | 152 | ||
| @@ -166,4 +167,9 @@ where | |||
| 166 | self.cmd_read(write, read).await; | 167 | self.cmd_read(write, read).await; |
| 167 | self.cs.set_high(); | 168 | self.cs.set_high(); |
| 168 | } | 169 | } |
| 170 | |||
| 171 | async fn wait_for_event(&mut self) { | ||
| 172 | self.sm.wait_irq(0).await; | ||
| 173 | self.sm.clear_irq(0); | ||
| 174 | } | ||
| 169 | } | 175 | } |
