TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: IngRandall en 18 de Julio de 2013, 11:24:34

Título: Borrar la pila de un microcontrolador
Publicado por: IngRandall en 18 de Julio de 2013, 11:24:34
Hola, quisiera saber si yo puedo borrar la pila de un pic32... lo que pasa es que tengo un método que se llama a si mismo, y al salirme de allí tocar regresarse todas las veces, esto puede ocasionar que la pila se desborde y mi programa colapse.
Título: Re: Borrar la pila de un microcontrolador
Publicado por: MerLiNz en 18 de Julio de 2013, 12:05:51
Hola, quisiera saber si yo puedo borrar la pila de un pic32... lo que pasa es que tengo un método que se llama a si mismo, y al salirme de allí tocar regresarse todas las veces, esto puede ocasionar que la pila se desborde y mi programa colapse.

utilizando pop o bien poniendo a 0 el registro que indica la posicion de la pila. De todas formas haciendo esto puedes tener problemas de perdidas de datos.
Título: Re: Borrar la pila de un microcontrolador
Publicado por: RICHI777 en 18 de Julio de 2013, 12:22:21
Mas que hacer eso, deberías ver la forma de salir de la recursión. Google que hay mucha info en la web. Aparte si harías eso tu programa seguro explote.

Saludos !
Título: Re: Borrar la pila de un microcontrolador
Publicado por: IngRandall en 18 de Julio de 2013, 12:23:50
Solo por curiosidad, que es eso de pop y donde puedo leer para encontrar el registro que indica la posición de la pila... por que ya con lo que me dijiste voy a cambiar el código jajajajaja
Título: Re: Borrar la pila de un microcontrolador
Publicado por: willynovi en 18 de Julio de 2013, 17:48:55
No quiero pecar por metido, quizás el que te lo dice sabrá porque, pero....

POP creo que se refiere a Process Orientated Programming, la verdad nunca investigué sobre eso  :oops:

Por el tema de la pila, yo trataría de adaptar el programa a que no tengas la necesidad de borrarla.
Título: Re: Borrar la pila de un microcontrolador
Publicado por: IngRandall en 18 de Julio de 2013, 18:28:09
Adaptado y funcionando... pero con las dudas todavia
Título: Re: Borrar la pila de un microcontrolador
Publicado por: planeta9999 en 18 de Julio de 2013, 18:53:24
Solo por curiosidad, que es eso de pop y donde puedo leer para encontrar el registro que indica la posición de la pila... por que ya con lo que me dijiste voy a cambiar el código jajajajaja


La gestión de una pila, es algo muy básico en informática, los términos PUSH y POP, se utilizan para referirse a introducir o sacar una dirección en la pila.
Cuando el programa SALTA a una subrutina o una función, cambia el PC (contador de programa), pero antes almacena en la pila la dirección desde la que ha saltado, haciendo un PUSH, cuando acaba la subrutina o función, saca de la pila, con un POP, la dirección desde la que saltó y la vuelve a colocar en el PC, para que el programa siga su curso.

Lo de tocar la pila a mano, es peligroso, eso lo gestiona la CPU automáticamente, y lo de hacer una función que se autollama es una aberración. Cuando alguien tiene que recurrir a esas argucias, debería de replantearse mejor la forma de programar.



Título: Re: Borrar la pila de un microcontrolador
Publicado por: MGLSOFT en 18 de Julio de 2013, 18:59:44
Una llamada recursiva que es entonces ??
Título: Re: Borrar la pila de un microcontrolador
Publicado por: RICHI777 en 18 de Julio de 2013, 19:02:50
Solo por curiosidad, que es eso de pop y donde puedo leer para encontrar el registro que indica la posición de la pila... por que ya con lo que me dijiste voy a cambiar el código jajajajaja


La gestión de una pila, es algo muy básico en informática, los términos PUSH y POP, se utilizan para referirse a introducir o sacar una dirección en la pila.
Cuando el programa SALTA a una subrutina o una función, cambia el PC (contador de programa), pero antes almacena en la pila la dirección desde la que ha saltado, haciendo un PUSH, cuando acaba la subrutina o función, saca de la pila, con un POP, la dirección desde la que saltó y la vuelve a colocar en el PC, para que el programa siga su curso.

Lo de tocar la pila a mano, es peligroso, eso lo gestiona la CPU automáticamente, y lo de hacer una función que se autollama es una aberración. Cuando alguien tiene que recurrir a esas argucias, debería de replantearse mejor la forma de programar.

La eterna discusión entre recursión e iteracción ...

Saludos !
Título: Re: Borrar la pila de un microcontrolador
Publicado por: MGLSOFT en 18 de Julio de 2013, 19:06:36
Ojo que yo solo plantee así la pregunta para pensar, pero lo de que no se debe tocar la pila estoy 100% de acuerdo !!
Título: Re: Borrar la pila de un microcontrolador
Publicado por: IngRandall en 18 de Julio de 2013, 19:23:12
Pues que se deba o no tocar la pila estoy de acuerdo con lo que han comentado los compañeros del foro, pero que utilizar un método que se llame a si mismo sea una aberración, me parece que no es correcto el termino, en cuanto a programación de pic es peligroso, pero no es una aberración... cada cabeza es un mundo, cada persona programa de una forma o de otra, si la programación es efectiva no tendría el por que replantearse la forma de programas... ademas que yo sepa existen muchos métodos de búsqueda en programación que se utilizan así... pero como digo, cada cabeza es un mundo, nadie tiene la programación perfecta o definitiva
Título: Re: Borrar la pila de un microcontrolador
Publicado por: RICHI777 en 18 de Julio de 2013, 19:26:54
Pues que se deba o no tocar la pila estoy de acuerdo con lo que han comentado los compañeros del foro, pero que utilizar un método que se llame a si mismo sea una aberración, me parece que no es correcto el termino, en cuanto a programación de pic es peligroso, pero no es una aberración... cada cabeza es un mundo, cada persona programa de una forma o de otra, si la programación es efectiva no tendría el por que replantearse la forma de programas... ademas que yo sepa existen muchos métodos de búsqueda en programación que se utilizan así... pero como digo, cada cabeza es un mundo, nadie tiene la programación perfecta o definitiva

Te entiendo, pero existen las buenas prácticas, en forma personal no pasa nada, pero si trabajas en una empresa y alguien te ve haciendo eso, es claro que no durarías mucho. Como comente antes, deberías ver la manera de que la función recursiva en algún momento no se más llamada.

Saludos !
Título: Re: Borrar la pila de un microcontrolador
Publicado por: MerLiNz en 18 de Julio de 2013, 20:28:47
no es lo mismo la recursion en un pc que en un pic en un pic como dicen es una locura porque esta limitado, como el creador del post indica le puede desbordar la pila ademas de consumir muchas Tcy.

Pop es la funcion para sacar de la pila su contenido. Y el registro debes mirar la guia del XC32 o C32 que te lo indica cual es, sin embargo si sacas contenidos de la pila que esta usando la cpu probablemente "la lies parda" yo creo que lo mas efectivo es evitar la recursion.