Hybrid ΣΔ a PWM -> Pasivni propust vyssiho radu
Miroslav Mraz
mrazik na volny.cz
Pondělí Březen 20 18:30:17 CET 2017
Tak se podařilo, kocourovi se to pořád ještě nelíbí ale ten má moc
citlivé uši, slyší i netopýra. Kdyby někdo potřeboval trochu zjemnit PWM
tak kousek kódu je zde
static const unsigned maxpwm = 3000;
void Audio::irq (void) { // přerušení od časovače PWM 16kHz
static unsigned sigma = 0, resample = 0;
static unsigned sample = 0; // 16.bit signed, převedeme na unsigned
static uint16_t pwm; // šířka pulsu od 0 do maxpwm
gTim.SR.BIT.UIF = RESET; // nuluj přerušení
gTim.CCR4 = pwm; // zapiš minulou šířku a pak v klidu počítej
if ((resample & 0x1u) == 0) { // převzorkování 1/2, tedy 8kHz callback
if (sampleCallback) sample = sampleCallback () + 0x8000;
sample *= maxpwm; // finta
}
sigma += sample; // sigma
pwm = sigma >> 16; // delta
sigma &= 0xFFFFu; // zůstatek do dalšího kola
resample += 1;
}
Mrazík
Dne 20.3.2017 v 11:01 Miroslav Mraz napsal(a):
> Myslíte tohle
> http://www.openmusiclabs.com/learning/digital/pwm-dac/dual-pwm-circuits/
> Náhodou to řeším teď taky pro audio signál a zatím mi vychází jako
> nejlepší hybrid čisté PWM a sigma-delta. Sigma-delta má střídu buď 0
> nebo 1, PWM jí může rozlišit podrobněji ale zase na vyšší frekvenci se
> už přesnost ztrácí. Zkusím to nějak zkombinovat, ale zatím nemám přesně
> promyšlené jak, resp. jak počítat hodnoty střídy PWM aby se ta přesnost
> neztrácela. Určitě to nějak půjde, zatím jediný hmatatelný výsledek je
> vyplašení kocoura.
>
> Mrazík
>
> Dne 20.3.2017 v 10:02 Jaroslav Lukesh (seznam IMAP) napsal(a):
>> Mrkněte jak je udělané PWM u Mozzi projektu
>>
>>
>>
>> ----- Původní zpráva ----- Od: "Miroslav Mraz" <mrazik na volny.cz>
>>
>>
>> Jde to udělat taky jako sigma-delta DAC, ale zase to chce rychlý
>> procesor. Zatím jsem nenašel žádný uP, který by to měl udělané jako
>> periferii i když by na tom nic nebylo - je to v podstatě jen akumulace
>> hodnoty a výstup přenosu na pin. Asi by šlo pro tt. účel využít třeba
>> SPI a nějak to alespoň částečně předpočítat a tabelovat. To by pak mělo
>> slušně zvládnout i takové AVRko.
>>
>> Mrazík
Další informace o konferenci Hw-list