Pic microcontrolador

-3

estoy programando un microcontrolador pic usando mikro c, quiero almacenar una matriz de muestras de 8 bits generadas por audacity (es un software que se usa para generar un archivo de encabezado desde un archivo de audio), tengo un archivo de encabezado y lo copié en un nuevo archivo y guardado como "muestra constante [] = {muestras hexadecimales};" Y lo guardé en el archivo principal. Incluí este archivo de encabezado, pero me estoy enfrentando al error "no hay suficiente espacio en la ROM", por favor, ayúdenme chicos, gracias

    
pregunta user103110

2 respuestas

3

Básicamente, no puedes meter 20 libras de datos en una memoria de 10 libras.

Intente almacenar menos datos o obtenga una memoria más grande.

También observe detenidamente cómo está almacenando exactamente los datos en la memoria del programa del PIC. Estás pensando en esto en términos de "archivos", lo cual no tiene sentido. Para usar los microcontroladores de manera efectiva, tiene que realmente entender lo que está sucediendo en los niveles bajos. Asegúrese de que estas muestras de bytes estén realmente almacenadas en bytes sucesivos de la memoria del programa. También asegúrese de que su compilador no esté imponiendo una restricción de tamaño de memoria arbitraria.

La forma más fácil de asegurarse de que los datos se almacenan de manera efectiva en la memoria del programa con el formato correcto es usar el lenguaje ensamblador para ese módulo. Tenga en cuenta que en un PIC 18 (no dijo qué PIC, por no hablar de qué familia), debe colocar estos datos en una sección CODE_PACK, no en una sección CODE normal.

    
respondido por el Olin Lathrop
2

Usted dijo que declaró el almacenamiento como:

const sample[ ]={hex samples};

No estoy seguro del compilador mikro c, pero la mayoría de los compiladores c almacenarán de forma predeterminada como una matriz de enteros de 16 bits. Como dijo que tiene muestras de 8 bits, debe declarar el almacenamiento como

const unsigned char sample [ ]={hex samples};

Esto debería ocupar la mitad del espacio de memoria.

    
respondido por el Steve G

Lea otras preguntas en las etiquetas