Aiuto calcolo delay

12 Anni 3 Mesi fa #6 da Akuryu
Risposta da Akuryu al topic Re: Aiuto calcolo delay

Mauro Laurenti ha scritto: Ciao,

Akuryu non ha mantenuto la promessa di rispondere in caso il topic fosse stato nella sezione giusta...! :)

Allora cominciamo col dire che due note assieme semplicemente on-off non le puoi ottenere.
L' altoparlante o e' acceso o e' spento, per cui puoi generare solo una nota alla volta (questo non e' proprio verissimo). Facendo uso del PWM e usandolo in veste di DAC puoi miscelare piu' note assieme ma non e' banale. Inizierei con il continuare il programma di esempio che hai in mano e che ti permette di generare gia' delle note associate una per tasto.

Per mezzo del programma PIC Timer puoi impostare il delay che ottieni per mezzo del timer ma devi fare attenzione a questo fatto:

Supponiamo di voler generare una frequenza da 1KHz ovvero il cui periodo e' 1 ms. Questo non significa che il timer deve creare un ritardo di 1ms. Supponendo di avere una nota con duty cycle del 50% ovvero mezzo periodo acceso e mezzo spento, devi avere che per 500us l'altoparlante e' acceso e per 500us i l'altoparlante e' spento. La somma dei due tempi e' proprio il periodo di 1ms. Quindi con il timer devi avere una base tempi di 500us e ad ogni interrupt devi invertire il bit associato all'altoparlante.
Con frequenze diverse calcola il periodo T (T = 1/ f) ovvero l' inverso della frequenza e imposta il timer a meta' del tempo.
Quindi alla pressione di ogni tasto associ un valore del timer diverso.

Saluti,

Mauro


Chiedo scusa all'amico GUIDO ma avevo perso di vista la risposta al topic ma sicuramente non avrei saputo spiegarlo meglio di come ha fatto MAURO :p

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Akuryu
  • Avatar di Akuryu
  • Premium Member
  • Premium Member
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login