Witam.
Może i głupio, ale z ciekawości napisałem programik, którego jedynym zadaniem jest przepuszczanie podanego na wejście ADC dzwięku przez mikroprocesor atmega8 tak, że wychodzi na PWM1a. W sumie to nawet poniekąd mi się to udało, dzwięk przechodził, ale wyjściowa jakość nie była zadowalająca.
Większość paramerów w programie dobrałem doświadczalnie...
Otóż:
-jest sobie kod
No... Definicja kwarca nie jest pomyłką!!!
No więc sprawa wygląda następująco:
atmega chodzi na zewnętrzym kwarcu 27 MHz, ale w bascomie zdefiniowałem go jako 100kHz... TO SIĘ NAZYWA OVERCLOCKING A'LA HARDCORE !!!!!
Sprawdziłem, że im mniejszą wartość kwarcu podawałem w bascomie, tym lepszej jakości dzwięk wychodził... Więc do tego doszedłem... Właściwie, to nie wiem, jakie jest próbkowanie...
Od strony technicznej - sygnał ze źródła jest podłączony bezpośrednio do ADC, a głośnik bezpośrednio do PWM1A. Dzwięk przechodzi, ale jest taki "metaliczny"....
I są szumy...
Tak się zastanawiam; swoim programem wykorzystałem duże zasoby mikroprocka, a w międzyczasie na elektrodzie sa projekty odtwarzaczy wav dobrej jakości na PWM'ie, które robią podczas odtwarzania tysiące innych rzeczy...
No to teraz pytam; jak mogę optymalnie dobrać częstotliwości, taktowania , próbkowania i inne? Co powinienem zmienić, aby dzwięk wychodzący był dobrej jakości? Czy da się to zrealizować za pomocą wbudowanego pwm, czy trzeba do tego zewnętrznego DAC'a???? A może jakaś filtracja sygnału wejściowego i wyjściowego?
Na razie poznałem trochę teorii odnośnie próbkowania, ale jeszcze wielu rzeczy nie rozumiem...
Dodam jeszcze, że PWM w moim programie jest 8 -bitowy, bo tak najlepiej działa ; przy 10 bitach dzwięj jest piskliwy....
Z góry dziękuje za pomoc, i z góry przepraszam za ten draczny temat
Może i głupio, ale z ciekawości napisałem programik, którego jedynym zadaniem jest przepuszczanie podanego na wejście ADC dzwięku przez mikroprocesor atmega8 tak, że wychodzi na PWM1a. W sumie to nawet poniekąd mi się to udało, dzwięk przechodził, ale wyjściowa jakość nie była zadowalająca.
Większość paramerów w programie dobrałem doświadczalnie...
Otóż:
-jest sobie kod
$crystal = 100000
$regfile = "m8def.dat"
Config Adc = Single , Prescaler = Auto , Reference = Internal
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down
Start Adc
Dim X As Word
Do
X = Getadc(5)
X = Pwm1a
Loop
No... Definicja kwarca nie jest pomyłką!!!
No więc sprawa wygląda następująco:
atmega chodzi na zewnętrzym kwarcu 27 MHz, ale w bascomie zdefiniowałem go jako 100kHz... TO SIĘ NAZYWA OVERCLOCKING A'LA HARDCORE !!!!!
Sprawdziłem, że im mniejszą wartość kwarcu podawałem w bascomie, tym lepszej jakości dzwięk wychodził... Więc do tego doszedłem... Właściwie, to nie wiem, jakie jest próbkowanie...
Od strony technicznej - sygnał ze źródła jest podłączony bezpośrednio do ADC, a głośnik bezpośrednio do PWM1A. Dzwięk przechodzi, ale jest taki "metaliczny"....
I są szumy...
Tak się zastanawiam; swoim programem wykorzystałem duże zasoby mikroprocka, a w międzyczasie na elektrodzie sa projekty odtwarzaczy wav dobrej jakości na PWM'ie, które robią podczas odtwarzania tysiące innych rzeczy...
No to teraz pytam; jak mogę optymalnie dobrać częstotliwości, taktowania , próbkowania i inne? Co powinienem zmienić, aby dzwięk wychodzący był dobrej jakości? Czy da się to zrealizować za pomocą wbudowanego pwm, czy trzeba do tego zewnętrznego DAC'a???? A może jakaś filtracja sygnału wejściowego i wyjściowego?
Na razie poznałem trochę teorii odnośnie próbkowania, ale jeszcze wielu rzeczy nie rozumiem...
Dodam jeszcze, że PWM w moim programie jest 8 -bitowy, bo tak najlepiej działa ; przy 10 bitach dzwięj jest piskliwy....
Z góry dziękuje za pomoc, i z góry przepraszam za ten draczny temat