TODOPIC

Microcontroladores PIC => - Niple - => Mensaje iniciado por: batmand en 26 de Noviembre de 2004, 09:44:00

Título: Temporizacion con Niple - Mensaje para Canito
Publicado por: batmand en 26 de Noviembre de 2004, 09:44:00
Hola a todos, aca va mi consulta

Realice un programa sencillo con el Niple para prender un led durante 100 mseg, apagarlo y prender otro, y asi, todos con la misma temporizacion.

Este programa aparecion en un numero de la revista Saber Electronica.

Bueno, el tema es que ese programa me funciono perfecto, pero cuando quise hacer lo mismo, temporizando 3 segundos (en vez de los 100 mseg) en cada caso, el programa me hace cosas re locas. Me prende un solo led, con un temporizacion extraña.

A que puede deberse? Como puedo solucionarlo?

Desde ya muchas gracias!!!!!!!!!!!

Ahora, esta parte es para Canito.

Yo tambien soy argentino, ahora estoy en Paraguay por motivos personales, pero queria decirte que lo que ustedes hicieron al desarrollar este programa, es genial y unico. Ya convenci a mi Gerente para que lo compren, y estoy gestionando como va a ser, si aca o alla.

Solo quiero decirte esto, porque como lei en otro post, los argentinos realmente tenemos que "parir" nuestras ideas o proyecto, inventar los recursos usando nuestra imaginacion, y afrontar pruebas que en ningun otro lado se dan. Asi que mucha fuerza viejo!!!!!!!!!!! Son unos capos!!!!!!!!!!

Y nunca se rindan ni se comparen con las grandes multinacionales del soft, porque una vez los dinosaurios se creian los reyes, pero por no saber adaptarse a las circunstancias se murieron todos!!!!!!!

Saludos
Dario
Título: RE: Temporizacion con Niple - Mensaje para Canito
Publicado por: _Canito_ en 26 de Noviembre de 2004, 17:53:00
Hola Dario,

Muchas gracias por tu buena onda.

Con respecto a tu consulta con el temporizador, deberia funcionar sin problemas.

Si queres, pasame el archivo .npl y lo pruebo a ver que puede estar ocurriendo.

Lo que me ha ocurrido en otras oportunidades es que, el usuario asigna alguna configuracion al momento de grabar el micro (como el wdt activado) lo cual despues, afecta al funcionamiento del programa y muchas veces resulta en un funcionamiento erratico.

Para solucionar esto, en este momento estoy trabajando para que el programa incluya la palabra de configuracion de manera automatica en el assembler.

Un saludo
Jorge
Título: RE: Temporizacion con Niple - Mensaje para Canito
Publicado por: batmand en 29 de Noviembre de 2004, 12:45:00
Hola Jorge, gracias por tu tiempo.

Adjunto te envio el archivo niple, y el asm que me genera.

Cuando intento simularlo con el Sim2000, en lugar de temporizar 2 segundos y luego saltar a la siguiente instruccion, se queda siempre como en un bucle, dejando prendido solo un led.

Probe el programa en el protoboard, por si era problema de simulacion, pero no, efectivamente me deja prendido solo el led de rb7, cuando en realidad lo que deberia hacer es prender 2 seg el led de rb7, apagarlo 2 seg, prender 2 seg el de rb6 y apagarlo 2 seg y asi sucesivamente.

Te agradeceria que lo mires a ver cual puede ser el problema.

Muchas gracias.
Dario

Bueno, al final, te adjunto el archivo .asm aca, no se porque razon me dice que no hay espacio en el servidor para copiar los archivos, asi que no puedo enviarte el archivo niple. Pero te comento los bloques y el orden en que los coloque

1 - Configuro puerto B como salida
2 - Escribo en el puerto b el valor binario 10000000
3 - Temporizo por bucles, 3 segundos
4 - Escribo en el puerto b el valor binario 00000000
5 - Temporizo por bucles, 3 segundos
6 - Escribo en el puerto b el valor binario 01000000
7 - Temporizo por bucles, 3 segundos
8 - Escribo en el puerto b el valor binario 00000000
9 - Temporizo por bucles, 3 segundos
10- Uno la flecha de esta ultima temporizacion con el paso 2.


