Ahora sí entiendo .
Ya que se trata de generar pulsos con un tiempo en on (1 lógico -> 5V) y en off (0 lógico->0V) lo primero que se me ocurre es utilizar un puerto serie del pic (síncrono o asíncrono, no importa).
Entonces cada pulso se podría formar escribiendo 01 en el registro de transmisión.
Por ejemplo si uso el modulo usart para mandar 4 pulsos tendría que escribir en TXREG 01010101; para mandar 3 pulsos 01010100; para dos 01010000; y para uno 010000000.
Primero se transmitirían de a 4 pulsos, luego de a 3, de a 2 y de a 1.
Supongamos que queremos transmitir 57 pulsos (por decir algo).
- Cantidad de escrituras de 4 pulsos = 57 div 4 (división entera, es decir redondeando para abajo). Incluso se puede hacer desplazando 2 bits a izquierda->
Cantidad escrituras de 4 pulsos = nro de pulsos >>2 = 14
Cantidad de pulsos restantes = 57 - 4 * cantidad de escrituras de 4 pulsos = 1
Escribir 01010101 (cantidad escrituras de 4 pulsos) veces
- Cantidad de pulsos restantes = 3? -> escribir 3 pulsos; fin rutina de transmisión
- Cantidad de pulsos restantes = 2? -> escribir 2 pulsos; fin rutina de transmisión
- Cantidad de pulsos restantes = 1? -> escribir 1 pulsos; fin rutina de transmisión
- Cantidad de pulsos restantes = 0? -> fin rutina de transmisión
La idea sería algo así:
- Leer entrada analógica
- Calcular cantidad de pulsos total
- Llamar a rutina de escritura
¿Cuál pic vas a utilizar?, ¿en que lenguaje vas a programar?.
Lo de disponer un modulo de comunicación serie facilitaría mucho, pero también se puede hacer por software (sin disponer de un módulo de comunicación serie).
Todo lo anterior valdría si el tiempo en alto de cada pulso es igual al tiempo en bajo, sino habría que pensar en otra cosa.
De que tiempos estamos hablando?->
- cada cuanto tiempo tenés que transmitir el tren de pulsos?
- cuanto tiempo tiene que estar en alto cada pulso?
Saludos
------------------
Al fin aprendí a usar listas ; y solo me tomó algo más de 2 años! ops: ops: