Autor Tema: Cosa muy extraña !!!  (Leído 3138 veces)

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

Desconectado PicKetero

  • PIC12
  • **
  • Mensajes: 80
Cosa muy extraña !!!
« en: 08 de Septiembre de 2004, 20:31:00 »
   Hola a todos !!!
    Les paso a comentar lo que me ha ocurrido en moderada experiencia en la programación.
    Simulando un programita en assembler con el mplab hay una rutina , la cual es consultada cada 18 mili seg y al cabo de la tercera a la sexta repetición ( todas las otras pasadas OK !! ) de este código se produce un "reset" de mi código, advierto que no utilizo el WDT ni el comando SLEEP, ni PWRTE, por lo que desconozco cual es el origen de este reset.
    Otro comentario es que a modo de hallar el problema agregué unas lineas con "nop" para ver si mi linea de código era la que ocacionaba este reset o no, y cuando agregué nop"s se produjo el reset en otro punto de mi código.  Aparentemente el reset se debe a otra cosa y no a las lineas que estoy muestrando de momento.
     También miré los bit"s  TO y PD del registro STATUS, los cuales en distintas pruebas daban valores difierentes en el instantes que ocurría el "reset".    
    Ultima acotación es que todo esto funciona dentro de la interrupción del TMR0 del 16f84a etc etc.

    Espero que se me entienda cual es el problema !!
    Nunca antes me había pasado algo así

    Muchisimas gracias por su ayuda !!!!
                                                               
         

Desconectado cHiPmAn

  • PIC16
  • ***
  • Mensajes: 110
RE: Cosa muy extraña !!!
« Respuesta #1 en: 09 de Septiembre de 2004, 01:14:00 »
HOlas

esto tiene toda la pinta de desbordamiento, repasate todas las temporizaciones de las rutinas y recuerda que es muy importante que las rutinas de atención a las interrupciones sean lo mas cortas posibles.

Suerte!

Desconectado PicKetero

  • PIC12
  • **
  • Mensajes: 80
RE: Cosa muy extraña !!!
« Respuesta #2 en: 09 de Septiembre de 2004, 21:41:00 »
 Mirá, por lo visto el problema está en el PCL ya que cuando me encuentro en la instrucción " call Tabla_Led " indica la hubicación de la linea de código 0110 una vez ejecutada esta linea se hubicaba en la linea correspondiente ( 0110   addwf   PCL,f  ) pero luego con W = 0 el PCL debería indicar "0111" pero esto no sucede, el PCL indica la linea 12 por lo que esto ocaciona un salto a cualquier lugar y no al que debería por lo que corrompe el flujo del codigo correspondiente.

          Tabla_Led

0110             addwf    PCL,f
   
0111             retlw    b"00000000"        ;0
0112             retlw    b"00000010"        ;1
0113             retlw    b"00000110"        ;2
0114             retlw    b"00001110"        ;3
0115             retlw    b"00011110"        ;4
0116             retlw    b"00111110"        ;5
0117             retlw    b"01111110"        ;6
0118             retlw    b"11111110"        ;7



   Alguien me puede ayudar con esto,  eso no se arregla con " org 0xXXX"  ?    no entiendo como funciona
   
   Desde ya muchísimas gracias !!!!

           

Desconectado Micom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 783
RE: Cosa muy extraña !!!
« Respuesta #3 en: 09 de Septiembre de 2004, 23:19:00 »
Escrito originalmente por PicKetero
Mirá, por lo visto el problema está en el PCL ya que cuando me encuentro en la instrucción " call Tabla_Led " indica la hubicación de la linea de código 0110 una vez ejecutada esta linea se hubicaba en la linea correspondiente ( 0110   addwf   PCL,f  ) pero luego con W = 0 el PCL debería indicar "0111" pero esto no sucede, el PCL indica la linea 12 por lo que esto ocaciona un salto a cualquier lugar y no al que debería por lo que corrompe el flujo del codigo correspondiente.

          Tabla_Led

0110             addwf    PCL,f
   
0111             retlw    b"00000000"        ;0
0112             retlw    b"00000010"        ;1
0113             retlw    b"00000110"        ;2
0114             retlw    b"00001110"        ;3
0115             retlw    b"00011110"        ;4
0116             retlw    b"00111110"        ;5
0117             retlw    b"01111110"        ;6
0118             retlw    b"11111110"        ;7



   Alguien me puede ayudar con esto,  eso no se arregla con " org 0xXXX"  ?    no entiendo como funciona
   
   Desde ya muchísimas gracias !!!!

           

Perdoname pero que no antes de llamar a la tabla_led deve de estar cargado en W el numero que se va a sumar al PCL para que salte al retlw deseado?
El programador GTP USB PLUS es un super programador
GRACIAS dobles amigo SISPIC

Tan solo queda seguir sobreviviendo

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
RE: Cosa muy extraña !!!
« Respuesta #4 en: 10 de Septiembre de 2004, 07:11:00 »
Ojo, las tablas de saltos no deben tener mas de 250 posibles saltos, ademas deben ponerse al inicio del programa, para que entren en la misma pagina, porque si no automaticamente provocan un desbordamiento y consecuencias inesperadas...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado PicKetero

  • PIC12
  • **
  • Mensajes: 80
RE: Cosa muy extraña !!!
« Respuesta #5 en: 10 de Septiembre de 2004, 14:39:00 »
    Hola Micom y MGLSOFT !!!
    Micom, si tenes razón, me olvidé de agregarlo al ejemplo que dí !!
    MGLSOFT ........  las subrutinas deben estar al principio de cada banco de memoria, pero resulta que en org .4 tengo las rutinas de interrupsión que tiene sus buenas cantidad de lineas y luego de este he colocado las subrrutinas a las que llamo con " CALL ".
    1ª - Pregunta: como puedo ver saber en que posición de memoria de programa se encuentra cada linea de código  ?
    2ª -  Puedo alojar estas subrrutinas en otros bancos que no sean el bancho "0" ?......   Cómo llamo a estas subrrutinas ?
    Espero que se me entienda. !!!  

     MUCHAS GRACIAS MUCHACHOS !!!!!

Desconectado Micom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 783
RE: Cosa muy extraña !!!
« Respuesta #6 en: 10 de Septiembre de 2004, 22:08:00 »
Mira en el archivo List que se genera al compilarse un programa en el Mplab.

Ademas te sugiero que las subrutinas que llamas con CALL mejor las pongas al ultimo. Suerte              
El programador GTP USB PLUS es un super programador
GRACIAS dobles amigo SISPIC

Tan solo queda seguir sobreviviendo

Desconectado PicKetero

  • PIC12
  • **
  • Mensajes: 80
RE: Cosa muy extraña !!!
« Respuesta #7 en: 12 de Septiembre de 2004, 21:55:00 »
  Muchas gracias !!!!
     Creo que te entendi bien, si no corregime por favor !!!
     Cuando decis que cuando trabaje con subrrutinas a las cuales la "llamo" con "CALL" las coloque una vez hecho las rutinas principales al principio del banco, no que la coloque al final del banco, no ?

     Es para cerrar el tema y que no queden dudas .......... muchas gracias  Muchachos !!!!!



     Les estoy muy agradecido !!!          

Desconectado Micom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 783
RE: Cosa muy extraña !!!
« Respuesta #8 en: 13 de Septiembre de 2004, 00:21:00 »
Colocalas al final del programa antes del "END" y ya.  
El programador GTP USB PLUS es un super programador
GRACIAS dobles amigo SISPIC

Tan solo queda seguir sobreviviendo


 

anything