Problema al compilar

He visto que te has "dedicado sobretodo a la programación de micro" si puedes ayudarme te lo agradecería. Estoy utilizando para mi proyecto final de carrera un pic 16f877 y para programarlo el compilador CCS PCWH 3.222. Llegó un momento en el que me salia el siguiente error: "Out of ROM, A segment or the program is too large" busque en el manual y vi la solución que daba, que consistía en desplazar parte del código a otro banco de memoria mediante la instrucción #SEPARATE. Con esto solucione dicho problema, ahora bien, al tratar de hacer una llamada a una función que se encuentra 'separada' me aparece el siguiente error: "Different levels of indirection" y a este error ya no le he encontrado el modo de solucionarlo. Si me pudiera decir como, o dar alguna idea se lo agradecería.
Respuesta
1
Uy, hace un monton q vi tu pregunta, investigue un poco y luego se me olvido contestarte. Tengo una memoria de pez, lo siento.
Por lo q lei, a veces el compilador utiliza directivas inline automaticamente. Esto significa q lo q tu ves como una llamada a una funcion, es un copy-paste de codigo. Haciendo esto a veces se crean bloques de codigo demasiado grandes. Por eso se utiliza la directiva separate, antes de una funcion impide un inline automatico, forzando la llamada a funcion.
Problema: si abusas de esa directiva, puedes llegar a sobrecargar la pila. Acuérdate de que el stack del pic es de 8 direcciones. Puedes encadenar 8 funciones sin parámetros o con un parámetro, o 4 funciones de 2 parámetros, o 2 funciones de 3 parámetros. Como ves es muy fácil sobrecargar el stack en un pic.
Soluciones. Intenta no sobreutilizar separate, intenta no hacer funciones con más de un parámetro. Intenta no encadenar muchas funciones. Y si tienes que hacerlo obligatoriamente, intenta realizar manualmente un stack de usuario (complejo pero posible)
Espero que solucionaras tu problema sin esperarme. Espero que aunque sea te sirva de algo mi respuesta.
Muchas gracias, con el separate logre solucianar aquel problema... pero gracias... te respuesta me ayuda ya que tengo más claro como funciona todo esto je je.
Gracias, y no te preocupes por la tardanza.. de pez a pez ;-P

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas