<?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=10829&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-02-27T23:55:18+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=10829&amp;mode</id>
<entry>
<author><name><![CDATA[deerjelen]]></name></author>
<updated>2015-02-27T23:55:18+01:00</updated>
<published>2015-02-27T23:55:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10829&amp;p=121274#p121274</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10829&amp;p=121274#p121274"/>
<title type="html"><![CDATA[Re: Za szybkie taktowanie procesora.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10829&amp;p=121274#p121274"><![CDATA[
Już myślałem, że uszkodziłem PLL, bo miałem przez 3 min. konfiguracje 16x16/2/2/2. Ale jednak nie. Zamiana:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">OSC_PLLCTRL |= OSC_PLLSRC_XOSC_gc | 8;</div><br />na<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">OSC_PLLCTRL = OSC_PLLSRC_XOSC_gc | 8;</div><br />pomogła.<br />Dziwi mnie to trochę, bo wg. noty: Initial Value 0x00;<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1870">deerjelen</a> — 27 lut 2015, o 23:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lemurek]]></name></author>
<updated>2015-02-27T19:41:54+01:00</updated>
<published>2015-02-27T19:41:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10829&amp;p=121246#p121246</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10829&amp;p=121246#p121246"/>
<title type="html"><![CDATA[Re: Za szybkie taktowanie procesora.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10829&amp;p=121246#p121246"><![CDATA[
<div class="quotetitle">deerjelen napisał(a):</div><div class="quotecontent"><br />Twój kod wpada w nieskończoną pętlę przy:<br />Składnia: [ Pobierz ] [ Ukryj ]<br />język c<br />// czekanie na ustabilizowanie się generatora<br />        while (!(OSC.STATUS &amp; OSC_PLLRDY_bm));<br />GeSHi<br /></div><br /><br />ale u Ciebie też ta pętla występuje...<br /><br /><div class="quotetitle">deerjelen napisał(a):</div><div class="quotecontent"><br />&quot;na 32 MHz i mnożnikiem PLL na poziomie 16 co też da przed podziałem 128MHz&quot;<br />32 * 16 = 512.<br />Nie doczytałem noty?<br /></div><br /><br /><a href="http://www.atmel.com/Images/Atmel-8210-8-and-16-bit-AVR-Microcontrollers-XMEGA-D_Manual.pdf"  class="postlink">http://www.atmel.com/Images/Atmel-8210-8-and-16-bit-AVR-Microcontrollers-XMEGA-D_Manual.pdf</a><br />strona 61 - 32MHz internal oscillator divided by 4<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">Four different clock sources can be chosen as input to the PLL:<br />2MHz internal oscillator<br />32MHz internal oscillator divided by 4<br />0.4MHz - 16MHz crystal oscillator<br />External clock</div><br /><br />co do kodu pisałem go z głowy i nie testowałem na co dzień stosuje cos takiego i tu pętla działa prawidłowo <br /><br />[syntax=c]void OscPLL(uint8_t pllfactor) {<br /><br />    // uruchomienie generatora 2MHz i ustawienie go jako źródła zegara<br />    OSC.CTRL          =    OSC_RC2MEN_bm;               // włączenie oscylatora 2MHz<br />    while(!(OSC.STATUS &amp; OSC_RC2MRDY_bm));              // czekanie na ustabilizowanie się generatora<br />    CPU_CCP           =    CCP_IOREG_gc;                // odblokowanie zmiany źródła sygnału<br />    CLK.CTRL          =    CLK_SCLKSEL_RC2M_gc;         // zmiana źródła sygnału zegarowego na RC 2MHz<br /><br />    // wyłączenie PLL<br />    OSC.CTRL         &amp;=   ~OSC_PLLEN_bm;<br /><br />    // konfiguracja PLL<br />    OSC.PLLCTRL       =    OSC_PLLSRC_RC2M_gc |         // wybór RC 2MHz jako źródło sygnału dla PLL<br />                           pllfactor;                   // mnożnik częstotliwości (od 1 do 31)<br /><br />    // uruchomienie PLL<br />    OSC.CTRL          =    OSC_PLLEN_bm;                // włączenie układu PLL<br /><br />    // czekanie na ustabilizowanie się generatora<br />    while(!(OSC.STATUS &amp; OSC_PLLRDY_bm));<br /><br />    // przełączenie źródła sygnału zegarowego<br />    CPU_CCP           =    CCP_IOREG_gc;                // odblokowanie zmiany źródła sygnału<br />    CLK.CTRL          =    CLK_SCLKSEL_PLL_gc;          // wybór źródła sygnału zegarowego PLL<br /><br />    // układ nadzorujący PLL<br />    CPU_CCP           =    CCP_IOREG_gc;                // odblokowanie modyfikacji ważnych rejestrów<br />    OSC.XOSCFAIL      =    OSC_PLLFDEN_bm;              // włączenie układu detekcji błędu sygnału<br /><br />    // wyświetlenie komunikatu<br />    lcd_cls();<br />    lcd_str_P(PSTR(&quot;PLL &quot;));<br />    lcd_int(pllfactor*2);                                // *2 bo generator RC ma 2MHz<br />    lcd_str_P(PSTR(&quot;MHz&quot;));<br />}[/syntax]<br /><br /><br />jeszcze co do pętli to pod tym adresem <a href="ftp://ftp.helion.pl/przyklady/avrppr.zip"  class="postlink">ftp://ftp.helion.pl/przyklady/avrppr.zip</a> masz przykłady między innymi dla ustawiania osc (katalog OSC) przeglądnij to sobie może to Cię na coś naprowadzi <a href="https://books.google.pl/books?id=aUNjAgAAQBAJ&amp;pg=PA376&amp;lpg=PA376&amp;dq=CLK_PSCTRL+%3D+CLK_PSADIV_1_gc+%7C+CLK_PSBCDIV_2_2_gc;&amp;source=bl&amp;ots=J6ukreSYLZ&amp;sig=qPzJH0oAMmtFxuyzz1saeuafbkY&amp;hl=pl&amp;sa=X&amp;ei=qrrwVJKiEIWAU9i6guAF&amp;ved=0CCAQ6AEwAA#v=onepage&amp;q=CLK_PSCTRL%20%3D%20CLK_PSADIV_1_gc%20%7C%20CLK_PSBCDIV_2_2_gc%3B&amp;f=false"  class="postlink">kawałek książki</a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=776">lemurek</a> — 27 lut 2015, o 19:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[deerjelen]]></name></author>
<updated>2015-02-27T17:17:47+01:00</updated>
<published>2015-02-27T17:17:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10829&amp;p=121223#p121223</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10829&amp;p=121223#p121223"/>
<title type="html"><![CDATA[Re: Za szybkie taktowanie procesora.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10829&amp;p=121223#p121223"><![CDATA[
Dzięki za odpowiedź<br />1. Raczej tak, bo gdy ustawiam kwarc jako główny sygnał zegarowy mam ładne 16 MHz (sprawdzone trzema niżej opisanymi sposobami).<br />2. Na 3 sposoby: delay (#define F_CPU 40.000.000 i po 6 minutach dioda mrugająca co 1s nie wypada z rytmu), timer skonfigurowany tak, żeby migał co 1s, zakładając clk 40MHz i usart 19.2 baud też konfigurowany zakładając 40MHz działa prawidłowo. Gdy konfiguruję te peryferia dla 32MHz, usart krzaczy, a mrugająca dioda widocznie wypada z rytmu w 2s.<br /><br />Twój kod wpada w nieskończoną pętlę przy:<br />[syntax=c]// czekanie na ustabilizowanie się generatora<br />        while (!(OSC.STATUS &amp; OSC_PLLRDY_bm));[/syntax]<br /><br />~dziś koło 21 gdy wrócę, sprawdzę z oscylatorem, tak jak doradzałeś.<br /><br />&quot;na 32 MHz i mnożnikiem PLL na poziomie 16 co też da przed podziałem 128MHz&quot;<br />32 * 16 = 512.<br />Nie doczytałem noty?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1870">deerjelen</a> — 27 lut 2015, o 17:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lemurek]]></name></author>
<updated>2015-02-27T16:04:02+01:00</updated>
<published>2015-02-27T16:04:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10829&amp;p=121206#p121206</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10829&amp;p=121206#p121206"/>
<title type="html"><![CDATA[Re: Za szybkie taktowanie procesora.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10829&amp;p=121206#p121206"><![CDATA[
Witaj, <br /><br />pytania pomocnicze....<br /><br />1. Na pewno masz dobry kwarc...<br />2. W jaki sposób sprawdzasz że masz 40MHz<br /><br />Spróbuj takiego kodu...<br />[syntax=c]void clk_init(){<br /><br />    // konfiguracja generatora kwarcowego<br />OSC.XOSCCTRL = OSC_FRQRANGE_12TO16_gc |     // wybór kwarcu od 12 do 16 MHZ<br />OSC_XOSCSEL_XTAL_16KCLK_gc;  // czas na uruchomienie generatora<br />OSC.CTRL = OSC_XOSCEN_bm;// uruchomienie generatora kwarcowego<br /><br />while (!(OSC.STATUS &amp; OSC_RC2MRDY_bm));// czekanie na ustabilizowanie się generatora<br />CPU_CCP = CCP_IOREG_gc;          // odblokowanie zmiany źródła sygnału<br />CLK.CTRL = CLK_SCLKSEL_XOSC_gc;    // wybór źródła sygnału na XTAL 16MHz<br /><br />// wyłączenie PLL<br />OSC.CTRL &amp;= ~OSC_PLLEN_bm;<br /><br />// konfiguracja PLL<br />OSC.PLLCTRL = OSC_PLLSRC_XOSC_gc | // wybór XOSC jako źródło sygnału dla PLL<br />8;                   // mnożnik częstotliwości (od 1 do 31)<br /><br />//prescaler ratio<br />CPU_CCP = CCP_IOREG_gc;          // odblokowanie zmiany źródła sygnału<br />CLK.PSCTRL = CLK_PSADIV_1_gc | CLK_PSBCDIV_2_2_gc; //Prescaler A division ratio 1, B &amp; C division ratio 2<br /><br />// uruchomienie PLL<br />OSC.CTRL = OSC_PLLEN_bm;                // włączenie układu PLL<br /><br />// czekanie na ustabilizowanie się generatora<br />while (!(OSC.STATUS &amp; OSC_PLLRDY_bm));<br /><br />// przełączenie źródła sygnału zegarowego<br />CPU_CCP = CCP_IOREG_gc;                // odblokowanie zmiany źródła sygnału<br />CLK.CTRL = CLK_SCLKSEL_PLL_gc;        // wybór źródła sygnału zegarowego PLL<br /><br />}[/syntax]<br /><br />ewentualnie aby wykluczyć zewnętrzny kwarc spróbuj to samo zrobić z wewnętrznym kwarcem ustawionym na 32 MHz i mnożnikiem PLL na poziomie 16 co też da przed podziałem 128MHz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=776">lemurek</a> — 27 lut 2015, o 16:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[deerjelen]]></name></author>
<updated>2015-02-26T20:41:36+01:00</updated>
<published>2015-02-26T20:41:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10829&amp;p=121093#p121093</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10829&amp;p=121093#p121093"/>
<title type="html"><![CDATA[Za szybkie taktowanie procesora.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10829&amp;p=121093#p121093"><![CDATA[
Witam.<br />Próbuję ustawić taktowanie ATXMega16D4-AU na 32MHz, a jak na złość otrzymuję 40MHz.<br /><br />[syntax=c]void clk_init(){<br />OSC_XOSCCTRL = OSC_FRQRANGE_12TO16_gc//speed of XOSC between 12-16MHz<br />| OSC_XOSCSEL_XTAL_16KCLK_gc;// 1k CLK startup delay<br /><br />OSC_CTRL |= OSC_XOSCEN_bm;//XOSC enable<br /><br />OSC_PLLCTRL |= OSC_PLLSRC_XOSC_gc //PLL source XOSC<br />| 8 ;//PLL multiple XOSC by 8<br /><br />while(!(OSC_STATUS &amp; OSC_XOSCRDY_bm));//wait for XOSC <br /><br />OSC_CTRL |= OSC_PLLEN_bm;//PLL enable<br />while(!(OSC_STATUS &amp; OSC_PLLRDY_bm));//wait for PLL<br /><br />//prescaler ratio<br />CPU_CCP = 0xD8;<br />CLK_PSCTRL = CLK_PSBCDIV_2_2_gc;//Prescaler B &amp; C division ratio 2<br /><br />//main clock source<br />CPU_CCP = 0xD8;<br />CLK_CTRL = CLK_SCLKSEL_PLL_gc;//clock source to PLL<br /><br />OSC_CTRL = OSC_PLLEN_bm | OSC_XOSCEN_bm;<br />}[/syntax]<br /><br />Podłączony mam zewnętrzny rezonator kwarcowy 16MHz, który działa prawidłowo, bo jak ustawię go jako sygnał zegarowy otrzymuję 16MHz.<br />Wg. RM 16MHz * 8 / 2 / 2 = 32MHz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1870">deerjelen</a> — 26 lut 2015, o 20:41</p><hr />
]]></content>
</entry>
</feed>