Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 20 mar 2026, o 14:01


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
Autor Wiadomość
PostNapisane: 7 gru 2015, o 00:10 
Offline
Użytkownik

Dołączył(a): 16 sty 2012
Posty: 78
Pomógł: 1

Wróciłem po dłuższej przerwie do generatorka DDS na AD9850 i włączył mi się od razu problemator :lol:
Napisałem z grubsza cały kod programu ... przetestowałem i działa ok ale chciałem zminiaturyzować płytkę i żeby pozbyć się części ścieżek postanowiłem programowanie częstotliwości zmienić z równoległego na szeregowe .... i się zaproblemiłem ....
Najpierw pokażę fragmenty kodu do programowanie równoległego który działa prawidłowo .... / pod ATmega16 /

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.





Zgodnie ze wskazówkami z manuala Analog Device włączyłem w "sposób sprzętowy" tryb szeregowy programowania. Czyli na D0 i D1 przez rezystory +5V i masa na D2 w AD9850.
Sygnał szeregowy wchodzi przez D7.
Jakby co tutaj jest pdf od AD9850: http://www.analog.com/media/en/technica ... AD9850.pdf
Napisałem już kilka wersji oprogramowania do wgrywania ale nie udało mi się zaprogramować przez D7 tak jak robiłem przez cały port równolegle.
Pomysł na program z transmisją szeregową wziąłem z przykładów niebieskiej książki Mirka z rozdziału o transmisji przez SPI. Potem jak działało napisałem inną wersję w oparciu o pętlę For ....
A jak nie działało ani to ani to, zdesperowany "z ręki wpisałem" po prostu ciąg poleceń ustawiających poszczególne bity i na linii Data i na sterujących ....
I kaplica ..... nie programuje się ....
Albo czegoś jeszcze nie wiem o samym trybie wysyłania danych do AD9850 albo robię jakiś błąd ......
W manualu fabrycznym jest info że programowanie polega na wysłaniu 40 bitów ( po każdym W_CLK ) a na końcu sygnał FQ_UP po którym scalak przepisuje dane do bufora wewnętrznego i zaczyna pracować. Przed programowaniem musi być reset ( trwający co najmniej kilkanaście cykli zegara 125MHz ) .
Kolejność to najpierw 32 bity wartości mapujące częstotliwość, rozpoczynając od LSB a potem 8 bitów zawierających fazę ( ostatni bajt z fazą + 3 bity, wysyłałem same zera ... )
Nie ma mowy żebym pomylił linie "sprzętowo" ... sprawdzałem kilka razy ....
Coś jest nie teges z programem .....
Co ciekawsze nie działa nawet "łopatologiczny i prymitywny" sposób zapisu wprost do buforów przez ustawianie i zerowanie portów.
Czy ktoś z kolegów potrafi mnie trochę naprowadzić co może być nie tak ?? bo chyba czego jeszcze nie wiem .....




Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2015, o 22:07 
Offline
Użytkownik

Dołączył(a): 16 sty 2012
Posty: 78
Pomógł: 1

Doszedłem ....działa już ok . Najpierw trzeba wczytać w trybie równoległym stan linii danych d0 do d2 .... a dopiero później normalnie programować ...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO