Autor Tema: Variable local visible desde interrupción C30  (Leído 1346 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado dragondgold

  • PIC16
  • ***
  • Mensajes: 103
    • Tmax & Gwolf Microcontrollers
Variable local visible desde interrupción C30
« 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 !!
La conclusión final es que sabemos muy poco y sin embargo, es asombroso lo mucho que conocemos. Y más asombroso todavía es que un conocimiento tan pequeño nos pueda dar tanto poder

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Variable local visible desde interrupción C30
« Respuesta #1 en: 04 de Septiembre de 2011, 13:55:51 »
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.