Senza abbassare il clock al PIC potresti ipotizzare di generare l'onda quadra senza modulo PWM ma attraverso software utilizzando il timer0 e l'interrupt dello stesso.
In questo modo dovresti avere tutto il tempo di fare anche il resto.
Suoni con PWM
Moderatori:
carloc,
g.schgor,
BrunoValente,
IsidoroKZ
36 messaggi
• Pagina 2 di 4 • 1, 2, 3, 4
0
voti
[13] Re: Suoni con PWM
Salve io dovrei leggere un file wave da SD e riprodurlo la parte iniziale, quella di leggere il file, funziona grazie alle librerie del MikroC ora il problema e come riprodurlo? io ho fatto alcune prove con un wave campionato a 8KHz qualità telefonica quindi ho impostato il PWM a suddetta frequenza e i valori letti man mano li invio al Duty ma quello che si sente sono solo rumori alti.
il PIC che uso è un 18f2550 con clock a 20Mhz e compilatore MikroC l'uscita del PWM e collegata ad un amplificatore senza filtri
Ne sarei grato se qualcuno avesse suggerimenti
il PIC che uso è un 18f2550 con clock a 20Mhz e compilatore MikroC l'uscita del PWM e collegata ad un amplificatore senza filtri
Ne sarei grato se qualcuno avesse suggerimenti
-

guidoi8311
0 2 - New entry

- Messaggi: 66
- Iscritto il: 3 lug 2013, 11:51
0
voti
[14] Re: Suoni con PWM
In uscita al PWM è necessario un filtro passa basso, senza il filtro senti la frequenza del PWM direttamente in uscita all'amplificatore.
Il filtro dovrebbe avere una frequenza di taglio max di 4kHz se la frequenza di campionamento è 8kHz.
La frequenza del PWM deve essere non inferiore alla frequenza di campionamento, ma può essere (anzi meglio) più alta possibile.
Molto importante è che la frequenza con cui vari il duty cycle del PWM sia esattamente uguale alla frequenza di campionamento (nel tuo caso 8kHz).
Il filtro dovrebbe avere una frequenza di taglio max di 4kHz se la frequenza di campionamento è 8kHz.
La frequenza del PWM deve essere non inferiore alla frequenza di campionamento, ma può essere (anzi meglio) più alta possibile.
Molto importante è che la frequenza con cui vari il duty cycle del PWM sia esattamente uguale alla frequenza di campionamento (nel tuo caso 8kHz).
Fabio
0
voti
[15] Re: Suoni con PWM
c1b8 ha scritto:In uscita al PWM è necessario un filtro passa basso, senza il filtro senti la frequenza del PWM direttamente in uscita all'amplificatore.
Il filtro dovrebbe avere una frequenza di taglio max di 4kHz se la frequenza di campionamento è 8kHz.
La frequenza del PWM deve essere non inferiore alla frequenza di campionamento, ma può essere (anzi meglio) più alta possibile.
Molto importante è che la frequenza con cui vari il duty cycle del PWM sia esattamente uguale alla frequenza di campionamento (nel tuo caso 8kHz).
Grazie per la risposta volevo chiederti un'altra cosa e come faccio a calcolare il tempo dopo il quale variare il duty cycle perché io ora come leggo il valore lo invio al duty
-

guidoi8311
0 2 - New entry

- Messaggi: 66
- Iscritto il: 3 lug 2013, 11:51
0
voti
[16] Re: Suoni con PWM
Utilizzerei un interrupt: timer impostato per generare un interrupt ogni 125 micro-secondi.
Nella routine di interrupt cambi il duty cycle del PWM ed imposti un flag per dire al main di andare a leggere il prossimo valore.
Attenzione che una routine di interrupt richiamata ogni 125 us, per non impallare tutto, deve durare molto poco, quindi non leggere la SD nella routine.
Devi anche accertarti che le librerie che utilizzi per leggera il prossimo valore dalla SD non siano troppo lente: devono leggere il valore sicuramente in meno di 125us, sarebbe bene che lo facessero in al massimo 60us.
Questo però non saprei come rilevarlo.
Nella routine di interrupt cambi il duty cycle del PWM ed imposti un flag per dire al main di andare a leggere il prossimo valore.
Attenzione che una routine di interrupt richiamata ogni 125 us, per non impallare tutto, deve durare molto poco, quindi non leggere la SD nella routine.
Devi anche accertarti che le librerie che utilizzi per leggera il prossimo valore dalla SD non siano troppo lente: devono leggere il valore sicuramente in meno di 125us, sarebbe bene che lo facessero in al massimo 60us.
Questo però non saprei come rilevarlo.
Fabio
0
voti
[17] Re: Suoni con PWM
ok grazie per le risposte oggi metterò in pratica i tuoi suggerimenti e vi farò sapere 
-

guidoi8311
0 2 - New entry

- Messaggi: 66
- Iscritto il: 3 lug 2013, 11:51
0
voti
[18] Re: Suoni con PWM
Sono di nuovo qui a chiedervi consigli
ho fatto varie prove e sono riuscito a far riprodurre un file wave campionato a 8KHz ho impostato la frequenza del PWM a 16KHz ed un filtro passa basso a 4KHz ed il tutto funziona perfettamente.
Ora ho provato ad eseguire un file a 22KHz quindi ho impostato il PWM a 44KHz ed il filtro all'incirca la meta di 22Khz ma il file riprodotto si sente rallentato ho cambiato anche quarzo con uno da 40Mhz
ho provato anche a realizzare un buffer software dove mi pre carico circa 200 valori che succesivamente mando in riproduzione e quando questa sta al 50% inizio a riempirla di nuovo ma il risultato non cambia.
Secondo voi dove sbaglio
Ora ho provato ad eseguire un file a 22KHz quindi ho impostato il PWM a 44KHz ed il filtro all'incirca la meta di 22Khz ma il file riprodotto si sente rallentato ho cambiato anche quarzo con uno da 40Mhz
ho provato anche a realizzare un buffer software dove mi pre carico circa 200 valori che succesivamente mando in riproduzione e quando questa sta al 50% inizio a riempirla di nuovo ma il risultato non cambia.
Secondo voi dove sbaglio
-

guidoi8311
0 2 - New entry

- Messaggi: 66
- Iscritto il: 3 lug 2013, 11:51
0
voti
[19] Re: Suoni con PWM
Potrebbe essere che la lettura della scheda SD, con un PIC, non sia così veloce da consentirti un campionamento a 22kHz.
Hai provato a verificare quale sia il tempo che serve per leggere dalla SD?
Hai provato a verificare quale sia il tempo che serve per leggere dalla SD?
Fabio
0
voti
[20] Re: Suoni con PWM
c1b8 ha scritto:Potrebbe essere che la lettura della scheda SD, con un PIC, non sia così veloce da consentirti un campionamento a 22kHz.
Hai provato a verificare quale sia il tempo che serve per leggere dalla SD?
eh come dovrei fare? le funzioni che sto utilizzando non le ho scritte io ma sono interne al linguaggio che sto usando MiKroC comunque di sicuro sono inferiori a 125us perché a a 8Khz funziona tutto alla perfezione
-

guidoi8311
0 2 - New entry

- Messaggi: 66
- Iscritto il: 3 lug 2013, 11:51
36 messaggi
• Pagina 2 di 4 • 1, 2, 3, 4
Chi c’è in linea
Visitano il forum: Nessuno e 93 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)


