<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=13792&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-12-07T22:07:02+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=13792&amp;mode</id>
<entry>
<author><name><![CDATA[tomek]]></name></author>
<updated>2015-12-07T22:07:02+01:00</updated>
<published>2015-12-07T22:07:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13792&amp;p=147360#p147360</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13792&amp;p=147360#p147360"/>
<title type="html"><![CDATA[Re: DDS - AD9850 problem z programowaniem szeregowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13792&amp;p=147360#p147360"><![CDATA[
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ć ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=178">tomek</a> — 7 gru 2015, o 22:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tomek]]></name></author>
<updated>2015-12-07T00:10:44+01:00</updated>
<published>2015-12-07T00:10:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13792&amp;p=147267#p147267</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13792&amp;p=147267#p147267"/>
<title type="html"><![CDATA[DDS - AD9850 problem z programowaniem szeregowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13792&amp;p=147267#p147267"><![CDATA[
Wróciłem po dłuższej przerwie do generatorka DDS na AD9850 i włączył mi się od razu problemator  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> <br />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 ....<br />Najpierw pokażę fragmenty kodu do programowanie równoległego który działa prawidłowo  ....  / pod ATmega16 / <br /><br />[syntax=c]// przygotowanie portów sterujących do przesyłania do AD9850<br />DDRA = 0xFF ;  // wyjscia<br />PORTA &amp;= (~(1&lt;&lt;PA5)) | (~(1&lt;&lt;PA6)) | (~(1&lt;&lt;PA7));  // wyjscia sterujące przez piny portu A<br />DDRC= 0xFF;    // port data D0-D7   ustawiony jako wyjscie<br />PORTC = 0x00 ;  //  zera na wyjściach DATA 0-7<br /><br />//....<br />uint32_t FreqWord =  Freq * 4294967296/125000000;<br /><br />uint8_t  W4=(FreqWord);           // bajty W4-W1 - częstotliwość    32 bity<br />uint8_t  W3=(FreqWord &gt;&gt; 8);<br />uint8_t  W2=(FreqWord &gt;&gt; 16);<br />uint8_t        W1=(FreqWord &gt;&gt; 24);      // <br />uint8_t  W0=(0x00);               // faza 0<br /><br /><br />PORTA |= (1&lt;&lt;PA5);     // reset AD8950<br />PORTA &amp;= ~(1&lt;&lt;PA5) ;   // reset<br /><br />PORTC=W0 ;              // zapis W0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC=0 ;<br /><br />PORTC=W1 ;              // zapis W1<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC=0 ;<br /><br />PORTC=W2 ;              // zapis W2<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC=0 ;<br /><br />PORTC=W3 ;              // zapis W3<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC=0 ;<br /><br />PORTC=W4 ;              // zapis W4<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC=0 ;<br /><br />PORTA |= (1&lt;&lt;PA6) ;<br />PORTA &amp;= ~(1&lt;&lt;PA6);             // STROBE[/syntax]<br /><br /><br /><br /><br />Zgodnie ze wskazówkami z manuala Analog Device włączyłem w &quot;sposób sprzętowy&quot; tryb szeregowy programowania. Czyli na D0 i D1 przez rezystory +5V i masa na D2 w AD9850.<br />Sygnał szeregowy wchodzi przez D7.<br />Jakby co tutaj jest pdf od AD9850:  <!-- m --><a class="postlink" href="http://www.analog.com/media/en/technical-documentation/data-sheets/AD9850.pdf" >http://www.analog.com/media/en/technica ... AD9850.pdf</a><!-- m --><br />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.<br />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 ....<br />A jak nie działało ani to ani to, zdesperowany &quot;z ręki wpisałem&quot; po prostu ciąg poleceń ustawiających poszczególne bity i na linii Data i na sterujących ....<br />I kaplica ..... nie programuje się .... <br />Albo czegoś jeszcze nie wiem o samym trybie wysyłania danych do AD9850 albo robię jakiś błąd  ......<br />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 ) .<br />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 ... )<br />Nie ma mowy żebym pomylił linie &quot;sprzętowo&quot; ... sprawdzałem kilka razy ....<br />Coś jest nie teges z programem .....<br />Co ciekawsze nie działa nawet &quot;łopatologiczny i prymitywny&quot; sposób zapisu wprost do buforów przez ustawianie i zerowanie portów.<br />Czy ktoś z kolegów potrafi mnie trochę naprowadzić co może być nie tak ?? bo chyba czego jeszcze nie wiem .....<br /><br /><br /><br /><br />[syntax=c]PORTA |= (1&lt;&lt;PA5);     // reset AD8950<br />PORTA &amp;= ~(1&lt;&lt;PA5) ;   // reset<br /><br />//   11101100   10010001 10000010 00000000<br />// W4<br />PORTC |= (1&lt;&lt;PC7);// 1<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC |= (1&lt;&lt;PC7);// 1<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC |= (1&lt;&lt;PC7);// 1<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC |= (1&lt;&lt;PC7);// 1<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC |= (1&lt;&lt;PC7);// 1<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />//W3<br />PORTC |= (1&lt;&lt;PC7);// 1<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC |= (1&lt;&lt;PC7);// 1<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC |= (1&lt;&lt;PC7);// 1<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />//w2 10000010<br />PORTC |= (1&lt;&lt;PC7);// 1<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC |= (1&lt;&lt;PC7);// 1<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />//w1<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />//w0 00000000<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br />PORTC &amp;= ~(1&lt;&lt;PC7);// 0<br />PORTA |= (1&lt;&lt;PA7);<br />PORTA &amp;= ~(1&lt;&lt;PA7);<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br /><br /><br /><br />PORTA |= (1&lt;&lt;PA6) ;<br />PORTA &amp;= ~(1&lt;&lt;PA6);     // STROBE[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=178">tomek</a> — 7 gru 2015, o 00:10</p><hr />
]]></content>
</entry>
</feed>