Jak widać standardowy problem

Nie dogada się programista z kimś od cyfrówki

Jako, że nie umiem pisać programów kiedyś tam zacząłem się bawić w ręczne programowanie syntezy SAA 1057 i nawet się udało
Podchodziłem do tego tematu ze 2 lata. Przy pierwszym podejściu odpuściłem. Wykonałem układ na isostatach i próbowałem programować tą kość wg protokołu rozpisanego w nocie do tej syntezki.
Jednak wtedy nic mi nie wyszło z tego, bo nie wziąłem pod uwagę drgań styków przy przełączaniu, które to drgania powodowały, że zamiast jednego impulsu dostawałem ich całą paczkę. W efekcie tego synteza nie reagowała kompletnie na nic, bo całość danych które pojawiały się na linach była kompletnie niezgodna z protokołem dla SAA1057.
W przypadku gdy słowo programujące zawiera choć jeden bit mniej lub więcej niż przewidziano dla SAA1057 wtedy nici z transmisji.
Po mniej więcej rocznej przerwie zmuszony brakiem umiejętności pisania programów (póki co to mój kamień młyński u szyi) znowu odgrzebałem stary temat.
Tym razem zacząłem od tego, że rozebrałem tuner diory z syntezą na SAA1057
Istniejący tam kwarc (lub cewkę 7x7) - taktujący procesor programujący tą syntezę - wywaliłem, a w jego miejsce wstawiłem wielką indukcyjność złożoną z wszelakich dławików jakie znalazłem na stanie

Zebrało się tego z jakieś 200mH, obstawiłem kondenstarami, które jeszcze nie powodowały zrywania drgań.
Spowodowało to, że taktowanie procesora spadło z mniej więcej 4MHz do jakiś 300Hz.
Przy takim taktowaniu cały proces postawienia syntezy na zadanej częstotliwości od momentu włączenia zasilania tunera trwał jakieś 5-10 minut.
Dzięki temu zapięty diodami świecącymi na linie DLEN, DATA, CLOCK mogłem spokojnie zaobserwować co tam sobie procesor wysyła do syntezy
Na linię danych wpiąłem sobie switcha i zacząłem kombinować i zwierać do maszy pojedyncze bity (jak była wystawiana "1" to ją ściągałem do "0") w słowie programującym podział wewnętrznego dzielnika syntezy.
Dzięki temu przestawiałem syntezę na inne częstotliwości - wynikłe z przestawionego podziału moimi wstawionymi na siłę w słowie "0".
Idąc tym tropem dodałem w końcu do mojego "ręcznego" programatora bramki schmitta z ukłądem RC niwelujące dragania styków.
Na linii DLEN zostawiłem sobie isostata, który po wciśnięciu generował mi potrzebny do transmisji bitów słowa wg protokołu stan "H" a linię DATA i CLOCK obsadziłem switchami. Wszystko oczywiście odkłócone od drgań styków.
Tak skombinowanym układem przy dojściu do wprawy postawienie syntezy na dowolnej częstotliwości (z ustalonych przez twórców tej kostki zakresów), z krokiem 1kHz, 1,25 kHz lub 10kHz, 12,5kHz z wyborem wzmocnienia pętli, itd. Zajmowało mi to od włączenia zasilania jakieś 40sekund. W te 40 sekund wliczona jest transmisja dwóch słów. Słowa kontrolnego ustawiającego czy AM czy FM, krok, wzmocnienie pętli i słowa drugiego o podziale programowalnego dzielnika.
Jak chcesz to Ci mogę zeskanować moje wypociny z tamtego okresu.
Na tej podstawie może łatwiej będzie Ci napisać sobie program.
W czasie testów "ręcznych" stwierdziłem, że jest kilka zależności czasowych, których wcale nie trzeba przestrzegać przy programowaniu syntezki.
Z protokołu jasno wynikało, że stan stabilny na linii danych musi być już zanim wystąpi impuls zegarowy na linii CLOCK.
Z moich doświadczeń wyniknęło, że wystarczy aby tylko przed opadającym zboczem tego zegarowego impulsu był na na linii danych stabilny stan logiczny. A częstotliwość taktu zegara może być nieskonczenie niska. Jeden impuls zegarowy może trwać i 10 minut
Czyli można dojść w programowaniu do połowy słowa, wyjść na miasto, wrócić po kilku godzinach i dokonczyć przesyłanie słowa
Na tej podstawie wykombinowałem sobie później układ ręcznego programowania syntezy TSA6057 po linii I2C
Bez problemu też się to programuje
Jednak dla mnie SAA1057 rządzi, gdyż umożliwia większy zakres wszelakich ustawień. TSA6057 jest torchę okrojony.
SAA1057 wyrabiał mi do około 150MHz i powyżej padał.
Można więc celem ominięcia ograniczenia odpalić sobie zakres AM w syntezie z krokiem 1,25kHz.
Zapiąc sobie tam przeskaler przez 10 i teoretycznie do tych 320MHz (nie sprawdzałem do ilu wyrabia w praktyce AM) powinno to śmigać jak nam tylko preskaler wyrabia.
Będzie piękny krok 12,5kHz
Gdyby chodziło o krok 10kHz to odpalamy AM z krokiem 1,25kHz, wstawiamy preskaler przez 8 (kosta LB3500) i do tych 270MHz spokojnie śmigamy.