Skocz do zawartości
IGNORED

AD1955+6*AD979=DAC+pytania


trryt

Rekomendowane odpowiedzi

Się zabieram za napisanie programu sterującego tymi DACami, chodzi głównie o ustawienie jednego na lewy drugiego na prawy, ale może przy okazji zrobię regulację głośności z pilota. Napiszę to w Bascomie. Ustawienia AD1955 raczej są zrozumiałe i sensowne, ale mam jedno pytanie. Można w nim włączyć "krzywą deemfazy" na 44,1kHz. Co to jest? Bo z tego co widziałem to było to coś stosowanego na starych płytach, a teraz nie i raczej nie ma sensu tego włączać, ale chciałbym wiedzieć dlaczego. Na forum słowo deemfaza występuje raczej tylko odnośnie tunerów, a o cd widziałem tylko jeden wpis i to też w stylu że to coś co było, a teraz jest nie używane.

Napisałem ten program, a właściwie dwa, jeden to wersja podstawowa - tylko ustawia DACi i wyłącza procesor (żeby nie zakłucał), a drugi ma robi to samo (poza wyłączeniem tzn zależy to od stanu jednego wejścia procesora "wylacz" jeżeli jest na nim 0 to procesor sie uśpi, jeżeli 1 to czeka na pilota), a potem czeka na sygnały od pilota RC5 i reaguje na Vol+, Vol-, Mute oraz On/Off. Ten ostatni powoduje ustawienie głośności na max i wyłączenie procesora, oczywiście włączyć się go już tak nie da. Program po odebraniu komendy z pilota miga diodą. Na razie głośność jest zmieniana o 8 ale to raczej trzeba (mocno) zwiększyć, bo nie wiem po co oni zrobili to na 14 bitach, czyli mamy ponad 16000 możliwych poziomów głośności!?!! to żeby sciszyć do zera by trzeba tego pilota trzymać strasznie długo;)

Wymyśliłem to na pilota, bo jakby taki DAC miał być wbudowany w CD to lepsza jedna dziura na odbiornik niż kilka na przyciski, no i wygoda jak się nie ma wzmacniacza z pilotem.

 

Programy narazie sprawdziłem tylko w symulatorze, no bo na razie bez płytki pod DAC to nie wiele się w sprzęcie sprawdzi - tylko czy odbiór pilota dobrze działa. To że wszystko jest podeklarowane jako zmienne, nawet to co by mogło być stałe (np.: lewy,prawy) wynika z błędu Bascoma, on po prostu nie umie przez spi wysłać stałej....

 

Jakby ktoś myślał że taka konfiguracja to coś strasznego to proszę bardzo jaki krótki i prosty jest podstawowy program.

____________________________________________________________________________________________

dim Lewy As Word , Prawy As Word

Config Spi = Soft , Data Order = Msb , Spioutedge = Rising , Dout = P3.4 , Clk = P3.3, Nocs=1

cslewy alias p3.1

csprawy alias p3.2

dioda alias p1.3

Spiinit

Lewy = &B0000100000000000

Prawy = &B0000110000000000

Reset cslewy

delay

Spiout lewy , 2

delay

Set cslewy

delay

Reset csprawy

delay

Spiout prawy , 2

delay

Set csprawy

reset dioda 'migniecie dioda, ze skonczone

waitms 200

set dioda

powerdown

end

____________________________________________________________________________________________

 

A to ten z regulacją głośności:

____________________________________________________________________________________________

 

Dim Lewy As Word , Prawy As Word , Lewymute As Word , Prawymute As Word

dim lewyvol as word, prawyvol as word, lmaxvol as word, pmaxvol as word

dim volume as word

Config Spi = Soft , Data Order = Msb , Spioutedge = Rising , Dout = P3.4 , Clk = P3.3, Nocs=1

Dim Kod As Bit, mute as bit

Dim Command As Byte , Addres As Byte

Reset Tcon.0

On Int0 Receiverc5

Enable Int0

Enable Interrupts

cslewy alias p3.1

csprawy alias p3.2

wylacz alias p1.2

dioda alias p1.3

Spiinit

Lewy = &B0000100000000000

Prawy = &B0000110000000000

Lewymute = &B0100100000000000

Prawymute = &B0100110000000000

lewyvol = &B1111111111111110

prawyvol = &B1111111111111111

lmaxvol = &B1111111111111110

pmaxvol = &B1111111111111111

volume = &B0011111111111111

mute = 0

 

Reset cslewy

delay

Spiout lewy , 2

delay

Set cslewy

delay

Reset csprawy

delay

Spiout prawy , 2

delay

Set csprawy

