Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de
Autor
|
Tema: Crear un timer desde 0 (Leído 1,243 veces)
|
Riki_89D
Desconectado
Mensajes: 848
BCN CITY
|
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  ,me podrias dar solo alguna idea de como hacerlo? abria que usar ASM? o bastaria y sobraria con C? muchisimas gracias 
|
|
|
|
|
En línea
|
|
|
|
naderST
Desconectado
Mensajes: 467
|
Puedes hacer un bucle infinito y con la hora del sistema comprobar el intervalo.
|
|
|
|
|
En línea
|
|
|
|
Riki_89D
Desconectado
Mensajes: 848
BCN CITY
|
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
|
|
|
|
|
En línea
|
|
|
|
CeroX901
Desconectado
Mensajes: 22
|
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!
|
|
|
|
« Última modificación: 24 Octubre 2011, 02:01 por CeroX901 »
|
En línea
|
|
|
|
naderST
Desconectado
Mensajes: 467
|
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.
|
|
|
|
|
En línea
|
|
|
|
Riki_89D
Desconectado
Mensajes: 848
BCN CITY
|
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!
|
|
|
|
|
En línea
|
|
|
|
CeroX901
Desconectado
Mensajes: 22
|
No conozco mucho de ASM, supongo que habrá algún truco... googlea a ver que encuentras...
|
|
|
|
|
En línea
|
|
|
|
Riki_89D
Desconectado
Mensajes: 848
BCN CITY
|
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
|
|
|
|
|
En línea
|
|
|
|
<<<-Underwar->>>
Desconectado
Mensajes: 300
|
Utiliza un "NE555N", para hacer un timer.......  , bromeaba no se como hacerlo, tal vez, usando el clock del procesador en el que estas ??
|
|
|
|
|
En línea
|
<<<--Underwar-->>>
|
|
|
Riki_89D
Desconectado
Mensajes: 848
BCN CITY
|
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
|
|
|
|
|
En línea
|
|
|
|
<<<-Underwar->>>
Desconectado
Mensajes: 300
|
Pues cuando haces instrucciones en "C", y demás cosas en se están programando instrucciones para el micro, no cres.. Si quieres hacerlo en el nivel mas básico tienes que hacerlo en, Asm. Recomiendo que antes que vayas hacer algo con tu micro, busca el "datasheet" de este
|
|
|
|
|
En línea
|
<<<--Underwar-->>>
|
|
|
|
|