Saludos y mil gracias nuevamente!!!



;------------------------------------------------------------
; Código assembler generado por Niple.
; Nombre del Proyecto:
; Autor: Desarrollo Niple.
; Fecha: 26/11/2004
; PIC: 16F84
; Velocidad de reloj: 4 Mhz
; Descripcion:
;------------------------------------------------------------


 LIST    P=PIC16F84


;------------------------------------------------------------
;                  Declaración de Registros
;------------------------------------------------------------
w                     equ  00h
status                equ  0x03
portb                 equ  0x06
_np_tiempo            equ  0x0c
_np_tiempo1           equ  0x0e
_np_tiempo2           equ  0x0f
_np_tiempo3           equ  0x10
trisb                 equ  0x86


;------------------------------------------------------------
;                  Declaración de Bits
;------------------------------------------------------------
rp0             equ  5   ;registrer banck select bit


;------------------------------------------------------------
;                        Inicio
;------------------------------------------------------------

reset   org 0
   goto paso2


;------------------------------------------------------------
;                      programa principal
;------------------------------------------------------------
paso2
   movlw b"00000000"      ;configurar el puerto b como ssssssss
   bsf status,rp0         ;cambiar a pagina 1
   movwf trisb
paso3
   ;escribir en el puerto b
   movlw b"10000000"
   bcf status,rp0         ;cambiar a pagina 0
   movwf portb
   ;temporizador 2 seg
   movlw .2
   call tiempo_1_255_seg
   ;fin del temporizador 2 seg
   ;escribir en el puerto b
   movlw b"00000000"
   movwf portb
   ;temporizador 2 seg
   movlw .2
   call tiempo_1_255_seg
   ;fin del temporizador 2 seg
   ;escribir en el puerto b
   movlw b"01000000"
   movwf portb
   ;temporizador 2 seg
   movlw .2
   call tiempo_1_255_seg
   ;fin del temporizador 2 seg
   ;escribir en el puerto b
   movlw b"00000000"
   movwf portb
   goto paso3             ;     cierra el ciclo


;------------------------------------------------------------
;                  Declaración de Subrutinas
;------------------------------------------------------------

tiempo_1_255_seg
   movwf _np_tiempo
   goto tiempo_1_255_seg_1
tiempo_1_255_seg_bucle2
   nop
   nop
   nop
   nop
   nop
   nop
   nop
tiempo_1_255_seg_1
   movlw .10
   movwf _np_tiempo1
tiempo_1_255_seg_bucle1
   nop
   nop
   movlw .99
   movwf _np_tiempo2
tiempo_1_255_seg_bucle0
   nop
   nop
   nop
   movlw .200
   movwf _np_tiempo3
tiempo_1_255_seg_bucle
   nop
   nop
   decfsz _np_tiempo3,1
   goto tiempo_1_255_seg_bucle
   nop
   nop
   nop
   decfsz _np_tiempo2,1
   goto tiempo_1_255_seg_bucle0
   nop
   nop
   nop
   decfsz _np_tiempo1,1
   goto tiempo_1_255_seg_bucle1
   decfsz _np_tiempo,1
   goto tiempo_1_255_seg_bucle2
   return


 End

Título: RE: Temporizacion con Niple - Mensaje para Canito
Publicado por: _Canito_ en 29 de Noviembre de 2004, 13:40:00
Hola Dario,

Te comento que acabo de compilar y probar en el protoboard el assembler que publicaste y funciona sin problemas.

Seguramente estas seleccionado algun bit de configuracion erronea en el software del tu programador.

Asegurate seleccionar en el software del programador las opciones:
  WDT= desactivado
  Oscillator= XT
  PRWT=Activado

Si queres estoy conectado a msn casi todo el dia en niple_software@hotmail.com

Un saludo
Jorge
Título: RE: Temporizacion con Niple - Mensaje para Canito
Publicado por: batmand en 30 de Noviembre de 2004, 09:17:00
Efectivamente, tenes toda la razon. Al cargar el archivo en el ic-prog, automaticamente me activa la casilla WDT.

La desactive y funciona perfecto.
muchas gracias, y perdon por la ignorancia!!!!!

Saludos
Dario