TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: dragondgold en 02 de Septiembre de 2011, 10:44:53
-
Hola, estoy en el intento de hacer un osciloscopio con un dsPIC33F en C30. Para ello configuro el ADC a 1.1Mbps y que genere una interrupción por cada 10 muestras completas. Cada vez que entro en la interrupción la idea es tomar todas las muestras e ir almacenándolas en un buffer y luego al sali de la interrupción ir transmitiéndolo.
El problema es que el buffer es de alrededor de 1000 bytes y no lo necesito luego al salir de la función esta que hace de osciloscopio porque también tengo otras funciones que hacen cosas totalmente diferentes y el buffer queda como variable global ocupando memoria.
Mi pregunta es si es posible crear un buffer tipo local y que pueda ser leído en la interrupción para que al salir de la función no ocupe la RAM evitando el uso de otra variable para puntero que es la única solución que se me ocurre.
Sé que lo ideal sería usar el DMA que puede almacenar hasta 128 bytes pero no se si la velocidad con la que transmito luego el buffer por USART a 115K será suficiente para evitar que se me llene.
Saludos !!
-
puedes usar la funcion malloc y free, recuerdo haber escuchado que para los pic18 se podia usar, creo que por encima de los 18 seguramente si se pueda, esta funcion esta en stdlib.h, pero desconozco que compildaor usas, informate sobre estas funciones.