PICAXE temporizador de intervalo muy corto (para reproducir sonido)

0

Tengo un PICAXE (08M2) que estoy usando para reproducir sonido, usando el algoritmo Roman Roman mencionado en la respuesta a esta pregunta . Mi pregunta, entonces, es la siguiente: ¿Cómo puedo hacer que el PICAXE espere el intervalo de tiempo adecuado (1 / velocidad de bits = 1/44100 = 22.6 μS) (creo) entre cada bit? Que yo sepa, el comando WAIT solo baja a un milisegundo, mucho más de lo que necesito. Además, estoy cargando los bits de sonido desde un chip I2C EEPROM (con un bus de 440 kHz), así que, ¿cómo factorizo el tiempo que toma cargar cada byte desde allí, quizás en un 4 bytes (32 bits)? ¿buffer? Me parece que cualquier pequeña variación en la sincronización del código daría lugar a que el sonido se distorsione bastante, así que, ¿cómo se compensa esto? Soy (obviamente) bastante nuevo en esto, ¡así que gracias por cualquier información!

    
pregunta Chris

1 respuesta

1

Si desea hacer algo regularmente cada 23 µs, use una interrupción. No dijiste qué PIC usa tu placa o cuál es su velocidad de reloj, pero incluso si es un reloj viejo de 16F a 20 MHz, aún puede hacer 5 MIPS, o 5 instrucciones por microcreado. Eso dejaría 115 instrucciones por cada 23 µs de interrupción. Eso podría ser difícil si tiene que ir a la EEPROM cada vez.

Si este algoritmo solo necesita un bit individual cada 23 µs, entonces tal vez un bucle en primer plano pueda leer la EEPROM de un byte a la vez en un FIFO y la rutina de interrupción solo procese un solo bit cada vez con una recuperación FIFO cada 8 interrupciones . Eso debería ser bastante factible en menos de 100 instrucciones.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas