Autor Tema: temporizador basico  (Leído 5888 veces)

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

Desconectado ftp5763

  • PIC10
  • *
  • Mensajes: 6
temporizador basico
« en: 13 de Julio de 2007, 18:10:32 »
hola me llamo fede soy nuevo en el foro y tambien en el campo de los pic. tengo hechos unos programas re basicos y quiero seguir progresando en el tema estoy trabajando con el mplab 5.7 recientemente baje un curso en castellano de este sub foro pero tengo los sig problemas: al tratar de hacer un temporizador basico ejemplo:con un bit ,activo el temporizador al cabo de un tiempo activo un bit de salida(el tiempo eepende del oscilador con el que trabaje ¿no?)
-no mo queda bien en claro para que son las interupcones!!!
-TMR0?? y WDT?? -estoy trabajando con un 16f84-
como veran soy nuevo en el tema desde ya les agradesco sus respuestas   atte.

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
temporizador basico
« Respuesta #1 en: 13 de Julio de 2007, 18:14:38 »
amigo utiliza el buscador y encontraras algo de interrupciones

y despues
saludos

Desconectado vszener

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2395
Re: temporizador basico
« Respuesta #2 en: 16 de Julio de 2007, 15:20:15 »
Buenas, el tiempo de temporización depende de tu oscilador.

El WDT es el 'perro guardián', es un temporizador interno del pic que hace que se producza un reset cuando se ha desbordado, no creo que sea el que debas usar para temporizar tiempos.

Para ello cualquiera d elos timer's que sea configurable en modo temporizador. Puedes usarlo de dos maneras, por interrupciones o sin ellas.

Sin interrupciones: Activas el timer como temporizador y que se desborde a un tiempo determinado y que no produzca interrupción, cuando dicho timer se desborde al tiempo seleccionado, se pondrá su flag correspondiente a '1', por lo tanto, en tú programa principal monotorizando dicho flag sabrás cuando ha contado el tiempo que se deseaba.

Con interrupción: Activas el timer como temporizador y que se desborde a un tiempo determinado y que produzca interrupción, cuando dicho timer se desborde se activará su flag correspondiente y saltará al vector d einterrupción, en el cual abrodará su rutina d einterrupción.

¿En qué lenguaje vas a trabajar?

PD: Ya existen nuevas versiones del MPlab, te las puedes descargar gratis desde la página de Microchip.


Suerte!!! ;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado ftp5763

  • PIC10
  • *
  • Mensajes: 6
Re: temporizador basico
« Respuesta #3 en: 17 de Julio de 2007, 23:14:13 »
Buenas, el tiempo de temporización depende de tu oscilador.

El WDT es el 'perro guardián', es un temporizador interno del pic que hace que se producza un reset cuando se ha desbordado, no creo que sea el que debas usar para temporizar tiempos.

Para ello cualquiera d elos timer's que sea configurable en modo temporizador. Puedes usarlo de dos maneras, por interrupciones o sin ellas.

Sin interrupciones: Activas el timer como temporizador y que se desborde a un tiempo determinado y que no produzca interrupción, cuando dicho timer se desborde al tiempo seleccionado, se pondrá su flag correspondiente a '1', por lo tanto, en tú programa principal monotorizando dicho flag sabrás cuando ha contado el tiempo que se deseaba.

Con interrupción: Activas el timer como temporizador y que se desborde a un tiempo determinado y que produzca interrupción, cuando dicho timer se desborde se activará su flag correspondiente y saltará al vector d einterrupción, en el cual abrodará su rutina d einterrupción.

¿En qué lenguaje vas a trabajar?

PD: Ya existen nuevas versiones del MPlab, te las puedes descargar gratis desde la página de Microchip.


Suerte!!! ;)
si fueras tan amables podrias colocar dos ejemplos de estas dos formas? ¿de que manera lo hace el programa para crear retardos llamado "picdel_sp"????     

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: temporizador basico
« Respuesta #4 en: 18 de Julio de 2007, 00:58:12 »
hOLA FTP, te recomiendo que no te apresures  :mrgreen: :D
comienza con rutinas simples, por ahora nada de interrupciones!!!, eso para mas adelante
Si estas empleando un oscilador a cristal de 4 mhz, cada instruccion tarda 1microsegundo (salvo los saltos que pueden tardar 2)
por lo que una demora, sera una serie de loops para hacerle perder el tiempo al micro, y para ello se emplean los NOP (no operacion)
con el programita pdel, lo que haces es darle el tiempo que necesita, y el te entrega una subrutina de retardo

