Problemas de constantes en mikroC AVR

Estoy trabajando con un display grafico 128x64 y un ATmega328 en MikroC, y estoy teniendo problemas con una tabla donde almaceno los caracteres, el problema esta en que si esta tabla definida como una const char, si supera los 4k el compilador compila pero no puedo simular nada y al cargarlo en el micro no funciona, si la constante es menor que 4k, todo funciona bien.
Probe varias versiones de mikroC y de dividir en varias constantes la tabla y nada, el problema surge superando los 4k aprox.



Si a alguien le sucedio y lo pudo solucionar seria de mucha ayuda.
 
Última edición:
no uso ese compilador, pero no será porque es demo? será que requiere registración para ser full?

En el AVR-GCC, con ese tipo de programas, el patron del lcd, se suele guardar en la mísma flash donde está el programa, la que se accede con punteros, nunca tuve ese problema....
 
Supuestamente esta activado a full no aparece la leyenda de demo, pero solo sucede con esta constante superior a 4k, el avr_gcc es gratuito ? es el AVRstudio?
 
sip, es 100% gratuito, tenes que ponerle alguna ide encima, como codeblock o eclipse, tambien se deja usar desde la línea de comando.
Pero mejor que esto es el Atmel Studio, que emplea al avr-gcc, es el programa que te daba Atmel, ahora Microchip...
 
Solucionado, (solo con ejemplos falta integrarlo al desarrollo), la solucion la encontre instalando avrstudio 5.1 para probar si la falla era mia o de mikroc, al compilar el ejemplo con una constante definida de la siguiente forma
const
short ConstantArray[] = {1,2,3}; y okupando unos 4k avrstudio me tiraba que la memoria de datos estaba 203% ocupada.
En base a esto ( lo siguiente es solo estimaciones mias espero alguien mas calificado lo confirme ) los compiladores C tanto avrstudio/mikroc reservan un espacio en memoria de programa un area especifica de dato ( constantes y valores propios del compilador ) que calculo en el caso de avrstudio seran de 2k (el micro usado tiene 32k ) con lo cual mi constante de 4k no entraba.
Para solucionar esto segun el compilador usado hay varias directivas con las cuales ubicas la constante especificamente en memoria de programa #rom, code, _flash, en el caso de mikroc hay que colocar al final de la constante la palabra absolute y la direccion donde ubicarla con el riesgo de superpones memoria utilizada para otras cosas. La constante quedaria definida por

const short ConstantArray[] = {1,2,3,,,,,,} absolute 0x2000;

Consultando el listado del compilador se ve donde queda ubicada la Const.
Si alguien puede aportar algo mejor para todos, estimo que en MikroC para PIC debera ser similar, gracias a todos por colaborar.
 
Hola
Solucionado, (solo con ejemplos falta integrarlo al desarrollo), la solucion la encontre instalando avrstudio 5.1 para probar si la falla era mia o de mikroc, al compilar el ejemplo con una constante definida de la siguiente forma
const
short ConstantArray[] = {1,2,3}; y okupando unos 4k avrstudio me tiraba que la memoria de datos estaba 203% ocupada.
En base a esto ( lo siguiente es solo estimaciones mias espero alguien mas calificado lo confirme ) los compiladores C tanto avrstudio/mikroc reservan un espacio en memoria de programa un area especifica de dato ( constantes y valores propios del compilador ) que calculo en el caso de avrstudio seran de 2k (el micro usado tiene 32k ) con lo cual mi constante de 4k no entraba.
Para solucionar esto segun el compilador usado hay varias directivas con las cuales ubicas la constante especificamente en memoria de programa #rom, code, _flash, en el caso de mikroc hay que colocar al final de la constante la palabra absolute y la direccion donde ubicarla con el riesgo de superpones memoria utilizada para otras cosas. La constante quedaria definida por

const short ConstantArray[] = {1,2,3,,,,,,} absolute 0x2000;

Consultando el listado del compilador se ve donde queda ubicada la Const.
Si alguien puede aportar algo mejor para todos, estimo que en MikroC para PIC debera ser similar, gracias a todos por colaborar.

La verdad que no entiendo porque usan otras plataformas de compilacion ., que no sea las oficiales (100% gratuitas y sin engaño)​
El avrstudio 7 (y algo) ., es el compilador mas avanzado de todos​
Si hubieras publicado el codigo o compilacion que te da error ., yo te hubiera dicho cual es el problrma desde el primer mensaje​
Aprendan a usar primero la oficial ., despues las otras​
Lo que te paso ., es que te falto la optimizacion de codigo (el icono con forma de " caracol " ., en la interfaz de compilador)​
Es donde pones el micro usado ., la frecuencia del cristal ., las carpetas de salida ., el directorio de trabajo ., ETC​
Por defecto al instalarlo queda en -O0 ., y la mejor es -Os​
Encuanto a la memoria que reserva ., eso depende., el mismo avr estudio te lo dice ( cuando compila el simulador)​
Y es debajo de donde te indico el porcentaje de memoria usada ( con F11 ., "traceas" como se moveria el programa en el micro)​
Talvez tendrias que usar un avr con mas capacidad​
 
Última edición:
Entiendo perfectamente lo que expresas, la realidad siempre es mas complicada, arranque hace mucho con esto con 89s8051 luego con PIC y AVR ( cuando no disponia de C ) y asi en el tiempo, y me fui aburguesando con el uso de ciertos programas por distintos motivo con los cuales me encuentro mas comodo y me resulta el 90% de las cosas muy faciles y rapidas sobre todo, hoy en dia mi tiempo para el aprendizaje es escaso ojala pudiese...... va ya aburri, gracias a todos igual.
 
Hola
Entiendo perfectamente lo que expresas, la realidad siempre es mas complicada, arranque hace mucho con esto con 89s8051 luego con PIC y AVR ( cuando no disponia de C ) y asi en el tiempo, y me fui aburguesando con el uso de ciertos programas por distintos motivo con los cuales me encuentro mas comodo y me resulta el 90% de las cosas muy faciles y rapidas sobre todo, hoy en dia mi tiempo para el aprendizaje es escaso ojala pudiese...... va ya aburri, gracias a todos igual.
Si es por ASM ., ¡¡¡¡ tambiem esta en el mismo compilador !!! ., al igual que C++ (arduino)​
En fin ., tiene muchisimas cosas mas ., como las TOOL CHAIN ., el DECOMPILER .,(que se usa indicativamente para encontrar los errores)​
Bueno espero que te sirva y tengas suerte​
:apreton: :apreton:
 
Atrás
Arriba