spud ha scritto:Intendi che dovrei rimanere in attesa del segnale reale e poi da quello contare 10ms per simulare il prossimo passaggio, successivamente attendere di nuovo quello reale e così via?
A grandi linee, si tratterebbe di:
- calcolare il tempo trascorso tra gli ultimi due passaggi "reali" per zero (deve essere di circa 20 ms, se no non è valido);
- far partire un temporizzatore che conti la metà di questo tempo;
- quando scade, sarà un passaggio per zero "calcolato";
- far ripartire il temporizzatore con un tempo leggermente minore del precedente;
- quando scade, attendere il prossimo passaggio per zero (reale) fino a un certo tempo massimo;
- ripetere.
In pratica si attende il passaggio per zero in una finestra di tempo ristretta, trascurando tutti i passaggi spuri che potrebbero avvenire fuori da questa finestra.
In alternativa, se il micro ha un'uscita PWM, si potrebbe impostare un duty-cycle del 50% e aggiustare il periodo totale, aumentandolo o riducendolo leggermente, a seconda che il segnale PWM anticipi o ritardi i passaggi per zero "reali". Se il micro non ha un'uscita PWM adatta, si potrebbe simulare con un timer HW più interrupt.