Skip to content

Commit c9db019

Browse files
committed
reduce time in mutex lock
1 parent ead8e3f commit c9db019

File tree

3 files changed

+12
-12
lines changed

3 files changed

+12
-12
lines changed

i2s/audio_i2s.c

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,10 @@ bufring2=bufring1;
5353
cpu_freq = freq;
5454
}
5555

56-
uint32_t buflends[8192];
5756
void audioi2sconstuff2() {
5857
uint32_t divider = (cpu_freq * 2 / 48000) - ((bufring2->len - 16)/2);
5958
buflends[bufring2->index1] = divider;
59+
// buflends[bufring2->index1] = divider;
6060
pio_sm_set_clkdiv_int_frac(audio_pio, shared_state.pio_sm, divider >> 8u, divider & 0xffu);
6161
}
6262

@@ -149,7 +149,10 @@ static void update_pio_frequency(uint32_t sample_freq) {
149149
}
150150

151151
static inline void audio_start_dma_transfer() {
152-
while (bufring2->corelock == 1) {tight_loop_contents();}
152+
dma_channel_config c = dma_get_channel_config(shared_state.dma_channel);
153+
channel_config_set_read_increment(&c, true);
154+
dma_channel_set_config(shared_state.dma_channel, &c, false);
155+
//while (bufring2->corelock == 1) {tight_loop_contents();}
153156
mutex_enter_blocking(&bufring2->corelock2);
154157
//bufring2->corelock = 2;
155158
if (bufring2->len < 2) {
@@ -164,17 +167,13 @@ irq_set_enabled(DMA_IRQ_0 + PICO_AUDIO_I2S_DMA_IRQ, true);
164167
pio_sm_set_enabled(audio_pio, shared_state.pio_sm, true);
165168
*/
166169
static uint32_t zero;
167-
dma_channel_config c = dma_get_channel_config(shared_state.dma_channel);
168170
channel_config_set_read_increment(&c, false);
169171
dma_channel_set_config(shared_state.dma_channel, &c, false);
170172
dma_channel_transfer_from_buffer_now(shared_state.dma_channel, &zero, 2);
171173
return;
172174
}
173-
dma_channel_config c = dma_get_channel_config(shared_state.dma_channel);
174-
channel_config_set_read_increment(&c, true);
175-
dma_channel_set_config(shared_state.dma_channel, &c, false);
176175
dma_channel_transfer_from_buffer_now(shared_state.dma_channel, bufring2->buf+bufring2->index1, 2);
177-
buflends[bufring2->index1+1] = bufring2->len;
176+
// buflends[bufring2->index1+1] = bufring2->len;
178177
bufring2->len = bufring2->len - 2;
179178
bufring2->index1 = (bufring2->index1 + 2) % (1024-32);
180179
//bufring2->corelock = 0;
@@ -191,7 +190,7 @@ mutex_enter_blocking(&bufring4->corelock2);
191190
channel_config_set_write_increment(&c, true);
192191
dma_channel_set_config(shared_state2.dma_channel, &c, false);
193192
dma_channel_transfer_to_buffer_now(shared_state2.dma_channel, bufring4->buf+bufring4->index1, 2);
194-
buflends[bufring4->index1+1] = bufring4->len;
193+
// buflends[bufring4->index1+1] = bufring4->len;
195194
bufring4->len = bufring4->len + 2;
196195
bufring4->index = (bufring4->index + 2) % (1024-32);
197196
//bufring4->corelock = 0;

i2s/include/pico/audio_i2s.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ int32_t buf[1024];
112112
int len;
113113
int index;
114114
int index1;
115-
int corelock;
115+
//int corelock;
116116
mutex_t corelock2;
117117
} bufring_t;
118118
void audioi2sconstuff(bufring_t *bufring1, uint32_t freq);

main.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -802,17 +802,18 @@ static void __not_in_flash_func(_as_audio_packet)(struct usb_endpoint *ep) { //
802802
}
803803
#endif
804804

805+
for (int i = 0; i < count * 2; i++)
806+
buf0[i] = buf0[i] << HEADROOM;
805807
// while (bufring1.len > 1024-32-2-(count * 2)) {tight_loop_contents();}
806808
mutex_enter_blocking(&bufring1.corelock2);
807809
//while (bufring1.corelock == 2) {tight_loop_contents();}
808810
//bufring1.corelock = 1; // 20us
809811
audioi2sconstuff2();
810812
int curin = bufring1.index;
811813
for (int i = 0; i < count * 2; i++) {
812-
bufring1.buf[curin] = buf0[i] << HEADROOM;
813-
if (curin < 32) {
814+
bufring1.buf[curin] = buf0[i];
815+
if (curin < 32)
814816
bufring1.buf[curin+1024-32] = bufring1.buf[curin];
815-
}
816817
curin++;
817818
curin %= 1024-32;
818819
}

0 commit comments

Comments
 (0)