Autor Tema: AYUDA, EN PROTEUS SI FUNCIONA Y EN EL PCB EVENTUALMENTE SE TRABA 16F877A  (Leído 2324 veces)

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

Desconectado Mazter

  • PIC10
  • *
  • Mensajes: 14
Hola compañeros, agradesco se tomen la molestia de leer mi post, les cuento, hice un programa para mover una prensa y cuente el tiempo de prensado en base a dos digitos que son capturados y guardados en la eeprom, se usa un lcd 20x4 y al correr el software en proteus todo perfecto, pero en la pcb se bloquea al ingresar los digitos, si no ingreso esos digitos nunca se traba ni hace cosas extrañas, eso me hace descartar la fuente y cosas como rizado, agregue tiempo para evitar el rebote y ademas agrege software para esperar a que se suelte el boton, nunca habia usado incrementar o decrementar, el mismo sistema de captura de la señal de los botones para subir y bajar (una divisora con resistencias, y un capacitor, despues lo paso por un ic inversor dos veces) es el mismo que se usa para los sensores por ejemplo y en esos no tengo problema, ademas ese sistema ya lo he usado en otras tarjetas y nunca he tenido problema, creo que es algo referente a la captura y almacenamiento de los datos en el software, no soy bueno programando y he aprendido viendo videos y copiando como otros hacen sus programas, disculpen si hay maneras mas simples y yo no las uso, péro seguramente es porque las desconozco,  si me pudieran orientar les agradeceria, adjuntare parte de programa en cuestion, gracias!!!



SUBIR1   BTFSS PORTE,0            ;CHECA SI SE PRESIONA EL BOTON DE AUMENTAR
   GOTO FIJAR1                  ;BRINCA A MONITOREAR EL SIGIENTE BOTON
   CALL MEDIOSEG
   BTFSC PORTE,0                ;CHECA SI YA SE SOLTO EL BOTON
   GOTO $-1                     ;GENERA BUCLE PAA ESPERAR A QUE SE SUELTE EL BOTON
;COMIENZA IDENTIFICACION DE CARACTER A MODIFICAR
   BTFSC UBICACION,0            ;SI ES 0 BRINCA A SEGUNDO, SI ES 1 BRINCA A PRIMERO
   GOTO SUBIENDO_DECENA         ;
   GOTO SUBIENDO_UNIDAD         ;
FIJAR1   BTFSS PORTE,1            ;CHECA SI SE PRESIONA EL BOTON DE FIJAR
   GOTO CONTANDO1               ;BRINCA A MONITOREAR EL SIGIENTE BOTON
   CALL MEDIOSEG
   BTFSC PORTE,1                ;CHECA SI YA SE SOLTO EL BOTON
   GOTO $-1                     ;GENERA BUCLE PAA ESPERAR A QUE SE SUELTE EL BOTON
   GOTO FIJANDO1                ;SALTA A LA RUTINA PARA FIJAR NUMERO
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CONTANDO1   DECFSZ   D1,F        ;LE RESTA 1 A D1 Y GUARDA EL RESULTADO EN D1, BRINCA SI LLEGA A CERO
   GOTO   $+2                  ;BRINCA DOS LUGARES HACIA ADELANTE
   DECFSZ   D2, F                ;LE RESTA 1 A D2 BRINCA SI LLEGA ACERO
   GOTO   $+2                  ;BRINCA DOS LUGARES
   DECFSZ   D3, F                ;LE RESTA 1 A D3 BRINCA SI LLEGA A CERO
   GOTO DELAY_CONTEO1           ;REGRESA A CHECAR BOTONES Y CONTAR
   GOTO DESPLEGAR               ;BRINCA A DESPLEGAR Y TERMINO TIEMPO DE ESPERA
   RETURN
;;;;;;;;;;;SUBRUTINAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BAJANDO_UNIDAD                   ;
   DECF UNIDAD,F                  ;LE RESTA UNO AL VALOR ALMACENADO EN PORTADOR, QUE CORRESPONDE AL NUMERO QUE SE MUESTRA EN EL LCD
   GOTO VISUALIZAR1             ;
   RETURN                       ;
