SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: juanmx en Domingo 12 de Octubre de 2003, 02:15
-
Hola que tal, mi pregunta es:
¿Como le hago para sacar una frecuencia de 40 Khz por el puerto paralelo?
Se que tengo que sacar un uno, hacer una pausa y luego un cero, pero esta pausa tiene que ser de 0.025 ms para los 40 Khz y el delay solo espera 1ms.
Gracias por su atencion.
Saludos, Juan
-
Hola, has probado en realizar un bucle, al estilo de los microcontroladores, es decir no utilizar las funciones que trae el compilador C, como son sleep(); delay(); sino que realizar tu funcion en un bucle, eso si tendrias que calcular muy bien el tiempo el cual creo dependeria de tu ordenador. Realmente es un problemon el que debes solucionar, investigare, si encuentro algo te informo. Saludos
-
No lo habia pensado, tratare de implementar un bucle, a ver si sale, lo malo es que como dices el tiempo dependera de la maquina en la que lo corra, de todas formas, gracias!!
Saludos :guitar:
-
Hola, otra forma es hacer un temporizador en assembler y adaptarlo al codigo en c, ya pedi ayuda en el foro de asm, haber que respuestas tengo. Saludos :guitar:
-
A claro eso seria mejor, investigare, muchas gracias por la atencion!!!!
:gracias:
:ball:
-
Hola juanmx, recibi respuesta en el mensaje del foro de assembler y lamentablemente ninguna da una solucion, es algo muy dificil lo que deseas hacer, vere si logro hallar algo de info buscando de otra manera. Saludos
-
Creo que tendre que hacerlo usando hardware, encontre una buena opcion, en:
http://www.reed-electronics.com/ednmag/ ... me=0&cfd=1 (http://www.reed-electronics.com/ednmag/index.asp?layout=article&stt=000&articleid=CA170222&pubdate=10/11/2001&rid=0&rme=0&cfd=1)
Voy a armar el circuito y a ver si sale, pero seguire investigando si se puede solo con software. De todas formas muchisimas gracias por la ayuda.
Saludos, Juan :guitar:
-
Hola juanmx, si, yo hiba a decirte que podias utilizar hardware, con un micro puedes hacer hasta menos de 40 Khz o mas tambien. Bueno, espero tengas suerte. Saludos :guitar:
-
La respuesta es bastante simple.
Debes colgarte de la INT 8 (que es la IRQ0, 82c54).
El 82c54 (buscalo en google) es un integrado que posee 3 Timers.
El timer0 esta mapeado a la IRQ0.
Por default genera una interrupcion cada 55ms, pero modificando sus cuentas podes llevarlo a 890 nano segundos.
Si sabes como colgarte en C o asm de una interrupcion en DOS ya tenes el 50% del trabajo hecho.
Deberias mirar las hojas de datos, pero con escribir la cuenta del 8254 alcanza.
Saludos.