Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola,
Estoy empezando a usar el C18 para programar en C los PICs de la serie 18F, he empezado por un sencillo programa tipo "Hola Mundo", sin embargo la simulación me devuelve un error bastante extraño:
CORE-E0002: Stack under flow error occurred from instruction at 0x00006e
Lo devuelve con el RETURN de la función delay().
El programa es el siguiente:
#include <p18f452>
#pragma config WDT = OFF
void delay(void)
{
unsigned int i;
for (i = 0; i < 10000 ; i++);
}
void main (void)
{
TRISB = 0;
while (1)
{
/* Reset the LEDs */
PORTB = 0;
/* Delay so human eye can see change */
delay();
/* Light the LEDs */
PORTB = 0x5A;
/* Delay so human eye can see change */
delay();
}
}
Alguna idea??
S2
Ranganok Schahzaman
Ni puñetera idea, a priori parece estar bien. Yo para probar, definiría 'i' en el main y se lo pasaría a delay (ya que eso de que el stack tenga "overflow" es raro). y también pondría el for del delay sólo hasta 255, también por si las moscas 😉
probando, probando a veces son las cosas más estúpidas lo que hacen fallar...
PS: también pondría al final del delay "return;"
jur! es que ahora no tengo un compilador, sino ya te ayudaría más 🙁
No recuerdo donde pero una vez lei que los for eran "poco agradecidos" con los micros... ¿por que no "traduces" el for por un bucle do-while o if?
He estado mirando y el error estaba en el RETURN de la función que me salía de la pila.
El problema era que el MPLINK no me ordenaba bien los archivos, así que he vuelto a reinstalar el C18 y ya funciona correctamente.
S2
Ranganok Schahzaman
He estado mirando y el error estaba en el RETURN de la función que me salía de la pila.
El problema era que el MPLINK no me ordenaba bien los archivos, así que he vuelto a reinstalar el C18 y ya funciona correctamente.
S2
Ranganok Schahzaman
jejeje, pues al final acerté 😀 era el RETURN.