Buenas tardes Mariano,
Te comento, analizando tu aplicación (
ver mensaje) decidí que lo mas optimo es agregar una
nueva característica para el PWM: la generación de un tren de pulsos de X longitud.De esta manera, no necesitas conectar las entradas para contadores y medirlos.
Simplemente especificas cuantos pulsos necesitas y la placa se encarga sola de generarlos.
Las nuevas funciones son:
- PwmTrainInit(): Inicializa el generador de tren de pulsos para PWM, llamar una sola vez.
- PwmTrainStart(Channel, DutyCycle, Pulses): Genera en canal PWM "Channel" un tren de pulsos de longitud "Pulses" (máximo 65535) con un "DutyCycle" especifico (por ejemplo 500 -> 50.0 %).
- PwmTrainStop(): Detiene el generador de pulsos para usar el PWM con normalidad (llamar si no lo usamos mas).
Entonces, para usarlo a modo de ejemplo podrías utilizar el siguiente código.
En primera etapa, inicializar PWM para el generador de tren de pulsos:
// Configurar PWM para una frecuencia de 250 Hz (podes utilizar 20000 para 20 KHz).
PwmFreq(250)
// Asegurarse que salidas PWM tiene duty-cycle 0%. Puede configurarse una sola salida PWM también.
PwmDC(PWM1|PWM2, 0)
// Habilitar el generador de tren de pulsos.
PwmTrainInit()En otra parte de programa, por ejemplo cuando desees generar el tren de pulsos usas:
// Generar 10 pulsos en salida PWM1 con un DutyCycle del 50.0%.
PwmTrainStart(PWM1, 500, 10)En este punto la placa generará 10 pulsos. Tener en cuenta que los pulsos tomarán
el tiempo de
10 * 1/freq segundos para la generación. Pero la función retorna inmediatamente ya que se
hace en segundo plano la generación.
Nota: Es posible utilizar el otro canal (PWM2 en este caso) como PWM común si solo seteamos el DutyCycle, ej: Poner PWM2 a 70.0 % con
PwmDC(PWM2, 700).
Para utilizar estas nuevas funciones, debes:
- Actualizar el firmware de la STX8081 a la versión 201, ver link.
- Copiar el archivo: pwm.inc que te adjunto en este mensaje en el <directorio de instalación StxLadder>\slicetex\StxLadder\pawn\include\stx8081, que puede ser por ejemplo: C:\Program Files\slicetex\StxLadder\pawn\include\stx8081. Quizas necesites permisos de administrador.
Nota: La próxima versión de
StxLadder (la versión 1.6.1) contendrá los cambios efectuados para no tener que copiar el archivo
pwm.inc.
Si necesitas un ejemplo completo en Pawn, avísame.
En el próximo mensaje te muestro algunas imágenes del tren de pulso obtenidos con el Osciloscopio.
Espero que te sirva.