TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Arim en 24 de Abril de 2007, 20:30:36

Título: Problemas con simulación
Publicado por: Arim en 24 de Abril de 2007, 20:30:36
Hola!
Quería saber si podrían ayudarme con mi problema. Una vez que terminé mi programa, y probé de simularlo unas cuantas veces, justo antes de grabarlo, el Mplab no me dejó abrir la ventana Watch Windows para ver cómo se modifican algunos registros de propósito general con los que cuenta mi programa. Al final, luego de grabarlo, no funcionó como se esperaba.
También quería preguntarles si al simular una interrupción, el Mplab permite hacer esto cuantas veces uno quiera. A mí me deja hacerlo sólo una vez, ¿será por algún error en la programación?
Desde ya, les agradezco.
Saludos
Arim
Título: Re: Problemas con simulación
Publicado por: maunix en 24 de Abril de 2007, 20:43:55
Hola!
Quería saber si podrían ayudarme con mi problema. Una vez que terminé mi programa, y probé de simularlo unas cuantas veces, justo antes de grabarlo, el Mplab no me dejó abrir la ventana Watch Windows para ver cómo se modifican algunos registros de propósito general con los que cuenta mi programa. Al final, luego de grabarlo, no funcionó como se esperaba.
Bueno, es muy raro que no te funcione, tal vez tengas algún problema en tu pc o no configuraste bien algo.

También quería preguntarles si al simular una interrupción, el Mplab permite hacer esto cuantas veces uno quiera. A mí me deja hacerlo sólo una vez, ¿será por algún error en la programación?

Es muy probable, si de alguna forma no 'reseteas' el evento o flag que produjo la interrupción, es probable que no se vuelva a activar.

Si tu código está bien, el MPSIM simula bastante bien a un pic.

Podrías subir algo del código para verificar mejor.
Título: Re: Problemas con simulación
Publicado por: Arim en 10 de Mayo de 2007, 12:32:16
Acá les mando el código por si encuentran dónde puede estar el error. Creo que el flag queda reseteado (BCF INTF, antes de salir de la interrupción), pero tal vez me equivoque.  :-)
Desde ya, muchas gracias.
Arim
__________________________________________________________
   LIST      P=16F84
   RADIX      HEX
#INCLUDE P16F84.INC
   
;ASIGNACIONES
   
CONT   EQU   0x0C
A   EQU   0x0D
PDel0   EQU   0x0E
PDel1   EQU   0x0F      


   ORG   00H
   GOTO    INICIO

;INTERRUPCIÓN
   ORG   04H
   
   BCF   INTCON,GIE   
                BCF          INTCON,INTE   

   CALL   SOUND

   BCF    INTCON,INTF
                RETFIE         


;PROGRAMA PRINCIPAL

INICIO   
   BSF   STATUS,RP0   
   CLRF   TRISA      
   MOVLW   B'00111111'   
   MOVWF   TRISB      
    BCF   STATUS,RP0   

   BSF   INTCON,GIE   
                BSF          INTCON,INTE         

   CLRF   PORTA
   CLRF   CONT   
   CLRF   A      

TEST   MOVLW   d'9'      
   SUBWF   A,0
   BTFSC   STATUS,Z   
   GOTO   SALIDA

   BTFSC   PORTB,3      
   INCF   CONT      
   CALL   RET      
   INCF   A      
   GOTO   TEST

SALIDA   MOVFW   CONT      
   MOVWF   PORTA      
   CLRF   CONT      
   CLRF   A      
   GOTO    TEST


;RETARDO
RET       movlw    .110      ; 1 set numero de repeticion  (B)
            movwf    PDel0     ; 1 |
PLoop1  movlw   .181      ; 1 set numero de repeticion  (A)
            movwf     PDel1     ; 1 |
PLoop2  clrwdt            ; 1 clear watchdog
            clrwdt            ; 1 ciclo delay
            decfsz   PDel1,1   ; 1 + (1) es el tiempo 0  ? (A)
            goto     PLoop2    ; 2 no, loop
            decfsz   PDel0,1   ; 1 + (1) es el tiempo 0  ? (B)
            goto     PLoop1    ; 2 no, loop
PDelL1  goto   PDelL2    ; 2 ciclos delay
PDelL2  goto   PDelL3    ; 2 ciclos delay
PDelL3  clrwdt            ; 1 ciclo delay
            return            ; 2+2 Fin.

SOUND      
   BSF   PORTB,7
   BSF   PORTB,6
   CALL   RET
   CALL    RET
   CALL    RET
   BCF   PORTB,7
   BCF   PORTB,6
   CALL   RET
   CALL   RET
   BSF   PORTB,7
   BSF   PORTB,6
   CALL   RET
   CALL    RET
   CALL    RET
   BCF   PORTB,7
   BCF   PORTB,6
   RETURN      

   END
__________________________________________________________
Título: Re: Problemas con simulación
Publicado por: maunix en 10 de Mayo de 2007, 12:46:28
He visto esto que no me gusta


;INTERRUPCIÓN
   ORG   04H
   
   BCF   INTCON,GIE   
   BCF   INTCON,INTE   

   CALL  SOUND

   BCF   INTCON,INTF
   RETFIE     


Porqué apagas el GIE? porqué apagas el INTE?
. El GIE se apaga solo , lo apaga el PIC al ocurrir una interrupción
. El INTE si lo deshabilitas, precisamente no volverá a ocurrir la interrupción

Saludos