por ejemplo

movlw .3
movwf tiempo
decfsz tiempo,f
goto $-1
****

ci miras este ejemplo, cargo un registro llamado tiempo con el numero tres
luego lo decremento, y con el goto retorno a decrementar...
pero cuando el registro tiempo, llegue a cero , al decrementar, saltara una linea (DECremente registro F Salte si es cero) con
lo cual el programa llegara a ****

es decir , mantuvimos ocupado al micro calculando.... perdiendo el tiempo  :mrgreen:

Suerte!
Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado vszener

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2395
Re: temporizador basico
« Respuesta #5 en: 18 de Julio de 2007, 15:28:17 »
Si vas a trabajar en C, en el subforo de C, concretamente en el primer post, encontrarás varios enlaces a bastantes ejemplos útiles.

En cambio si vas a trabajar en ASM, en su respectivo foro encontrarás multitud de ejemplos de aplicación para lo que buscas.


Suerte!!! ;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado ftp5763

  • PIC10
  • *
  • Mensajes: 6
Re: temporizador basico
« Respuesta #6 en: 19 de Julio de 2007, 19:59:24 »
Si vas a trabajar en C, en el subforo de C, concretamente en el primer post, encontrarás varios enlaces a bastantes ejemplos útiles.

En cambio si vas a trabajar en ASM, en su respectivo foro encontrarás multitud de ejemplos de aplicación para lo que buscas.


Suerte!!! ;)
hola soy ftp, con respecto a lo que m recomendaste tngo un ejemplo que funciona pero despues de un cierto tiempo el programa simulador  mplab 5.7 me da un mensaje de  " warning!!! atack underflow"- warning!!! stack under  flow has occurred this situation may be trapped by re executing with stack overflow break enabled-(advirtiendo!!! la pila bajo el flujo ha ocurrido esta situación puede entramparse por re que ejecuta con el descanso de inundación de pila habilitado)
el ejercicio en cuestion es el siguiente:
-----------------------------------------------------------------------------------------------------------       
 List    p=16f84
Port_A   equ 05
Port_B   equ 06
CONTADOR  equ 0x20
ESTADO     equ 03

      org 0
         bsf   ESTADO,5   ; se pasa a banco 1 
      movlw 0x0f      ; W <-- 0F, carga w con 0F
      movwf Port_A   ; TRISA <-- W, carga W a TRISA : 0000 FFFF
               ; 4 bits -sign de la Puerta A son entradas y
               ; el 5to bit es salida
      movlw 0x00      ; W <-- 00, carga W con 00
      movwf Port_B   ; TRISB <-- W, carga w a TRISB: 0000 0000
               ; todos los bits de la Puerta B son salida
         bcf   ESTADO,5   ; se pasa a banco 0
      movlw 0x00      ; W <-- 00, carga W con 00
      movwf Port_B   ; todos los pines de Puerta B en 0
INICIO   btfss Port_A,0
         goto INICIO       
         call DEMORA
         bsf Port_B,0
DEMORA  movlw     .24       ; 1 set numero de repeticion
        movwf     CONTADOR     ; 1 |
        clrwdt
PLoop0  clrwdt              ; 1 clear watchdog
        decfsz    CONTADOR, 1  ; 1 + (1) es el tiempo 0  ?
        goto      PLoop0    ; 2 no, loop
        clrwdt              ; 1 ciclo delay
        return              ; 2+2 Fin.
       end
---------------------------------------------------------------------------------------------------------
el bit de salida Port_b,0 cambia de estado cada un cierto tiempo>>
les agadeceria si lo prueban  ustedes a ver que pasa desde ya muchas gracias... atte

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: temporizador basico
« Respuesta #7 en: 04 de Agosto de 2007, 20:43:14 »
Hola, el programa esta mal, porque, se bloquea al entrar en la subrutina...

INICIO   btfss Port_A,0
         goto INICIO       
         call DEMORA
         bsf Port_B,0

; continua el programa
 goto INICIO
; esto es una subrutina, y el programa no puede al ir ejecutando, llegas SOLITO a este lugar
DEMORA  movlw     .24       ; 1 set numero de repeticion
        movwf     CONTADOR     ; 1 |
        clrwdt




PLoop0  clrwdt              ; 1 clear watchdog
        decfsz    CONTADOR, 1  ; 1 + (1) es el tiempo 0  ?
        goto      PLoop0    ; 2 no, loop
        clrwdt              ; 1 ciclo delay
        return              ; 2+2 Fin.
       end
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...