SUBIENDO_UNIDAD                  ;
   INCF UNIDAD,F                ;
   GOTO VISUALIZAR1             ;
   RETURN                       ;
BAJANDO_DECENA                   ;
   DECF DECENA,F                ;
   GOTO VISUALIZAR1             ;
   RETURN                       ;
SUBIENDO_DECENA                  ;
   INCF DECENA,F                ;
   GOTO VISUALIZAR1             ;
FIJANDO1                         ;
   DECFSZ UBICACION,F           ;    
   GOTO VISUALIZAR1             ;
   CALL ESCRIBIRU               ;GUARDA EL NUMERO EN EEDATA
   CALL ESCRIBIRD               ;GUARDA EL NUMERO EN EEDATA
   GOTO DESPLEGAR               ;
   RETURN                       ;


« Última modificación: 27 de Noviembre de 2021, 23:06:36 por Mazter »

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:AYUDA, EN PROTEUS SI FUNCIONA Y EN EL PCB DE TRABA 16F877A
« Respuesta #1 en: 27 de Noviembre de 2021, 20:36:31 »
Eso suena más problema de hardware que firmware.

¿Está presente el voltaje en todos los pines de energización?

¿El pin MCLR está en 5V?

Muchas veces es problema del oscilador. ¿Tienes un osciloscopio para ver si está oscilando el cristal?

¿Tienes capacitores de desacople conectados a los terminales del oscilador?

Publicando esa enormidad de código es como buscar una aguja en un pajar.
« Última modificación: 27 de Noviembre de 2021, 20:38:32 por DominusDRR »
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:AYUDA, EN PROTEUS SI FUNCIONA Y EN EL PCB DE TRABA 16F877A
« Respuesta #2 en: 27 de Noviembre de 2021, 20:47:38 »
Eso suena más problema de hardware que firmware.

¿Está presente el voltaje en todos los pines de energización?

¿El pin MCLR está en 5V?

Muchas veces es problema del oscilador. ¿Tienes un osciloscopio para ver si está oscilando el cristal?

¿Tienes capacitores de desacople conectados a los terminales del oscilador?

Publicando esa enormidad de código es como buscar una aguja en un pajar.

Hola, volví a leer tu publicación. No vi la descripción inicial, por el título parecía que solo te funcionaba el el simulador, pero no te funcionaba nada en el PCB. Ahora veo que mencionas el problema de los pulsadores.


Deberías publicar sólo la parte del código donde tienes el problema, donde se detecta cuando presionas los pulsadores.

Y también un diagrama esquemático de tu hardware sería una buena idea mostrarlo.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado Mazter

  • PIC10
  • *
  • Mensajes: 14
Re:AYUDA, EN PROTEUS SI FUNCIONA Y EN EL PCB DE TRABA 16F877A
« Respuesta #3 en: 27 de Noviembre de 2021, 21:18:03 »
Citar
BAJAR   BTFSS PORTA,3            ;CHECA SI SE PRESIONA EL BOTON DE DISMINUIR, SI NO SE PRECIONA BRINCA A SUBIR
   GOTO  SUBIR                  ;BRINCA A MONITOREAR EL SIGIENTE BOTON
   CALL PUNTOUNSEGUNDO
   BTFSC PORTA,3                ;CHECA SI YA SE SOLTO EL BOTON
   GOTO $-1                     ;GENERA BUCLE PAA ESPERAR A QUE SE SUELTE EL BOTON
;COMIENZA IDENTIFICACION DE CARACTER A MODIFICAR              ;
   BTFSS UBICADOR,1             ;SI ES 0 BRINCA ABAJANDO TERCERO, SI ES 1 CHECA SI ES SEGUNDO O PRIMERO
   GOTO BAJANDO_TERCERO
   BTFSS UBICADOR,0             ;SI ES 0 BRINCA A SEGUNDO, SI ES 1 BRINCA A PRIMERO
   GOTO BAJANDO_SEGUNDO
   GOTO BAJANDO_PRIMERO         ;
