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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2020-09-19T08:45:11+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=55&amp;t=15184&amp;mode</id>
<entry>
<author><name><![CDATA[GienekS]]></name></author>
<updated>2020-09-19T08:45:11+01:00</updated>
<published>2020-09-19T08:45:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15184&amp;p=229036#p229036</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15184&amp;p=229036#p229036"/>
<title type="html"><![CDATA[Re: ATXMega USB - ASF - STDIO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15184&amp;p=229036#p229036"><![CDATA[
Przepraszam że takie starocie odgrzewam ale mam pytanie w kwestii tego USB. Jedno co jest bardzo nie wygodne to to że po resecie ATX-a komunikacja z USB zanika. Jedyne co pomaga to wyjęcie wtyczki z PC-ta. Czy można tej niedogodności jakoś zapobiec ? Czy może to leży po stronie PC-ta ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8948">GienekS</a> — 19 wrz 2020, o 08:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[phill2k]]></name></author>
<updated>2016-04-22T21:55:44+01:00</updated>
<published>2016-04-22T21:55:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15184&amp;p=159029#p159029</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15184&amp;p=159029#p159029"/>
<title type="html"><![CDATA[Re: ATXMega USB - ASF - STDIO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15184&amp;p=159029#p159029"><![CDATA[
Super, prosimy o więcej, tylko popraw wklejenie kodu na SYNTAX C.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=75">phill2k</a> — 22 kwi 2016, o 21:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[radek_w]]></name></author>
<updated>2016-04-23T19:40:07+01:00</updated>
<published>2016-04-22T19:26:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15184&amp;p=159021#p159021</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15184&amp;p=159021#p159021"/>
<title type="html"><![CDATA[ATXMega USB - ASF - STDIO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15184&amp;p=159021#p159021"><![CDATA[
Napisałem ten krótki poradnik, ponieważ mam wrażenie że sprzętowa obsługa portu USB dla XMEGA jest w wielu publikacjach traktowana po macoszemu.<br /><br />Atmel udostępnia <strong>AtmelStudio w wersji 7</strong> oraz biblioteki <strong>Atmel Software Framework</strong>,<br />które umożliwiają w dość prosty sposób obsłużyć komponenty &quot;wokół&quot; procesora.<br /><br />ARDUINO ma &quot;wbudowaną&quot; obsługę portu szeregowego co znakomicie ułatwia debugowanie programów, a dlaczego tego nie zrobić dla procesorów XMEGA z ze sprzętową obsługą USB?!<br /><br />Dlatego spróbujmy zmusić naszą XMEGE by przekierować <strong>STDIN/STDOUT</strong> na emulowany port szeregowy poprzez wbudowany w procesor sprzętowy interfejs USB.<br /><br />W tym poradniku użyłem Atmel Studio 7.0.790 (biada mi, nie eclipse) z &quot;wbudowanym&quot; Atmel Software Framework w wersji 3.30.1.<br /><br />Zaczynamy od otwarcia nowego projektu &quot;GCC C ASF Board Project&quot;<br /><a href="https://obrazkiforum.atnel.pl/911/2c8b5db9a009cee4186b6a25a7f7156a.PNG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/911/2c8b5db9a009cee4186b6a25a7f7156a.PNG" alt="Obrazek" /></a><br /><br />Następnie wybieramy typ procesora (w moim wypadku ATxmega128A3U) i rodzaj płyty na której on jest.<br />Ponieważ nie używam żadnego z zestawów firmy Atmel, wybrałem &quot;User Board Template&quot; <br /><a href="https://obrazkiforum.atnel.pl/911/2085ffe1d23287184a28255cedbe9b6b.PNG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/911/2085ffe1d23287184a28255cedbe9b6b.PNG" alt="Obrazek" /></a><br /><br />Po utworzeniu pustego projektu czas na wybór komponentów z biblioteki Atmel Software Framework (ASF) z których będziemy korzystać.<br />By to zrobić z menu wybierzmy ASF -&gt; ASF Wizard lub wciśnijmy kombinację klawiszy ALT+W.<br />Powinno się pojawić okno jak poniżej...<br /><a href="https://obrazkiforum.atnel.pl/911/404ed057645a54c15caa0cad7a808d5b.PNG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/911/404ed057645a54c15caa0cad7a808d5b.PNG" alt="Obrazek" /></a><br />Tutaj bardzo ważne jest zaznaczenie komponentu USB Device Serwice i z listy rozwijanej wybranie cdc_stdio ( uwaga: jest również komponent &quot;cdc&quot; - to nie ten, musi być cdc_stdio)<br />Klikamy Add oraz Apply i otrzymujemy to co poniżej<br /><a href="https://obrazkiforum.atnel.pl/911/c67039b0ead8c28321f87a81d8426825.PNG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/911/c67039b0ead8c28321f87a81d8426825.PNG" alt="Obrazek" /></a><br /><br /><br />Teraz zamykamy okienko ASF i konfigurujemy nasz projekt.<br />W oknie Solution Explorer odnajdujemy w katalogu &quot;config&quot; pliki <strong>conf_clock.h, conf_usb.h</strong> i poprzez podwójne kliknięcie na nich otwieramy je do edycji.<br /><a href="https://obrazkiforum.atnel.pl/911/36d6e5f7641dc406764f171177b8db05.PNG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/911/36d6e5f7641dc406764f171177b8db05.PNG" alt="Obrazek" /></a><br /><br />Zauważcie, że u mnie przy nazwach plików jest czerwona kropka, świadczy to o tym, że plik został zmodyfikowany.<br /><br /><strong>Plik conf_clock.h definiuje parametry taktowania procesora.</strong><br />Modyfikujemy w nim trzy sekcjie:<br /><br />1. zmieniamy parametr CONFIG_SYSCLK_SOURCE  z domyślnego 2MHz na 32Mhz<br />[syntax=c]//#define CONFIG_SYSCLK_SOURCE          SYSCLK_SRC_RC2MHZ<br />#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_RC32MHZ[/syntax]<br />2. zmieniamy parametr CONFIG_SYSCLK_PSADIV z domyślnego SYSCLK_PSADIV_1 na SYSCLK_PSADIV_2<br />[syntax=c]/* Fbus = Fsys / (2 ^ BUS_div) */<br />#define CONFIG_SYSCLK_PSADIV          SYSCLK_PSADIV_2<br />#define CONFIG_SYSCLK_PSBCDIV         SYSCLK_PSBCDIV_1_1[/syntax]<br />3. usuwamy komentarz w liniach zawierających CONFIG_OSC_RC32_CAL i CONFIG_OSC_AUTOCAL_RC32MHZ_REF_OSC<br />[syntax=c]#define CONFIG_USBCLK_SOURCE                USBCLK_SRC_RCOSC<br />#define CONFIG_OSC_RC32_CAL                 48000000UL<br />#define CONFIG_OSC_AUTOCAL_RC32MHZ_REF_OSC  OSC_ID_USBSOF[/syntax]<br /><br /><br /><strong>Teraz zajmijmy się plikiem conf_usb.h</strong><br />W nim znajdzmy definicję funkcji wywoływanych po aktywacji portu usb<br />Musimy odnaleźć w nim definicje UDI_CDC_ENABLE_EXT, UDI_CDC_DISABLE_EXT<br />i zamienić na poniższe ...<br />[syntax=c]//! Interface callback definition<br />//#define  UDI_CDC_ENABLE_EXT(port)          true<br />//#define  UDI_CDC_DISABLE_EXT(port)<br />#define UDI_CDC_ENABLE_EXT(port) stdio_usb_enable()<br />extern bool stdio_usb_enable(void);<br />#define UDI_CDC_DISABLE_EXT(port) stdio_usb_disable()<br />extern void stdio_usb_disable(void);[/syntax]<br />Linie te są odpowiedzialne za podłączenie/odłączenie STDIO w momencie gdy jest aktywowany/deaktywowany port USB z obsługą urządzenia typu Communication Device Class.<br /><br /><br /><strong>Następnie dodajmy co nieco do plilku main.c</strong><br />zmieniając jego zawartość na poniższą ...<br />[syntax=c]#include &lt;asf.h&gt;<br /><br />int main (void)<br />{<br />sysclk_init();//konfiguracja zegara<br />irq_initialize_vectors();//inicjacja wektorów przerwań (jeśli używamy)<br />cpu_irq_enable();//włączenie przerwań<br />board_init();//inicjacja płytki - tu powinno się inicjować porty IO <br />sleepmgr_init();//optionalny moduł ospowiedzialny za oszczedzanie energii i uśpienie<br />stdio_usb_init();//inicjacja osługi portu USB<br /><br />while(1){<br />printf(&quot;Hello world\n\r&quot;);<br />}<br /><br />}[/syntax]<br /><br /><br /><strong>I to już właściwie wszystko .... </strong><br />Linie [syntax=c]sysclk_init();<br />irq_initialize_vectors();<br />cpu_irq_enable();<br />board_init();<br />sleepmgr_init(); // Optional[/syntax] powinny się znajdować na początku każdego projektu używającego ASF.<br />Linia <strong>stdio_usb_init();</strong> włącza obsługę STDIO dla USB.<br /><br /><strong>Po kompilacji i zrestartowaniu procesora mamy w systemie windows dodatkowy port szeregowy, który jest połączony z STDIN/STDOUT procesora i możemy go wykorzystać do dowolnych celów....<br /></strong><br /><br /><strong><span style="color: #FF0000">A <a href="http://forum.atnel.pl/topic15195.html"  class="postlink">TUTAJ</a> rozwinięcie tematu ... dokładamy kartę SD.</span></strong><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=911">radek_w</a> — 22 kwi 2016, o 19:26</p><hr />
]]></content>
</entry>
</feed>