Witaj,
Arturze, najpierw zaglądnij do
tego dokumentu, strona 5. Strona 6 mówi co powinna zawierać wysyłana ramka danych oraz jak liczyć częstotliwość wyjściową.
Cytat:...Wiem, że wysyłamy bit po bicie, natomiast nie doszukałem się 'zgrania' linii CL z liniami Data...
Tak, wysyłamy bit po bicie. W tym programie generowanie impulsu na linii CL robione jest w funkcji
Zegarek.
Cała ramka sterująca układ wysyłana jest w podprogramie
Synteza. Analizując więc pętlę tego podprogramu wysyłającą 13 bitów słowa z freq:
- pętla
for, której wartością iteracyjną jest zmienna A,
- sprawdzamy A-ty bit w słowie z freq
- jeżeli jest 1 to ustawiamy Data=1, jeśli 0 to linia Data=0
- skok do podprogramu Zegarek, w którym:
> czekamy 10us,
> ustawiamy linię CL=1,
> czekamy 10us,
> ustawiamy linię CL=0,
> czekamy 10us,
> wychodzimy z podprogramu Zegarek.
- kolejny obieg pętli, ze zmienną A zwiększoną o wartość 1
Takim oto sposobem wysyłamy 13 bitów słowa z freq. W dalszej części podprogramu
Synteza wysyłane są pozostałe bity słowa sterującego syntezę.
Jak już piszesz swoją wersję sterowania syntezą, to możesz użyć sprzętowego SPI do wysyłania.
Całe słowo sterujące syntezy ma długość 24 bitów, więc pełne 3 bajty. Sprzętowe SPI zapewni prawidłowe timmingi przebiegów. Nie trzeba się będzie bawić w programowe opóźnienia, a i program powinien być bardziej czytelny.