SUBIR   BTFSS PORTE,0            ;CHECA SI SE PRESIONA EL BOTON DE AUMENTAR
   GOTO FIJAR                   ;BRINCA A MONITOREAR EL SIGIENTE BOTON
   CALL PUNTOUNSEGUNDO          ;ESPERA PARA DISMINUIR EL EFECTO REBOTE
   BTFSC PORTE,0                ;CHECA SI YA SE SOLTO EL BOTON
   GOTO $-1                     ;GENERA BUCLE PAA ESPERAR A QUE SE SUELTE EL BOTON
;COMIENZA IDENTIFICACION DE CARACTER A MODIFICAR
   BTFSS UBICADOR,1             ;SI ES 0 BRINCA ABAJANDO TERCERO, SI ES 1 CHECA SI ES SEGUNDO O PRIMERO
   GOTO SUBIENDO_TERCERO
   BTFSS UBICADOR,0             ;SI ES 0 BRINCA A SEGUNDO, SI ES 1 BRINCA A PRIMERO
   GOTO SUBIENDO_SEGUNDO
   GOTO SUBIENDO_PRIMERO
FIJAR   BTFSS PORTE,1            ;CHECA SI SE PRESIONA EL BOTON DE FIJAR
   GOTO CONTANDO                ;BRINCA A MONITOREAR EL SIGIENTE BOTON
   CALL MEDIOSEG          ;ESPERA PARA DISMINUIR EL EFECTO REBOTE
   BTFSC PORTE,1                ;CHECA SI YA SE SOLTO EL BOTON
   GOTO $-1                     ;GENERA BUCLE PAA ESPERAR A QUE SE SUELTE EL BOTON
   GOTO FIJANDO                 ;SALTA A LA RUTINA PARA FIJAR NUMERO
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CONTANDO   DECFSZ   D1, F        ;LE RESTA 1 A D1 Y GUARDA EL RESULTADO EN D1, BRINCA SI LLEGA A CERO
   GOTO   $+2                  ;BRINCA DOS LUGARES HACIA ADELANTE
   DECFSZ   D2, F                ;LE RESTA 1 A D2 BRINCA SI LLEGA ACERO
   GOTO   $+2                  ;BRINCA DOS LUGARES
   DECFSZ   D3, F                ;LE RESTA 1 A D3 BRINCA SI LLEGA A CERO
   GOTO DELAY_CONTEO            ;REGRESA A CHECAR BOTONES Y CONTAR
   GOTO DESPLEGAR               ;BRINCA A DESPLEGAR
   RETURN
;;;;;;;;;;;SUBRUTINAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BAJANDO_PRIMERO                  ;
   DECF PRIMERO,F               ;LE RESTA UNO AL VALOR ALMACENADO EN PORTADOR, QUE CORRESPONDE AL NUMERO QUE SE MUESTRA EN EL LCD
   GOTO VISUALIZAR              ;
   RETURN                       ;
SUBIENDO_PRIMERO                 ;
   INCF PRIMERO,F               ;
   GOTO VISUALIZAR              ;
   RETURN                       ;
BAJANDO_SEGUNDO                  ;
   DECF SEGUNDO,F               ;
   GOTO VISUALIZAR              ;
   RETURN                       ;
SUBIENDO_SEGUNDO                 ;
   INCF SEGUNDO,F               ;
   GOTO VISUALIZAR              ;
BAJANDO_TERCERO                  ;
   DECF TERCERO,F               ;
   GOTO VISUALIZAR              ;
   RETURN                       ;
SUBIENDO_TERCERO                 ;
   INCF TERCERO,F               ;
   GOTO VISUALIZAR              ;
   RETURN                       ;
FIJANDO                          ;
   DECFSZ UBICADOR,F            ;   
   GOTO VISUALIZAR              ;
   GOTO COMPROBAR_CLAVE         ;

esta parte es la que me causa conflictos

