AD9833 szału zaraz dostanę :)

Pytania, kody i porady dotyczące nie tylko Bascom.
ODPOWIEDZ
Awatar użytkownika
tomaszdko
Posty: 72
Rejestracja: 06 gru 2018, 19:58

AD9833 szału zaraz dostanę :)

Post autor: tomaszdko » 05 wrz 2021, 20:10

Niby prosta obsługa modułu AD9833 (kilka rejestrów po spi lub shiftout )a jednak nie bardzo . Wzorowałem się z stron

http://elektron.ucoz.ua/load/izmerenija ... 3/2-1-0-84
http://microsin.net/adminstuff/hardware ... rator.html

i niestety poległem :/ . Programy przerabiałem pod xmega , chodziły ale nie tak jak powinny (nie ta częstotliwość lub czasami cisza) .
Ma ktoś kawałek kodu z zapisem do rejestrów tak by naprzykład widzieć na oscyloskopie częstotliwość 10kHz w sinus , 2kHz prostokąt .
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: AD9833 szału zaraz dostanę :)

Post autor: niveasoft » 06 wrz 2021, 11:46

Na Forum MCS jest kod (02/2020) i przykłady autorstwa O-Family ->
https://www.mcselec.com/index2.php?opti ... ght=ad9833

Trzeba być tam zalogowanym by móc widzieć załączniki. W razie problemu napisz.
Awatar użytkownika
tomaszdko
Posty: 72
Rejestracja: 06 gru 2018, 19:58

Re: AD9833 szału zaraz dostanę :)

Post autor: tomaszdko » 09 wrz 2021, 13:34

Dobra jakoś poszło . Więc tak by zaprogramować AD9833 przez spi trzeba skonfigurować samo SPI na MODE2

Config Spid = Hard , Master = Yes , Mode = 2 , Clockdiv = Clk64 , Data_order = msb , Ss = auto
Open "SPId" For Binary As #12

AD9833 ma inny standart clock-spi , musi zaczynać się zboczem opadającym jak w DS pokazano na stronie 4 , rysunek 4 (xmega w MODE=0 ma zbocze narastające , więc dajemy MODE=2 ) .
Najprościej skonfigurować wysyłając 4 word :

  1.    k(1)=&B00100001_00000000  '- włącza reset i możliwość zapisu częstotliwości
  2.    k(2)=&B01000000_11111111  '- ustawienie czestotliwości
  3.    k(3)=&B01000000_00000000  '- ustawienie czestotliwości
  4.    k(4)=&B00100000_00000000  '-wyłączenie reset i zapis
Tak zazwyczaj wyglądają dane do wprowadzenia by skonfigurować AD9833 ale to nie koniec bo trzeba zamienić MSB z LSB używając polecenia SWAP
  1.    swap k(1)
  2.    swap k(2)
  3.    swap k(3)
  4.    swap k(4)
i dopiero można wysłać po SPI przez polecienie PRINT
  1.     Print #12 ,k(1)
  2.     Print #12 ,k(2)
  3.     Print #12 ,k(3)
  4.     Print #12 ,k(4)
Dobra , teraz muszę pokombinować z 2 rejestrami częstotliwości by wrowadzić płynnie częstotliwość (zawsze muszą komplikować , 2 bajty 16 bit w których trzeba użyć po 14 bit ostatnich czyli 28 bit ehhh)
ODPOWIEDZ