Witam,
Czy ktoś sterował (np. poprzez komputer, uC) syntezerem DDS - AD9835? Nie potrafię za nic sterować tym układem, poniżej opiszę dokładniej o co chodzi:
Zbudowałem prosty układ (w oparciu o 'Evaluation Board' ze strony AD), układ taktuje generatorem 50MHz, steruję za pośrednictwem portu LPT. Oryginalny program AD do sterowania tym układem działa bezproblemowo, układ natychmiast reaguje na każde polecenie (zmiana częstotliwości, reset, itp.) Napisałem w C program do sterowania tym układem, wykorzystując identyczne połączenia co dla programu oryginalnego AD.
PDF układu:
Podłączyłem do portu LPT diody LED i w pracy krokowej sprawdzałem wysyłane bity i sygnały na liniach - wszystko się zgadza. Mimo wszystko układem nie da się sterować. Oryginalny program wysyła dane ponad 10 krotnie szybciej niż mój (nawet po usunięciu delay-ów) - ale powiedzmy, że póki co nie zależy mi na szybkości.
I tak np. przy zmianie częstotliwości robię tak: (wcześniej oryginalnym programem inicjalizuje DDS (reset) - nie blokuje to portu)
- Wszystkie bity portu ustawiam na 1.
- Zeruję bit FSYNC.
- Przesyłam po SDATA: 0x3033, zatwierdzając każdy bit wyzerowaniem SCLK (opadające zbocze...).
- Ustawiam bit FSYNC. I wg. mnie po tym układ powinien wytwarzać sygnał, a nic się nie dzieje. Podobnie, jak ustalę jaką częstotliwość programem z AD, po czym próbuję moim programem układ resetować DDS wysyłając 0xF800.
Szukałem w Internecie, ale nie znalazłem żadnych innych opisów sterowania, czy kodów źródłowych. Czy ktoś jest w stanie mi pomóc? Czy ktoś pisał podobne program do sterowania tym układem?
Jeśli to istotne, to mogę zamieścić gdzieś źródła, ale tak jak pisałem
- sprawdzałem LEDami i dane są prawidłowe. Nie mam oscyloskopu cyfrowego, by sprawdzić co wysyła oryginalny program. Może da się jakiś wirtualny port zainstalować, gdzie dane będą zapisywane do pliku? Teraz to wymyśliłem i poszukam...