Desconectado Mazter

  • PIC10
  • *
  • Mensajes: 14
Re:AYUDA, EN PROTEUS SI FUNCIONA Y EN EL PCB DE TRABA 16F877A
« Respuesta #4 en: 27 de Noviembre de 2021, 21:21:29 »
dominus, agradesco tu respuesta, descarte hardware, sucede que los mismos botones que se usan para sumar o restar digitos se usan para bajar o subir la prensa manualmente y ahi no causan problema, solo al trabajar en la suma y la resta;
tambien tengo dudas si es lo mismo :decf tercero,1 que decf tarcero,f e incluso que decf tercero, lo mismo para incf, tienes alguna sugerencia?

Desconectado Eduardo2

  • PIC24F
  • *****
  • Mensajes: 965
Re:AYUDA, EN PROTEUS SI FUNCIONA Y EN EL PCB DE TRABA 16F877A
« Respuesta #5 en: 27 de Noviembre de 2021, 21:59:46 »
Cada cual busca bugs a su manera.  Yo prefiero el fuente completo listo para compilar y el archivo de Proteus.



 

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:AYUDA, EN PROTEUS SI FUNCIONA Y EN EL PCB DE TRABA 16F877A
« Respuesta #6 en: 27 de Noviembre de 2021, 22:05:23 »
Cada cual busca bugs a su manera.  Yo prefiero el fuente completo listo para compilar y el archivo de Proteus.

Obviamente compartiendo hasta el archivo del proteus, implica que todo su proyecto sea público.

Para algunos no será importante, para otros no, ya que implica revelar su trabajo, y muchos son reservados con eso, que nunca comparten ni una porción del código, sólo con palabras tratan de explicar.

Para este caso que indica que el problema sucede físicamente y no en el simulador, posiblemente tengas que probar físicamente su hardware para determinar que pasa.
« Última modificación: 27 de Noviembre de 2021, 22:18:17 por DominusDRR »
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:AYUDA, EN PROTEUS SI FUNCIONA Y EN EL PCB DE TRABA 16F877A
« Respuesta #7 en: 27 de Noviembre de 2021, 22:14:13 »
Citar
BAJAR   BTFSS PORTA,3            ;CHECA SI SE PRESIONA EL BOTON DE DISMINUIR, SI NO SE PRECIONA BRINCA A SUBIR
   GOTO  SUBIR                  ;BRINCA A MONITOREAR EL SIGIENTE BOTON
   CALL PUNTOUNSEGUNDO
   BTFSC PORTA,3                ;CHECA SI YA SE SOLTO EL BOTON
   GOTO $-1                     ;GENERA BUCLE PAA ESPERAR A QUE SE SUELTE EL BOTON
;COMIENZA IDENTIFICACION DE CARACTER A MODIFICAR              ;
   BTFSS UBICADOR,1             ;SI ES 0 BRINCA ABAJANDO TERCERO, SI ES 1 CHECA SI ES SEGUNDO O PRIMERO
   GOTO BAJANDO_TERCERO
   BTFSS UBICADOR,0             ;SI ES 0 BRINCA A SEGUNDO, SI ES 1 BRINCA A PRIMERO
   GOTO BAJANDO_SEGUNDO
   GOTO BAJANDO_PRIMERO         ;
SUBIR   BTFSS PORTE,0            ;CHECA SI SE PRESIONA EL BOTON DE AUMENTAR
   GOTO FIJAR                   ;BRINCA A MONITOREAR EL SIGIENTE BOTON
   CALL PUNTOUNSEGUNDO          ;ESPERA PARA DISMINUIR EL EFECTO REBOTE
   BTFSC PORTE,0                ;CHECA SI YA SE SOLTO EL BOTON
   GOTO $-1                     ;GENERA BUCLE PAA ESPERAR A QUE SE SUELTE EL BOTON
