Crear un timer desde 0

Iniciado por Riki_89D, 23 Octubre 2011, 19:43 PM

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

Riki_89D

Hola que tal? :) espero que esten genial!

veran,estoy interesado encrear mi propio Timer sin Usar API ni librerias,es decir,desde 0,solo quiero hacerlo pue spara aprender mas y saber si soy capaz de hacerlo por mi solo,puede sonar muy tonto,pero es como un reto para mi,no si me entendeis :S o tambien le pasa a alguien :P,me podrias dar solo alguna idea de como hacerlo? abria que usar ASM? o bastaria y sobraria con C?


muchisimas gracias :)

naderST

Puedes hacer un bucle infinito y con la hora del sistema comprobar el intervalo.

Riki_89D

Claro,ahora que me fijo por narices tengo que usar librerias no?¿.....para saber la hora necesito time.h....pensava que podia hacer un timer sin usar nada....pero por lo que he invesitgado solo seria posible con ASM.....cierto?¿



gracias

CeroX901

#3
Con la hora del sistema no es exacto, fíjate que cuando se usa Sleep(...), usas milisegundos, yo lo haría con QueryPerformanceCounter(...), esta función te da un intervalo de alta resolución, este intervalo va aumentando internamente desde el propio hardware (corregidme si me equivoco), cuando vuelves a llamar la funcion te da un número mayor, lo que haces es con un if esperar ese numero de intervalo para terminar el bucle "infinito"... Lo uso bastante para medir los tiempos de un algoritmo, solo sería adaptarlo.

Salud2!

naderST

Para usar Sleep o QueryPerformanceCounter que use las funciones para crear timers de la API de Windows, la idea es hacerlo sin salirse las de las librerias estandar.

Riki_89D

La verdad no conocia la funcion QueryPerfomanceCounter() la Sleep() si,mi intencion era hacer un timer sin usar la Api,pero quizas es algo absurdo no?¿,es que la otra ves se me paso pro la cabeza,como abran echo la api Sleep() (o una igual) ?¿ supongo que en ASM no?¿ en ASM podria hacer el timer sin libreria?¿  en C podemos poner ASM inline,que me dicen? :=)


gracias!

CeroX901

No conozco mucho de ASM, supongo que habrá algún truco... googlea a ver que encuentras...

Riki_89D

Hola,bueno ya e googleado un poco batsante xd claro hay una interrupcion (15h) para hacer el timer,lo que pasa que ya se sabe que los programas de 32 bits corren a modo protegido por lo que no es permitido usar interrupciones.....asi que me parece ami xd que abra que pasar por la Apicilla xxdxd


saludos

<<<-Basura->>>

Utiliza un "NE555N", para hacer un timer.......  :o, bromeaba no se como hacerlo, tal vez, usando el clock del procesador en el que estas ??
<<<--Basura-->>>

Riki_89D

Buena idea,claro de echo es lo logico,pero no creo que pueda en C no?¿ popr eso preguntava si tenia que usar ASM por cuando se trata de trabajar con hardware directamente.....


saludos