generazione onda quadra

so che questo argomento è già stato trattato più volte sul forum, ma non ho trovato quello che cerco...

come da titolo devo generare un'onda quadra.
frequenza max 50Khz e duty cycle 50%

dovendo contare le transizioni alto-basso, la prima cosa che mi è venuta in mente è questa

for (int i=0;i<passi;i++) {
  digitalWrite(PIN, HIGH);
  delayMicroseconds(100);
  digitalWrite(PIN, LOW);
  delayMicroseconds(100);
}

in alternativa ho visto che si può usare la funzione tone(), però mi sembra si possa dare solo la durata in millisecondi e non il numero di transizioni.

qualcuno ha altre idee?

fratt:
in alternativa ho visto che si può usare la funzione tone(), però mi sembra si possa dare solo la durata in millisecondi e non il numero di transizioni.

... perché, se dividi la durata per il periodo cosa hai ? ? ? :smiling_imp:

... e se moltiplichi il periodo per il numero di transazioni ? ? ? :smiling_imp:

Certo, la risoluzione è del millisecondo ... se NON ti va bene, allora o fai come hai scritto tu, o vedi nel datasheet come usare i timers ... ::slight_smile:

Guglielmo

Azz... non ci avevo proprio pensato...

avrei anche una domandina hardware... la faccio qui senza aprire un nuovo topic...

visto che l'onda quadra mi serve 0-12V uso un BC547 abbinato ad un BC327 (per non invertire l'alto/basso dell'onda). purtroppo non ho ancora imparato a leggere bene i datasheet...

l'utilizzo dei 2 transistor che limiti pone alla frequenza? cioè che "tempo di reazione" hanno questi componenti?

fratt:
visto che l'onda quadra mi serve 0-12V uso un BC547 abbinato ad un BC327 (per non invertire l'alto/basso dell'onda). purtroppo non ho ancora imparato a leggere bene i datasheet...

... non capisco perché complicarsi la vita quando ... SEI TU che dal MCU generi l'onda e quindi invertila via SW (software) e ti risparmi un transistor ... ma poi che senso ha ? Invertita rispetto a cosa ? Hai un trigger di partenza e deve essere in fase con qualche cosa ? ...e comunque nulla che non si fa da SW ... ::slight_smile:

Comunque, stai parlando di 50 KHz ... con transistor che lavorano nei MHz ... quindi ... :slight_smile:

Guglielmo

In linea di principio hai ragione, ma la questione é un po' piú complicata... Vista anche la mia scarsa dimestichezza in queste cose...

Grazie ancora per i chiarimenti