;COMIENZA IDENTIFICACION DE CARACTER A MODIFICAR
   BTFSS UBICADOR,1             ;SI ES 0 BRINCA ABAJANDO TERCERO, SI ES 1 CHECA SI ES SEGUNDO O PRIMERO
   GOTO SUBIENDO_TERCERO
   BTFSS UBICADOR,0             ;SI ES 0 BRINCA A SEGUNDO, SI ES 1 BRINCA A PRIMERO
   GOTO SUBIENDO_SEGUNDO
   GOTO SUBIENDO_PRIMERO
FIJAR   BTFSS PORTE,1            ;CHECA SI SE PRESIONA EL BOTON DE FIJAR
   GOTO CONTANDO                ;BRINCA A MONITOREAR EL SIGIENTE BOTON
   CALL MEDIOSEG          ;ESPERA PARA DISMINUIR EL EFECTO REBOTE
   BTFSC PORTE,1                ;CHECA SI YA SE SOLTO EL BOTON
   GOTO $-1                     ;GENERA BUCLE PAA ESPERAR A QUE SE SUELTE EL BOTON
   GOTO FIJANDO                 ;SALTA A LA RUTINA PARA FIJAR NUMERO
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CONTANDO   DECFSZ   D1, F        ;LE RESTA 1 A D1 Y GUARDA EL RESULTADO EN D1, BRINCA SI LLEGA A CERO
   GOTO   $+2                  ;BRINCA DOS LUGARES HACIA ADELANTE
   DECFSZ   D2, F                ;LE RESTA 1 A D2 BRINCA SI LLEGA ACERO
   GOTO   $+2                  ;BRINCA DOS LUGARES
   DECFSZ   D3, F                ;LE RESTA 1 A D3 BRINCA SI LLEGA A CERO
   GOTO DELAY_CONTEO            ;REGRESA A CHECAR BOTONES Y CONTAR
   GOTO DESPLEGAR               ;BRINCA A DESPLEGAR
   RETURN
;;;;;;;;;;;SUBRUTINAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BAJANDO_PRIMERO                  ;
   DECF PRIMERO,F               ;LE RESTA UNO AL VALOR ALMACENADO EN PORTADOR, QUE CORRESPONDE AL NUMERO QUE SE MUESTRA EN EL LCD
   GOTO VISUALIZAR              ;
   RETURN                       ;
SUBIENDO_PRIMERO                 ;
   INCF PRIMERO,F               ;
   GOTO VISUALIZAR              ;
   RETURN                       ;
BAJANDO_SEGUNDO                  ;
   DECF SEGUNDO,F               ;
   GOTO VISUALIZAR              ;
   RETURN                       ;
SUBIENDO_SEGUNDO                 ;
   INCF SEGUNDO,F               ;
   GOTO VISUALIZAR              ;
BAJANDO_TERCERO                  ;
   DECF TERCERO,F               ;
   GOTO VISUALIZAR              ;
   RETURN                       ;
SUBIENDO_TERCERO                 ;
   INCF TERCERO,F               ;
   GOTO VISUALIZAR              ;
   RETURN                       ;
FIJANDO                          ;
   DECFSZ UBICADOR,F            ;   
   GOTO VISUALIZAR              ;
   GOTO COMPROBAR_CLAVE         ;

esta parte es la que me causa conflictos

Dices que has creado un retardo para eliminar el rebote. ¿De cuanto es el tiempo del retardo? Sólo por experimentar, ponle un tiempo grande digamos, 1 segundo. Si ves que el problema desaparece, empieza a disminuir es valor (800 ms, 600 ms, 400 ms) hasta que encuentres un tiempo correcto para eliminar el rebote. Generalmente un buen tiempo es alrededor de 100 a 200 ms.

También para descartar si es problema de rebotes, pueden hacer a manera de experimento, incrementar una variable cada vez que presionen el botón e imprimirla en la LCD que tienes, obviamente si tienes problemas de rebotes, esa variable tendrá por lo menos un valor mayor a 2 cuando cuando la visualices en la pantalla.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado Mazter

  • PIC10
  • *
  • Mensajes: 14
