TODOPIC
Microcontroladores PIC => dsPIC => Mensaje iniciado por: Goodfrey en 03 de Octubre de 2012, 13:46:29
-
Buenos Días.
Saludos desde Venezuela, estoy haciendo un proyecto que incluye las variables antes mencionadas en el titulo del proyecto, la misma funciona de la siguiente manera:
Se Necesita adquirir del adc las lecturas correspondiente al analisis de la voz humana, estas necesitan se almacenada en una memoria MMC/SD para su posterior envio de forma inalambrica a travez del modulo UART hacia otro dispositivo, En Forma general utilizando MikroC_DSPIC estoy leyendo, almacenado y enviando de forma normal, el dsPIC esta trabajando a una velocidad de 80 MHZ utilizando el PLL interno por 8 y un cristal externo de 10 HMZ.
El Inconveniente que tengo es a la hora de ponerlo a funcinar a la maxima velocidad tanto del ADC como de la memoria MMC/SD, debido a la complegidad de los codigos de este compilador no se cuanto tiempo tardo en almacenar el dato en memoria y no puedo determinar cuanto puede ser la velocidad de muestreo de la misma.
Ahora mi duda es la siguiente: Planteo hacer que el Timer1 por medio de una interrupcion de temporizador la misma me active el adc y hacer el calculo del tiempo de muestreo por medio de este modulo, ahora en comparacion con el datasheet del PIC16F877 donde te da la formula para el calculo del temporizador, no logro conseguir dicha formula para el dsPIC30F4013, en la paguina de MikroC hay un ejemplo el cual coloco a continuacion.
¿Cómo se calcula el período de solicitudes de interrupción? Deje que el reloj interno se establece en 10MHz. El plazo es de 100 ns. Puesto que el reloj se divide por 256 (prescaler reduce el reloj 1:256) para formar el reloj temporizador, follws que el reloj temporizador es el 100 * 256 = 25600ns es decir 25.6μs. En cada 10000 relojes una interrupción se requestd, es decir, en cada 256ms o aproximadamente 4 veces por segundo.
T = 10000 * 25.6μs = 256ms ~ ¼ s.
Alguien sabe o puede orientarme como saco dicha formula del timer?
Espero su respuesta, la necesito con urgencia...
-
Utilizar un timer para muestrear es lo más adecuado, ya que la frecuencia de muestreo debe ser estable y bien conocida ;-) Cualquier cosa que necesites saber del microcontrolador lo encontraras en el datasheet o manuales de referencia, allí esta detallado como funciona: http://ww1.microchip.com/downloads/en/devicedoc/70138c.pdf
Luego para medir cuanto ocupa la librería en guardar datos en la memoria SD, podes utilizar un led encendiéndolo al comenzar y apagandolo al terminar, y mediante un osciloscopio medir el ancho del pulso.
Saludos!
-
Utilizar un timer para muestrear es lo más adecuado, ya que la frecuencia de muestreo debe ser estable y bien conocida ;-) Cualquier cosa que necesites saber del microcontrolador lo encontraras en el datasheet o manuales de referencia, allí esta detallado como funciona: http://ww1.microchip.com/downloads/en/devicedoc/70138c.pdf
Luego para medir cuanto ocupa la librería en guardar datos en la memoria SD, podes utilizar un led encendiéndolo al comenzar y apagandolo al terminar, y mediante un osciloscopio medir el ancho del pulso.
Saludos!
Ok Suky ya habia pensado hacer eso lo del led para verificar el tiempo que tarda en escribir el dato y medir el tiempo por hay pero ahora sigo con mi duda de la formula para calcular el timer y cuanto tengo que ASIGNARLE AL PR1 para que se desborde en el tiempo que yo necesito. por que como digo el pic16F877 TIENE LA SIGUIENTE FORMULA
temp = 4*(1/fosc)*prees*(256-tmr0)
ahora necesito entender como sacar ese calculo para determinar eso por favor.