TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: 22.manuel en 25 de Noviembre de 2005, 11:30:00

Título: retardo
Publicado por: 22.manuel en 25 de Noviembre de 2005, 11:30:00
Hola a todos, me gustaria que fueran tan amable de explicarme la formula para calcular los retardos mediantes rutinas, en la formula o en las distintas formulas que me parece que hay, aveces no encuentro por que van algunos numeros, bueno ojala alguien por ahi disponga de un tiempo y se moleste a responderme... de antemano muchas gracias.
Título: RE: retardo
Publicado por: carlyvalente en 25 de Noviembre de 2005, 14:34:00
Formula? ninguna que yo sepa

Son bucles de contadores, generalmente. Si lo hacemos por software, por ejemplo:

            contador = 0

  inicio  contador + 1

            contador = 50 ?

            aún no, volvemos a inicio hasta que lleguemos a 50.

            si, ya ha llegado a 50. Fin de el retardo.

Dependiendo de la velocidad del reloj del micro será el retardo. Esta rutina de ejemplo en un micro de 4mhz de reloj y por lo tanto que ejecuta 1 millon de instrucciones (lineas) por segundos sólo te daría un retardo de aproximadamente 50 microsegundos.
Para lograr un retardo mas largo deberás anidar contadores; o sea un contador dentro de otro.

También se pueden hacer retardos con los temporizadores incorporados que tienen generalmente los micros, como el TMR0, TMR1, etc etc que si los activas pueden temporizar, interrumpiendo el programa principal en cuanto lleguen a un límite (desbordamiento) e indicándote que el tiempo ha terminado.
Hay varias maneras de generar demoras, pero la mas simple son de contadores dentro de contadores.

Se me entiende?

PD: El ejemplo que te he puesto no es ningún idioma que puedas usar en micros, sólo es para darte una idea global de como funciona.
Título: RE: retardo
Publicado por: migsantiago en 25 de Noviembre de 2005, 16:14:00
Aquí te adjunto un link para bajar un programa que genera automáticamente subrutinas de tiempo por ciclos en ensamblador. Sólo selecciona FREE y descárgalo a tu PC.

http://rapidshare.de/files/8159327/Picdel_sp.exe.html

Divertido
Título: RE: retardo
Publicado por: Azicuetano en 26 de Noviembre de 2005, 06:50:00
Hola 22.manuel.

Si dispones de tiempo y ganas le puedes pegar un vistazo a esta rutina. Yo me he acostumbrado a ella y me resulta muy cómoda.

Codigo:
;*****************************************************************************
; Delay_time   = ((DELAY_value * 3) + 4) * Cycle_time
; DELAY_value   = (Delay_time - (4 * Cycle_time)) / (3 * Cycle_time)
;
; i.e. (@ 4MHz crystal)
; Delay_time   = ((32 * 3) + 4) * 1uSec
;      = 100uSec
; DELAY_value   = (500uSec - 4 * 1uSec) / (3 * 1uSec)
;      = 165.33
;      = 165
;*****************************************************************************
DELAY500      ; ESTO SON 0.5 ms
      MOVLW   .165         ; +1      1 cycle
      MOVWF   DELAY         ; +2      1 cycle
DELAY500_LOOP   DECFSZ   DELAY, F         ; step 1            1 cycle
      GOTO   DELAY500_LOOP      ; step 2            2 cycles
DELAY500_END   RETURN            ; +3      2 cycles

X_DELAY500
      MOVWF   X_DELAY         ; +1      1 cycle
X_DELAY500_LOOP   CALL   DELAY500         ; step1      wait 500uSec
      DECFSZ   X_DELAY, F      ; step2      1 cycle
      GOTO   X_DELAY500_LOOP      ; step3      2 cycles
X_DELAY500_END   RETURN   



Un saludo desde Alicante.
Título: RE: retardo
Publicado por: todopic en 26 de Noviembre de 2005, 22:41:00
Hola, en el almacen de asembler ya esta hace tiempo el mismo programa que Migsantiago manifiesta en el rapidshare.... (es mas... la traduccion de ese programa, la realice yo, con el permiso del autor Sonrisa

http://miarroba.com/foros/ver.php?foroid=79706&temaid=70446

Norberto