Re:AYUDA, EN PROTEUS SI FUNCIONA Y EN EL PCB DE TRABA 16F877A
« Respuesta #8 en: 27 de Noviembre de 2021, 22:33:44 »
dominus el tiempo para eliminar el rebote es de medio segundo, ademas tengo hardware para eliminar el rebote, incluso ya jugue con el valor del tiempo y del capacitor en el hardware, mi interes es mas por el lado de si se puede que le hechen un vistazo al software, quiza estoy usando una instruccion incorrectamente, por eso subi parte del programa, ahora ya la reduje pero aun asi me gustaria un vistobueno al sofware si tu o alguien mas pudiera hacerlo, gracias

si alguien puede decirme si hay diferencia entre "incf tercero,1", "incf tercero,f" y "incf tercero"?????????????? segun yo es lo mismo, pero no estoy seguro, segun yo cambia solo si escribo "incf tercerp,0" es correcto?

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:AYUDA, EN PROTEUS SI FUNCIONA Y EN EL PCB DE TRABA 16F877A
« Respuesta #9 en: 27 de Noviembre de 2021, 23:08:53 »
dominus el tiempo para eliminar el rebote es de medio segundo, ademas tengo hardware para eliminar el rebote, incluso ya jugue con el valor del tiempo y del capacitor en el hardware, mi interes es mas por el lado de si se puede que le hechen un vistazo al software, quiza estoy usando una instruccion incorrectamente, por eso subi parte del programa, ahora ya la reduje pero aun asi me gustaria un vistobueno al sofware si tu o alguien mas pudiera hacerlo, gracias

si alguien puede decirme si hay diferencia entre "incf tercero,1", "incf tercero,f" y "incf tercero"?????????????? segun yo es lo mismo, pero no estoy seguro, segun yo cambia solo si escribo "incf tercerp,0" es correcto?

incf tercero,1 significa que incrementas en 1 tercero y el nuevo valor se queda  en tercero.

https://pbs.twimg.com/media/FFPvpGlWQAIKJxc?format=jpg&name=medium

incf tercero, f me imagino que es igual a incf tercero, 1, ya que la otra opción incf tercero,0 que el nuevo valor va al acumulador w.

incf tercero no indica que significa, o posiblemente no se pueda hacer.

Todo esto está en las hojas de datos del microcontrolador.


Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado Eduardo2

  • PIC24F
  • *****
  • Mensajes: 965
Re:AYUDA, EN PROTEUS SI FUNCIONA Y EN EL PCB DE TRABA 16F877A
« Respuesta #10 en: 27 de Noviembre de 2021, 23:11:48 »
...
Obviamente compartiendo hasta el archivo del proteus, implica que todo su proyecto sea público.
Dije el código completo y el archivo en Proteus porque ya lo tiene.  Pero es suficiente un código donde salte el error con los bloques necesarios para que compile.  Lo mismo el Proteus, con las entradas salidas para que funcione.
Claro eso implica un trabajo de edición que de otra manera tendrías que hacerlo vos y encima adivinando.

Citar
Para algunos no será importante, para otros no, ya que implica revelar su trabajo, y muchos son reservados con eso, que nunca comparten ni una porción del código, sólo con palabras tratan de explicar.
Ese fantasma lo tienen muchos, pero la principal causa es creer que de un vistazo otro se va a dar cuenta y por lo tanto no hacen falta detalles.

