Si on peut faire du "pseudo PWM" avec un VA, on peut le faire aussi avec un oscillateur genere par CPU.
Imaginer une dent de scie de 1 KHz avec une frequence de sampling de 48 KHz => 48 samples par periode de dent de scie.
On compare la sortie de la dent de scie qui est sur 8 bits par exemple (256 niveaux) avec une constante comprise entre 0 et 255 et on genere un sample 255 quand le niveau de la dent de scie est superieure a cette constante ou 0 si ce n'est pas le cas.
Quand la constante = 127, on obtient un siangal carre (rapport cyclique 50% environ)
Quand la constante = 32 on a un rapport cyclique de 32/256 environ.
Plus la frequence de la dent de scie est elevee, moins il y a de sample par periode, moins le PWM est precis.
Par exemple avec une frequence de 4 KHz, on a plus que 12 samples par periode, donc on peut avoir une resolution de rapport cyclique que de 1/12eme
alors qu'a 200 Hz, on a 240 samples par periode, donc une precision de 1/240 pour le rapport cyclique.
C'est un peu technique et peut etre pas tres clair, mais le PWM est faisable en numerique mais avec des compromis et des limitations dues essentiellement a la frequence d'echantillonnage.