Autor Tema: Borrar la pila de un microcontrolador  (Leído 3103 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Borrar la pila de un microcontrolador
« 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.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Borrar la pila de un microcontrolador
« Respuesta #1 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.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Borrar la pila de un microcontrolador
« Respuesta #2 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 !

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: Borrar la pila de un microcontrolador
« Respuesta #3 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

Desconectado willynovi

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 546
Re: Borrar la pila de un microcontrolador
« Respuesta #4 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.
Intento enseñarte a pescar, si solo quieres pescados, espera que un pescador te regale los suyos.

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: Borrar la pila de un microcontrolador
« Respuesta #5 en: 18 de Julio de 2013, 18:28:09 »
Adaptado y funcionando... pero con las dudas todavia

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Borrar la pila de un microcontrolador
« Respuesta #6 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.




Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Borrar la pila de un microcontrolador
« Respuesta #7 en: 18 de Julio de 2013, 18:59:44 »
Una llamada recursiva que es entonces ??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Borrar la pila de un microcontrolador
« Respuesta #8 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 !

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Borrar la pila de un microcontrolador
« Respuesta #9 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 !!
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: Borrar la pila de un microcontrolador
« Respuesta #10 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

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Borrar la pila de un microcontrolador
« Respuesta #11 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 !

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Borrar la pila de un microcontrolador
« Respuesta #12 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.


 

anything