Autor Tema: Funcionamiento anomalo con variables  (Leído 2250 veces)

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

Desconectado jmiguel

  • PIC10
  • *
  • Mensajes: 9
Funcionamiento anomalo con variables
« en: 18 de Enero de 2010, 06:30:57 »
Hola, no estoy acostumbrado a trabajar con pics, estoy trabajando con las siguientes herramientas:

- Pic18f6527
- MPLAB 8.10
- ICD2
- Compilador MCC18 (versión gratuita)

La cuestión es la siguiente: Tras realizar del parte del desarrollo de una aplicación para comunicacionas con una UART, al depurarla no ocurren cosas raras, que parecen estar relacionadas con accesos a zonas de memoria de datos incotroladas y esto produce alteraciones de variables.
Mas concretamente tenemos una variable global tipo char y con un codigo equivalente a el siguiente en el main y con un while(1):
main()
{
   while(1)
  {
     if(z<10)
     z++;


  }


pues bien cuando paramos en depuración el código y visualizamos la variable z resulta que vale un valor mayor de 10 :shock:, lo cual por código es imposible ya que no se toca en ningun otro sitio.
Por si fuese de ayuda se esta trabajando con dos irq una de alta prioridad(la de RX) y otra de baja prioridad(un timer de 1ms), y se estan ubicando variables en dos bancos de memoria.
Creemos que puede ser algun problema con el tema de la gestión de bancos de memoria, stack o algo asi, ya que con otros micros que he trabajado que no gestionan la memoria en bancos no he tenido estos problemas .

Gracias por la atención prestada.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Funcionamiento anomalo con variables
« Respuesta #1 en: 18 de Enero de 2010, 09:16:39 »
He utilizado el compilador C18 y nunca me ha paso lo que comentas  :shock: Asegurate de que el compilador entienda correctamente que involucra al if por las dudas  :?

Despues habría que ver el resto del código, pues si trabajas con punteros y de forma incorrecta puede ser que estes modificando la variable.

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Funcionamiento anomalo con variables
« Respuesta #2 en: 18 de Enero de 2010, 11:42:32 »
Cuando declares la variable z globalmente, declárala igual a cero.

char z=0;

Algunos compiladores las declaran pero no las inicializan.

Desconectado jmiguel

  • PIC10
  • *
  • Mensajes: 9
Re: Funcionamiento anomalo con variables
« Respuesta #3 en: 18 de Enero de 2010, 12:10:57 »
Ya la he inicializado y ocurre lo mismo, no se sin tendra que ver algo lo de la gestión de bancos y las instrucciones extendidas

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Funcionamiento anomalo con variables
« Respuesta #4 en: 18 de Enero de 2010, 12:19:35 »
Danos más información, código, para ver si en algún lado se pueda estar modificando la variable. La versión gratuita no soporta instrucciones extendidas.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado jmiguel

  • PIC10
  • *
  • Mensajes: 9
Re: Funcionamiento anomalo con variables
« Respuesta #5 en: 18 de Enero de 2010, 13:54:41 »
Pregunta ¿ Tengo que tener alguna precaución si tengo declaradas variables en dos bancos distintos que no son el por defecto ? , o el compilador se encarga de esto??, y otra cosa que compilador me recomendais entre el del HITECH, CCS y MCC18. No necesito mucha potencia, necesito uno intuitivo y de facil uso y sobre todo transparencia.

Gracias

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Funcionamiento anomalo con variables
« Respuesta #6 en: 18 de Enero de 2010, 14:06:49 »
Hitech no conozco, C18 es transparente con respecto a que ves claramente los registros utilizados y como se hace, en cambio CCS es muuuuy simple de usar pero no es transparente, es mi opinión.  :mrgreen:


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Funcionamiento anomalo con variables
« Respuesta #7 en: 18 de Enero de 2010, 15:38:40 »
se que en la ayuda del C dice que no es necesario, pero yo acostumbro a colocar el statment del if entre llaves, así sea una instrucción la que valide.




La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado omix

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 244
Re: Funcionamiento anomalo con variables
« Respuesta #8 en: 18 de Enero de 2010, 18:07:02 »
hola,
comentas que tienes una interrupción de alta prioridad y otra de baja, yo de ti revisaria que no haya ninguna errata para ese micro relacionada con la interrupción de alta prioridad, ya que varios micros de la seria 18F tienen un problemilla con la gestion de la interrupción de alta prioridad que puede hacer que ocurra cualquier cosa. Te lo digo por experiencia, yo con el 18F8722, 18F6722  he tenido problemas  tal que una simple comparación como esta if (1 == 1) y el micro decia que era falso, y despues de darle muchas vueltas, creyendo que era cosa del compilador resulta que era por culpa de una interrupcion de alta prioridad que tenia, en mi caso era la INT0.
La solución pasa por no usar interrupciones de alta prioridad o aplicar los parches mediante software que propone microchip en el documento de errata.

Saludos.

Desconectado jmiguel

  • PIC10
  • *
  • Mensajes: 9
Re: Funcionamiento anomalo con variables
« Respuesta #9 en: 18 de Enero de 2010, 18:59:41 »
Me puedes mandar el link al documento de errata de microchip??, pues si no se pueden utilizar las prioridades de alta prioridad menuda caga... :5]

Desconectado jmiguel

  • PIC10
  • *
  • Mensajes: 9
Re: Funcionamiento anomalo con variables
« Respuesta #10 en: 20 de Enero de 2010, 12:23:58 »
He cambiado a la version Pro de HiTech y sin problemas :-/