TODOPIC
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
. ¿Perdiste tu
email de activación
?
1 Hora
1 Día
1 Semana
1 Mes
Siempre
Ingresar con nombre de usuario, contraseña y duración de la sesión
Este tema
Este sub-foro
Todo el foro
Google
Inicio
Ayuda
Buscar
Ingresar
Registrarse
TODOPIC
»
Microcontroladores PIC
»
Todo en microcontroladores PIC
(Moderadores:
MGLSOFT
,
pocher
,
Suky
) »
Duda matematica
« anterior
próximo »
Imprimir
Páginas: [
1
]
Ir Abajo
Autor
Tema: Duda matematica (Leído 1858 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Skualo
PIC10
Mensajes: 42
Duda matematica
«
en:
16 de Agosto de 2008, 15:34:25 »
Ajustando TIMER0 para conseguir un segundo.
Por Jóse Modulay del Foro Todopic
Esas mates...
Con un cristal de 4 MHz tienes un periodo de reloj de 1/4 MHz = 0.25 us
Como cada ciclo máquina son 4 ciclos de reloj, tienes un ciclo máquina de 0.25 us * 4 = 1 us.
Es decir, el timer se incrementa en una unidad cada microsegundo.
La idea es buscar que el timer interrumpa cada cierto tiempo x,y que ese tiempo x sea divisor exacto de 1 segundo, por ejemplo 25 us, 100 us, 2 ms, 10 ms, etc...
Además de esto, habrá que usar una variable contador que se irá incrementando cada vez que el timer se desborde, comprobando su valor cada vez que esto sucede y así llevar el control del tiempo transcurrido.
La fórmula, medida en segundos, que determina el periodo de desbordamiento de un timer de 8 bits (timer 0) es:
T = (256 - precarga) * Preescaler * 4 / Fosc
Si fijamos el Preescaler a 16...
T = (256 - precarga) * 16 * 4 / 4 MHz
=> precarga = 256 - T * 62500
T es la base de tiempos que andamos buscando y precarga es el valor que se le carga al timer tras cada interrupción para que vuelva a empezar a contar a partir de él.
Se trata de buscar un valor para T que sea divisor de 1 segundo y que al multiplicarlo por 62500 el resultado sea un número entero.
Por ejemplo 4 ms:
precarga = 256 - 4 ms * 62500 = 256 - 250 = 6
O sea, para conseguir la base de tiempos de 4 ms tendrás que cargar al timer con el valor 6 (con Preescaler establecido a 16).
Hecho esto, para temporizar un segundo tendrás que contar:
1 s / 4 ms = 250 interrupciones
Hola lo siento tener que preguntar esto pero llevo dandole vueltas 30 minutos buscando informacion incluso y no para mas mi cerebro no consigo averiguar la parte que esta en rojo el 62500 como al multiplicar 16*4/4Mhz puede dar 62500 me va a explotar la cabeza y necesito saber como es eso porque es que me a dejado una duda de esas que no te puedes quitar de la cabeza aver si me lo resolveis por favor y lo siento porque seguro que sale de ai pero no lo veo.
SAludos
En línea
Modulay
Moderadores
DsPIC30
Mensajes: 2651
Re: Duda matematica
«
Respuesta #1 en:
16 de Agosto de 2008, 15:40:58 »
Al realizar las operaciones para despejar "precarga" y dejarla sola a un lado del igual...de ahí sale la expresión de la segunda línea en rojo : precarga = 256 - T * 62500
En línea
Fer_TACA
Moderadores
DsPIC33
Mensajes: 4069
Re: Duda matematica
«
Respuesta #2 en:
16 de Agosto de 2008, 15:51:28 »
Hola Skualo:
62500 sale de dividir 1segundo=1000000 por 16
Saludos
Fermin
En línea
Todos los días se aprende algo nuevo.
Fer_TACA
Moderadores
DsPIC33
Mensajes: 4069
Re: Duda matematica
«
Respuesta #3 en:
16 de Agosto de 2008, 15:53:12 »
1sg.=1.000.000 microsegundos
En línea
Todos los días se aprende algo nuevo.
Skualo
PIC10
Mensajes: 42
Re: Duda matematica
«
Respuesta #4 en:
16 de Agosto de 2008, 16:41:17 »
Muchisimas gracias a los dos
Saludos
En línea
Imprimir
Páginas: [
1
]
Ir Arriba
« anterior
próximo »
TODOPIC
»
Microcontroladores PIC
»
Todo en microcontroladores PIC
(Moderadores:
MGLSOFT
,
pocher
,
Suky
) »
Duda matematica
anything