Hola Sergio:
Cuando comparas el valor del estado delpulsador tienes 2 opciones: si o no
-Si no esta a 1 es por que hemos necesitado abrir la puerta parar el sistema por la causa que sea. por tanto necseitaremos realizar 2 cosas:
a.) Parar el tiempo para que despues al volver a cerrar la puerta se active otra vez el tiempo y si has observado no se ha reseteado el valor inicial del registro TMR0 con lo cual seguirá contando desde donde lo dejo.
b.) al abrir la puerta, lo mas normal es que se desactive el motor. Esto no te lo puse en el esquema para ver si te dabas cunenta de ello
. ¿Sabras ponerlo?
Por otra parte si esta a 1:Tambien pueden suceder 2 cosas: que nunca se haya abierto la puerta en este estado o que si se hubiera abierto. Por lo tanto tendremos que realizar 2 cosas nuevamnete:
a.) Si se habia abierto la puerta y desconectabamos el motor, pues tendremos que volver ha activarlo
b.) Vover a activar la cuenta del TMR0 para que siga contando, bien donde la dejo al pararse por apertura de la puerta o desde el inicio en caso de no haberse abierto.
Como podras ver despues de colocar estos nuevos bloques hay una cosa que no concuerda y es el haber deshabilitado el TMR0 al empezar la rutina y por tanto procederemos a quitarla. ¡Esperaba que te dieras cuenta!
Apartir de aqui sigue la explicacion de los contadores anteriores.
De la manera en que lo pensamos(sespues se pulira el programa), te acordaras que dijimos que al disponer de registros de 8 bits para llegar a ese tiempo ibamos a necesitar 3 registros para llegar a ese valor.
Inicialmente dijimos que cargabamos el tmr0 con el valor de 61 y que con preescaler de 256 tendriamos una interrupcion cada 49,92ms.
- En tu captura el registro conta1 ha contado 255 veces luego de momento tenemos=49,92msg por 256 veces tenemos un tiempo parcial acumado de 12.779,52msg=12,77952sg.
-En ese momento lo que es resetear ese contador, a la vez que incrementamos el contador2 en una unidad y esperamos a que el contador 1 vuelva llegar otra vez a contar 256 interrupciones del tmr0 para repetirse el ciclo.
Como ves si ya tenemos 12,78sg solo nos falta contar unas 9 veces el contador 2. Aqui hay una pequña diferencia entre lo calculado y lo obteniso por lo que hay que pulir el calculo para que se aproxime mas.
Adjunto la nueva configuracion de la rutina con estos pasos.
Respecto a los NPL, si los puedes abrir con una version superior siempre se puede abrir una anterior, pero no al reves. Cuando le das abrir Niple te da un mensaje le das OK y te saldrá otro diciendo que lo va a guardar con otro nombre. Solo tienes que ir siguiendo los pasos que te indique Niple.
Fermin