Citar
Para este caso que indica que el problema sucede físicamente y no en el simulador, posiblemente tengas que probar físicamente su hardware para determinar que pasa.
Además de ser imposible, si fuera asi, para qué un fragmento de código?

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:AYUDA, EN PROTEUS SI FUNCIONA Y EN EL PCB EVENTUALMENTE SE TRABA 16F877A
« Respuesta #11 en: 28 de Noviembre de 2021, 10:59:12 »
Hola compañeros, agradesco se tomen la molestia de leer mi post, les cuento, hice un programa para mover una prensa y cuente el tiempo de prensado en base a dos digitos que son capturados y guardados en la eeprom, se usa un lcd 20x4 y al correr el software en proteus todo perfecto, pero en la pcb se bloquea al ingresar los digitos, si no ingreso esos digitos nunca se traba ni hace cosas extrañas, eso me hace descartar la fuente y cosas como rizado, agregue tiempo para evitar el rebote y ademas agrege software para esperar a que se suelte el boton, nunca habia usado incrementar o decrementar, el mismo sistema de captura de la señal de los botones para subir y bajar (una divisora con resistencias, y un capacitor, despues lo paso por un ic inversor dos veces) es el mismo que se usa para los sensores por ejemplo y en esos no tengo problema, ademas ese sistema ya lo he usado en otras tarjetas y nunca he tenido problema, creo que es algo referente a la captura y almacenamiento de los datos en el software, no soy bueno programando y he aprendido viendo videos y copiando como otros hacen sus programas, disculpen si hay maneras mas simples y yo no las uso, péro seguramente es porque las desconozco,  si me pudieran orientar les agradeceria, adjuntare parte de programa en cuestion, gracias!!!



SUBIR1   BTFSS PORTE,0            ;CHECA SI SE PRESIONA EL BOTON DE AUMENTAR
   GOTO FIJAR1                  ;BRINCA A MONITOREAR EL SIGIENTE BOTON
   CALL MEDIOSEG
   BTFSC PORTE,0                ;CHECA SI YA SE SOLTO EL BOTON
   GOTO $-1                     ;GENERA BUCLE PAA ESPERAR A QUE SE SUELTE EL BOTON
;COMIENZA IDENTIFICACION DE CARACTER A MODIFICAR
   BTFSC UBICACION,0            ;SI ES 0 BRINCA A SEGUNDO, SI ES 1 BRINCA A PRIMERO
   GOTO SUBIENDO_DECENA         ;
   GOTO SUBIENDO_UNIDAD         ;
FIJAR1   BTFSS PORTE,1            ;CHECA SI SE PRESIONA EL BOTON DE FIJAR
   GOTO CONTANDO1               ;BRINCA A MONITOREAR EL SIGIENTE BOTON
   CALL MEDIOSEG
   BTFSC PORTE,1                ;CHECA SI YA SE SOLTO EL BOTON
   GOTO $-1                     ;GENERA BUCLE PAA ESPERAR A QUE SE SUELTE EL BOTON
   GOTO FIJANDO1                ;SALTA A LA RUTINA PARA FIJAR NUMERO
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CONTANDO1   DECFSZ   D1,F        ;LE RESTA 1 A D1 Y GUARDA EL RESULTADO EN D1, BRINCA SI LLEGA A CERO
   GOTO   $+2                  ;BRINCA DOS LUGARES HACIA ADELANTE
   DECFSZ   D2, F                ;LE RESTA 1 A D2 BRINCA SI LLEGA ACERO
   GOTO   $+2                  ;BRINCA DOS LUGARES
   DECFSZ   D3, F                ;LE RESTA 1 A D3 BRINCA SI LLEGA A CERO
   GOTO DELAY_CONTEO1           ;REGRESA A CHECAR BOTONES Y CONTAR
   GOTO DESPLEGAR               ;BRINCA A DESPLEGAR Y TERMINO TIEMPO DE ESPERA
   RETURN
;;;;;;;;;;;SUBRUTINAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BAJANDO_UNIDAD                   ;
   DECF UNIDAD,F                  ;LE RESTA UNO AL VALOR ALMACENADO EN PORTADOR, QUE CORRESPONDE AL NUMERO QUE SE MUESTRA EN EL LCD
   GOTO VISUALIZAR1             ;
   RETURN                       ;
SUBIENDO_UNIDAD                  ;
   INCF UNIDAD,F                ;
   GOTO VISUALIZAR1             ;
   RETURN                       ;
BAJANDO_DECENA                   ;
   DECF DECENA,F                ;
   GOTO VISUALIZAR1             ;
   RETURN                       ;
SUBIENDO_DECENA                  ;
   INCF DECENA,F                ;
   GOTO VISUALIZAR1             ;
