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



Teraz jest 11 gru 2024, o 23:04


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 2 kwi 2019, o 11:10 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 368
Pomógł: 0

Witam wszystkich.
Proszę o pomoc w prawidłowym podłączeniu kostki DDS AD9952 do magistrali SPI Atmegi16.
Wpadła mi w ręce taka kość i postanowiłem spróbować swoich sił i wysłać dane do dds-a w celu ustawienia jakiejś częstotliwości na początek. Zapoznałem się wstępnie z procedurą wysyłania słowa
zawierającego informacje o żądanej częstotliwości. Pewnie będą schody do góry, ale od czegoś trzeba zacząć :D .
Chcę skorzystać z obsługi magistrali spi z BB Pana Mirka.

Na ten moment mam następującą konfigurację pinów Atmegi16:

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


Następnie Wyprowadzenie pinów DDS, które powinienem podłączyć:

Obrazek

I/O UPDATE i RESET rozumiem, ale reszta nie do końca jest dla mnie jasna, a nie chcę czegoś sknocić. W związku z powyższym proszę o podpowiedź. Z góry dziękuję.

Poprawiłem rys...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2019, o 11:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Przecież w nocie poniżej rysunku pinów które wstawiłeś masz tabelę z opisem co który pin robi i dlaczego ;)

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2019, o 11:59 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 368
Pomógł: 0

Dzięki za odzew.
No tak. Wszystko jest w nocie, ale nie zawsze jest to jasne dla każdego. Zresztą jest to moje pierwsze podejście do SPI. Co wyczytałem:

I/O UPDATE odpowiada za zatwierdzenie zmian nowej częstotliwości. Nie wiem, czy dobrze to ująłem. Jeśli wyślę dane i nie podam sygnału na ten port, to nic się nie zmieni.
SDIO. Jeśli korzystamy z magistrali 3 przewodowej, to jest to tylko wejście danych, a jeśli dwa przewody, to jest to transfer w obu kierunkach.
SCLK to wejście zegarowa, taktowanie. W takt tego sygnału następuje wymiana danych.
CS to wybór, czy korzystamy z jednego czipa, czy więcej. (Tu pewnie muszę ustalić)
RESET to reset.

Natomiast w Atmedze mam MOSI MISO....



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2019, o 12:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1164
Lokalizacja: Kraków
Pomógł: 93

Jak ja to rozumiem:
AD9952 -- ATmega
RESET -- PB2
I/O UPDATE -- PB3
CS -- SS - wybór urządzenia do komunikacji. Pin dedykowany dla sprzętowego SPI, ale możesz wybrać inny pin
SDIO -- MOSI - wejście danych dla AD9952, a MOSI to Master Output Slave Input. Atmega jest Masterem
SDO -- MISO - analogicznie jak wyżej.
SCLK -- SCK - wejście zegarowe AD9952, sygnał generowany przez Atmegę.

Nie wiem, czy dobrze rozpisałem, ale wydaje mi się, że tak będzie :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2019, o 15:56 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 368
Pomógł: 0

Dziękuję Marhef.
Nie zdążyłem odpisać, a musiałem się ewakuować do domu. Jutro zobaczę. Muszę jeszcze trochę prześledzić temat tego DDS-a w nocie i zasadę działania ISP i jak to się wszystko ma do siebie. Coraz więcej rozumiem, ale muszę jeszcze trochę popracować, żeby nie zamęczać postami co chwilę. Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2019, o 13:43 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 368
Pomógł: 0

Witam ponownie.
No więc udało mi się jakoś odpalić DDS-a. Działa sterowanie po SPI (hardware spi). Nie mogę zmieniać częstotliwości póki co. Jak wklepię jakąś w main.c, to wysyła słowo FTW i wychodzi
z DDS-a. Na początek utworzę kilka zmiennych freq... i spróbuję w pętli for przełączać przyciskiem w pętli, bo tak to muszę bez przerwy kompilować i wgrywać. Na ten moment i tak bardzo się cieszę, że wystartowało :D . Dzięki jeszcze raz Marhef.
Jedyne, co mi trochę nie pasuje, to mała odchyłka. Jeśli generuję 1MHz, to wychodzi 1,000,006. Jak generuję 30MHz, to generuje 30,000,140. Muszę sprawdzić z innym miernikiem-może jutro.

Liczę tak:

2^32=4294967296

Dalej (4294967296 * częstotliwość chciana) / taktowanie DDS-a, czyli 400MHz

Czyli (4294967296 * 30,000,000) / 400,000,000 ---> przecinki tylko dla zobrazowania w poście. No i miernik częstotliwości wyświetla 30,000,140.

Nie wiem, czemu tak się dzieje, ale będę kombinował. Może ktoś coś doradzi ???. Pozdrawiam.



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: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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