call mignij

if wylacz = 0 then

powerdown

else

Do

If Kod = 1 Then

Disable Int0

 

If Command = 17 Then ' ciszej

Call Voldown

End If

 

If Command = 16 Then ' glośniej

Call Volup

End If

 

If Command = 13 Then ' mute

If Mute = 0 Then

Reset cslewy

delay

Spiout lewymute , 2

delay

Set cslewy

delay

Reset csprawy

delay

Spiout prawymute , 2

delay

Set csprawy

Mute = 1

call mignij

Else

Reset cslewy

delay

Spiout lewy , 2

delay

Set cslewy

delay

Reset csprawy

delay

Spiout prawy , 2

delay

Set csprawy

Mute = 0

call mignij

End If

End If

 

If Command = 12 Then 'control off

Reset cslewy

delay

Spiout lmaxvol , 2

delay

Set cslewy

delay

Reset cslewy

delay

Spiout pmaxvol , 2

delay

Set cslewy

delay

Reset csprawy

delay

Spiout lmaxvol , 2

delay

Set csprawy

delay

Reset csprawy

delay

Spiout pmaxvol , 2

delay

Set csprawy

powerdown

End If

 

 

Kod = 0

Enable Int0

End If

Loop

endif

 

Receiverc5:

Getrc5(addres , Command)

Kod = 1

Return

 

 

Sub Volup

if volume=8 then

volume=volume-8

call volset

call mignij

endif

End Sub

 

Sub Volset

lewyvol=volume

shift lewyvol, left,2

lewyvol = lewyvol or 2

prawyvol=volume

shift prawyvol, left,2

prawyvol= prawyvol or 3

Reset cslewy

delay

Spiout lewyvol , 2

delay

Set cslewy

delay

Reset cslewy

delay

Spiout prawyvol , 2

delay

Set cslewy

delay

Reset csprawy

delay

Spiout lewyvol , 2

delay

Set csprawy

delay

Reset csprawy

delay

Spiout prawyvol , 2

delay

Set csprawy

End Sub

 

sub mignij

reset dioda

waitms 200

set dioda

end sub

____________________________________________________________________________________________

Dzięki, to (programowanie mikrokontrolerów) nie jest takie straszne, szczególnie w tym języku, chociaż wiadomo że jak ze wszystkim trzeba trochę posiedzieć żeby załapać. Procka oczywiście będzie można zamówić, tylko nie wiem kiedy, bo pracę nad główną płytką na razie nie idą, a bez niej nie mogę tego przetestować, no a wysyłać coś nie sprawdzonego raczej nie ma sensu. Ale za to zrobiłem płyteczkę do tego sterownika. Zworką (to może być też przełącznik) się wybiera czy ma skonfigurować i zasnąć, czy odbierać pilota.

Przetestowałem program na płytce testowej do '51 (nie tej powyżej) i działa, tzn odbiera pilota i reaguje dobrze, po komendzie uśpeienia przestaje reagować. Nie wiem czy na pewno wyłącza oscylator, ale w helpie do bascoma piszą "The power down mode stops the system clock completely. The only way to reactivate the micro controller is by system reset.", no a czemu mieliby kłamać;) ewentualnie można to jeszcze sprawdzić w nocie AT89C2051. Nie wiem też czy dobrze wysyła komendy SPI, bo AD1955 jeszcze nie gotowy, a oscyloskopu nie mam (tzn mam ale nie działa).

  • 7 miesięcy później...

Trochę zamierzam z tym ruszyć. Złożyłem to ale nie na płytce która była w wątku tylko na uniwersalnej i zmieniły się trochę piny - tak było wygodniej. Program się mieści w 89C2051. Kwarc procesora to 11,0592MHz. Piny są ustawione następująco:

P1.4 (16) - CDATA

P1.5 (17)- CCLK

P1.6 (18)- /CLATCH - PRAWEGO AD1955

P1.7 (19)- /CLATCH - LEWEGO AD1955

P1.3 (15)- LED - miga po skonfigurowaniu i po odebraniu kodu pilota

P1.2 (14)- TRYB - jeżeli jest podpięty do masy to procesor się wyłącza po skonfigurowaniu AD, jeżeli do + to działa cały czas, odbiera pilota może regulować głośność i włączać mute, można też go wyłączyć z pilota. Reaguje na piloty RC5, przyciski od głośności, mute oraz wyłącznik. Jeżeli procesor zostanie uśpiony - wyłączony to można go obudzić tylko resetem.

P3.2 (7)- odbiornik pilota - ja mam SFH5110-36

Sterownik wygląda jak na zdjęciu, teraz czeka na płytkę pod AD1955. Już zamierzam o niej poważniej myśleć, rozglądam się za częsciami, trzeba projektować. Ale to wszystko potrwa, bo nawet jak zarojektuje, to sam nie będę robił tylo oddam do zakłądu, a za to jeszcze trzeba zamówić transformator. No i na razie nie mam do czego tego podłączyć bo nie mam CD z I2S, ale do testowania zamierzam wykorzystać kartę dźwiękową na PCM2706 - ona ma wyjście I2S - ale to też muszę zaczekać aż dostanę płytkę, bo to trzeba zmodyfikować (pin FSEL podłączyć do masy zamiast +, a niestety pin tuż obok musi zostać do + a są połączone) a tej co mam nie chcę katować.

A i jeszcze zdjęcie.

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Zacząłem też płytkę. Narazie przerysowałem schemat z noty do eaglea i już trochę rysuję płytkę. Przysyłam schemat bo zawsze lepiej jak to ktoś inny obejrzy - może czegoś nie zauważyłem. Mam trochę wątpliwości:

- z noty nie wynika (w każdym razie ja tego nie widzę) czy trzeba resetować tego DACa po włączeniu, czy reset służy tylko jakby się chciało go zresetować później, albo wprowadzić w powerdown, ja dałem /RST na stałe do DVDD ale myślę że może tam trzeba dać coś co go zresetuje po włączeniu, albo układ w stylu DS1813, a najlepiej żeby to robił mikroprocesor z mojego sterownika

-mute dałam na stałe do masy, bo można go i tak wyciszyć programowo

-VBIAS, tego też trochę nie rozumiem, sądzę że tak z tym dzielnikiem jak to zrobiłem jest lepiej, piszą w nocie "for best performence", ale do końca nie wiem czy tak jest dobrze.

- te części podpisane open - one mają być czy nie, może zrobić miejsce żeby w razie czego je dać?

 

Moje założenia:

- dual mono - płytka z jednym DACiem dla jednego kanału i blokiem analogowym "single-ended" z rysunku 12

- zegar na osobnej płytce, na płytce DAC tylko połączenie do MCLK

- korzystam z przejściówki pod układ SMD o której pisałem powyżej - zrobiłem bibliotekę dla Eagla

- brak jakichkolwiek dekoderów - po prostu I2S

Poniżej schemat tak zgrubsza, tyle ile się da tu wkleić...

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )
  • 2 tygodnie później...

Wstępna wersja płytki DACa.

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

senicz->

Takich szerokich DIPów to chyba nikt nie produkuje;) To jest przejściówka, taka:

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Matthew->

Racja, tylko na razie nie wiem jak to zrobić w Eagleu. Bo zakładam że jest jakaś automatyczna metoda, a nie muszę rysować polygonów wszędzie gdzie jest wolne miejsce.

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Korespondowałem z dwoma forumowiczami o tym DACu i właściwie namówili mnie na zastosowanie AD1896 do recklokingu. Na jego wyjściu (a więc wejściu obydwu AD1955) będzie 96kHz (czyli maksimum ile ta kostka może wyciągnąć w trybie Master) a na wejściu mogą być różne częstotliwości próbkowania i właśnie AD1896 dostosowuje się do nich automatycznie. Już zacząłem płytkę na której ma być AD1896, ADUM1401 do galwanicznej izolacji od napędu oraz SN75173. Nie wiem czy ten ostatni jest konieczny (to jest odbiornik lini różnicowej). Ale tak wyczytałem że lepiej transmisję I2S z napędu do DACa robić różnicowo (po skrętce cat 5e) i sądze że to prawda bo I2S jest raczej do transmisji w ramach jednej płytki a nie do ciągnięcia go na zewnątrz kablami. A więc w DACu ten układzik, a w napędzie SN75174.

To ma być zewnętrzne - niezależny DAC z wejściem I2S, a może też SPDIF. Co rozumiesz przez "uniwersalne". Myślałem żeby na tej płytce z AD1896 zrobić miejsce pod dekodetr CSa chociaż SPDIF mi niezbyt potrzebny, a te kostki drogie, ale może na przyszłość. Jak mi ktoś poda schemat "otoczenia" CSa to może przerysuję i dołączę do tej płytki.

senicz, preamp BAT'a VK-30 ma regulacje jakoś cyfrowo... słyszałem go i nie uważam by psuł dźwięk... chyba ważne jest jak to się zrobi i trzeba wiedzieć jak to zrobić i można i cyfrowo...

jesli celujesz w thd na poziomie ponizej 0.001% i dla malych syganalow tez male to cyfrzaki sa kiepskie. Oczywiscie jak masz reszte toru kiepska to tego nie uslyszysz. No chyba ze uzywasz do regulacji DSP.

A teraz bardzo standardowe zasilacze do tego DACa. Właściwie to samo co jest na stronie Veterana, tylko że zrobione pod kondensatory jakie mam i dodany bezpiecznik. I chciałbym użyć LT317 i LT337 o ile uda mi się zdobyć te układy. Zasilacz +/-12V:

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

post-4476-100002018 1170306394_thumb.gif

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

I na 5V. Potrzebne bedę dwa takie, dla cześci cyfrowej i analogowej AD1955. Jeżeli dojdzie AD1896 to jeszcze jeden taki sam tylko z rezystorami na 3.3V:

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

post-4476-100002016 1170306397_thumb.gif

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Efekt działania Eagle3D

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

I jeszcze zasilacze:

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

post-4476-100001676 1170306844_thumb.jpg

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Bardzo wstępna wersja płytki pod AD1896, AD1401 i SN75173.

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )
  • 2 tygodnie później...

Jeden z forumowiczów zainteresował mnie układem PLL1708:

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

To bardzo dobre rozwiązanie zegara, odpada problem trudnych w zdobyciu kwarców na częstotliwości "audio". Zamiast tego jest 27MHz. Postanowiłem dodać tą kość do płytki upsamplera. Jedyne co mnie zastanawia to to że ona generuje zegar w standardzie 3.3V a AD1955 jest na 5V. Ale patrząc na minimalny wejściowy poziom jedynki logicznej AD1955 i wyjściowy PLL1708 sądzę że to powinno działać bez problemu. Może ktoś mnie upewni że dobrze myślę lub wyprowadzi z błędu? Poniżej nowa wersja płytki, na razie tylko w 3D bo jeszcze muszę coś poprawić. Dodać punkty do połączenia PLL1708 z procesorem sterującym i reset AD1896 (oraz AD1955) powinien być też sterowany z procesora. Dzięki temu procesor najpierw konfiguruje generator zegara (PLL), w czasie czego wszystkie AD są utrzymywane w resecie, a dopiero potem AD1955 są konfigurowane i potem wszystkie AD wychodzą z resetu.

Zasilanie układów na 3.3V (PLL1708 i częściowo AD1896) jest na tej płytce. Ten stabilizator to nie LM317 tylko LM1086 (wersja 3.3V). W Eaglu nie go było a mają takie sam układ wyprowadzeń więc tak jest. A więc 3.3V jest z 5V (cyfrowego) przez stabilizator LDO.

Poprawiona wersja, pewnie później, styczeń zapowiada mi się pracowity.

Ciekawe skąd ja takie płytki pod SMD wezmę (kto mi to tak dobrze wykona) ale o tym później będę myślał. Ciekawe czy ktoś by był zainteresowany takim czymś. Ja uważam że takie rozwiązanie (I2S wyciągnięty z napędu różnicowo) jest o wiele lepsze od SPDIF, a wcale nie jest to taka ingerencja w napęd. Trzeba w nim tylko umieścić SN75174 na jakiejś małej płytce i doprowadzić do niego zailanie i I2S - to przecież tylko dwa połączenia wiecej niż przy montażu clocka.

post-4476-100000938 1170308005_thumb.jpg

post-4476-100000939 1170308003_thumb.jpg

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )
  • Pokaż nowe odpowiedzi
  • Zarchiwizowany

    Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.



    • Ostatnio przeglądający   0 użytkowników

      • Brak zarejestrowanych użytkowników przeglądających tę stronę.
    • Biuletyn

      Chcesz być na bieżąco ze wszystkimi naszymi najnowszymi wiadomościami i informacjami?
      Zapisz się
    • KONTO PREMIUM


    • Ostatnio dodane opinie o sprzęcie

      Ostatnio dodane opinie o albumach

    • Najnowsze wpisy na blogu

    ×
    ×
    • Dodaj nową pozycję...

                      wykrzyknik.png

    Wykryto oprogramowanie blokujące typu AdBlock!
     

    Nasza strona utrzymuje się dzięki wyświetlanym reklamom.
    Reklamy są związane tematycznie ze stroną i nie są uciążliwe. 

     

    Nie przeszkadzają podczas czytania oraz nie wymagają dodatkowych akcji aby je zamykać.

     

    Prosimy wyłącz rozszerzenie AdBlock lub oprogramowanie blokujące, podczas przeglądania strony.

    Zarejestrowani użytkownicy + mogą wyłączyć ten komunikat oraz na ukrycie połowy reklam wyświetlanych na forum.