FIJANDO1                         ;
   DECFSZ UBICACION,F           ;    
   GOTO VISUALIZAR1             ;
   CALL ESCRIBIRU               ;GUARDA EL NUMERO EN EEDATA
   CALL ESCRIBIRD               ;GUARDA EL NUMERO EN EEDATA
   GOTO DESPLEGAR               ;
   RETURN                       ;

¿No deberías también utilizar un retardo cuando suelten el botón?

Código: ASM
  1. SUBIR1  
  2.    BTFSS PORTE,0            ;CHECA SI SE PRESIONA EL BOTON DE AUMENTAR
  3.    GOTO FIJAR1                  ;BRINCA A MONITOREAR EL SIGIENTE BOTON
  4.    CALL MEDIOSEG
  5.    BTFSC PORTE,0                ;CHECA SI YA SE SOLTO EL BOTON
  6.    GOTO $-1                     ;GENERA BUCLE PAA ESPERAR A QUE SE SUELTE EL BOTON
  7.    CALL MEDIOSEG ;<======================= retardo al soltar el botón
  8. ;COMIENZA IDENTIFICACION DE CARACTER A MODIFICAR

¿Has tratado de debugar con el hardware?

Yo también cuando, trabajé con el PIC18 utilizaba bastante proteus para simular y debugar, hasta que tuve un problema algo parecido al tuyo que en la simulación todo iba de maravilla y en el hardware no.

Desde esa vez me anime a utilizar el PICKit no sólo como programador, también para depurar el código con el hardware y el proteus quedó en el olvido.

« Última modificación: 28 de Noviembre de 2021, 11:52:19 por DominusDRR »
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado Mazter

  • PIC10
  • *
  • Mensajes: 14
Re:AYUDA, EN PROTEUS SI FUNCIONA Y EN EL PCB EVENTUALMENTE SE TRABA 16F877A
« Respuesta #12 en: 28 de Noviembre de 2021, 13:26:00 »
Dominus, la verdad no tengo la menor idea de debugar con hardware como lo mencionas, ojalá pudieras explicarme un poco;.   referente al retardo al soltar el botón, te comento los siguiente: había subido bastante parte del programa para que supieran que es lo que hace a grandes rasgos, se incrementa un dígito y se muestra de inmediato en la pantalla del lcd, así como se graba en la memoria, en el LCD se ven los números consecutivos, no hay brincos (nunca, ni si quiera una sola vez), lo que me hace pensar que es algo relacionado con el acceso a la memoria, no sé si el poco rizado que tenga en la línea sea el que me bloquea el pic al ingresar a la memoria, o las instrucciones que uso para ingresar a la memoria, motivo por el cual había subido todas esas partes ( donde se incrementa, dónde se captura el dígito, donde se guarda, donde se leé, etcétera, hay algun dato importante a tener en cuenta al acceder a la Eeprom?

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:AYUDA, EN PROTEUS SI FUNCIONA Y EN EL PCB EVENTUALMENTE SE TRABA 16F877A
« Respuesta #13 en: 28 de Noviembre de 2021, 13:38:15 »
Dominus, la verdad no tengo la menor idea de debugar con hardware como lo mencionas, ojalá pudieras explicarme un poco;.   referente al retardo al soltar el botón, te comento los siguiente: había subido bastante parte del programa para que supieran que es lo que hace a grandes rasgos, se incrementa un dígito y se muestra de inmediato en la pantalla del lcd, así como se graba en la memoria, en el LCD se ven los números consecutivos, no hay brincos (nunca, ni si quiera una sola vez), lo que me hace pensar que es algo relacionado con el acceso a la memoria, no sé si el poco rizado que tenga en la línea sea el que me bloquea el pic al ingresar a la memoria, o las instrucciones que uso para ingresar a la memoria, motivo por el cual había subido todas esas partes ( donde se incrementa, dónde se captura el dígito, donde se guarda, donde se leé, etcétera, hay algun dato importante a tener en cuenta al acceder a la Eeprom?

Respecto a la depuración de hardware:

Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32